aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/admin_audit/lib/Actions/Sharing.php25
-rw-r--r--apps/dav/lib/Connector/Sabre/SharesPlugin.php1
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php1
-rw-r--r--apps/files/l10n/da.js4
-rw-r--r--apps/files/l10n/da.json4
-rw-r--r--apps/files/l10n/es.js2
-rw-r--r--apps/files/l10n/es.json2
-rw-r--r--apps/files/l10n/ru.js10
-rw-r--r--apps/files/l10n/ru.json10
-rw-r--r--apps/files/lib/Controller/ApiController.php1
-rw-r--r--apps/files/lib/Service/OwnershipTransferService.php2
-rw-r--r--apps/files_sharing/lib/Controller/DeletedShareAPIController.php30
-rw-r--r--apps/files_sharing/lib/Controller/ShareAPIController.php71
-rw-r--r--apps/files_sharing/lib/Controller/ShareesAPIController.php8
-rw-r--r--apps/files_sharing/lib/MountProvider.php1
-rw-r--r--apps/files_sharing/src/components/SharingInput.vue6
-rw-r--r--apps/files_sharing/src/index.js1
-rw-r--r--apps/files_sharing/src/share.js2
-rw-r--r--apps/files_sharing/tests/Controller/ShareAPIControllerTest.php4
-rw-r--r--apps/files_sharing/tests/MountProviderTest.php12
-rw-r--r--apps/settings/l10n/af.js3
-rw-r--r--apps/settings/l10n/af.json3
-rw-r--r--apps/settings/l10n/ar.js3
-rw-r--r--apps/settings/l10n/ar.json3
-rw-r--r--apps/settings/l10n/ast.js3
-rw-r--r--apps/settings/l10n/ast.json3
-rw-r--r--apps/settings/l10n/bg.js3
-rw-r--r--apps/settings/l10n/bg.json3
-rw-r--r--apps/settings/l10n/br.js3
-rw-r--r--apps/settings/l10n/br.json3
-rw-r--r--apps/settings/l10n/ca.js3
-rw-r--r--apps/settings/l10n/ca.json3
-rw-r--r--apps/settings/l10n/cs.js3
-rw-r--r--apps/settings/l10n/cs.json3
-rw-r--r--apps/settings/l10n/da.js3
-rw-r--r--apps/settings/l10n/da.json3
-rw-r--r--apps/settings/l10n/de.js3
-rw-r--r--apps/settings/l10n/de.json3
-rw-r--r--apps/settings/l10n/de_DE.js3
-rw-r--r--apps/settings/l10n/de_DE.json3
-rw-r--r--apps/settings/l10n/el.js3
-rw-r--r--apps/settings/l10n/el.json3
-rw-r--r--apps/settings/l10n/en_GB.js3
-rw-r--r--apps/settings/l10n/en_GB.json3
-rw-r--r--apps/settings/l10n/eo.js3
-rw-r--r--apps/settings/l10n/eo.json3
-rw-r--r--apps/settings/l10n/es.js4
-rw-r--r--apps/settings/l10n/es.json4
-rw-r--r--apps/settings/l10n/es_419.js3
-rw-r--r--apps/settings/l10n/es_419.json3
-rw-r--r--apps/settings/l10n/es_AR.js3
-rw-r--r--apps/settings/l10n/es_AR.json3
-rw-r--r--apps/settings/l10n/es_CL.js3
-rw-r--r--apps/settings/l10n/es_CL.json3
-rw-r--r--apps/settings/l10n/es_CO.js3
-rw-r--r--apps/settings/l10n/es_CO.json3
-rw-r--r--apps/settings/l10n/es_CR.js3
-rw-r--r--apps/settings/l10n/es_CR.json3
-rw-r--r--apps/settings/l10n/es_DO.js3
-rw-r--r--apps/settings/l10n/es_DO.json3
-rw-r--r--apps/settings/l10n/es_EC.js3
-rw-r--r--apps/settings/l10n/es_EC.json3
-rw-r--r--apps/settings/l10n/es_GT.js3
-rw-r--r--apps/settings/l10n/es_GT.json3
-rw-r--r--apps/settings/l10n/es_HN.js3
-rw-r--r--apps/settings/l10n/es_HN.json3
-rw-r--r--apps/settings/l10n/es_MX.js3
-rw-r--r--apps/settings/l10n/es_MX.json3
-rw-r--r--apps/settings/l10n/es_NI.js3
-rw-r--r--apps/settings/l10n/es_NI.json3
-rw-r--r--apps/settings/l10n/es_PA.js3
-rw-r--r--apps/settings/l10n/es_PA.json3
-rw-r--r--apps/settings/l10n/es_PE.js3
-rw-r--r--apps/settings/l10n/es_PE.json3
-rw-r--r--apps/settings/l10n/es_PR.js3
-rw-r--r--apps/settings/l10n/es_PR.json3
-rw-r--r--apps/settings/l10n/es_PY.js3
-rw-r--r--apps/settings/l10n/es_PY.json3
-rw-r--r--apps/settings/l10n/es_SV.js3
-rw-r--r--apps/settings/l10n/es_SV.json3
-rw-r--r--apps/settings/l10n/es_UY.js3
-rw-r--r--apps/settings/l10n/es_UY.json3
-rw-r--r--apps/settings/l10n/et_EE.js3
-rw-r--r--apps/settings/l10n/et_EE.json3
-rw-r--r--apps/settings/l10n/eu.js3
-rw-r--r--apps/settings/l10n/eu.json3
-rw-r--r--apps/settings/l10n/fa.js3
-rw-r--r--apps/settings/l10n/fa.json3
-rw-r--r--apps/settings/l10n/fi.js3
-rw-r--r--apps/settings/l10n/fi.json3
-rw-r--r--apps/settings/l10n/fr.js3
-rw-r--r--apps/settings/l10n/fr.json3
-rw-r--r--apps/settings/l10n/gl.js3
-rw-r--r--apps/settings/l10n/gl.json3
-rw-r--r--apps/settings/l10n/he.js3
-rw-r--r--apps/settings/l10n/he.json3
-rw-r--r--apps/settings/l10n/hr.js3
-rw-r--r--apps/settings/l10n/hr.json3
-rw-r--r--apps/settings/l10n/hu.js3
-rw-r--r--apps/settings/l10n/hu.json3
-rw-r--r--apps/settings/l10n/ia.js1
-rw-r--r--apps/settings/l10n/ia.json1
-rw-r--r--apps/settings/l10n/id.js3
-rw-r--r--apps/settings/l10n/id.json3
-rw-r--r--apps/settings/l10n/is.js3
-rw-r--r--apps/settings/l10n/is.json3
-rw-r--r--apps/settings/l10n/it.js3
-rw-r--r--apps/settings/l10n/it.json3
-rw-r--r--apps/settings/l10n/ja.js3
-rw-r--r--apps/settings/l10n/ja.json3
-rw-r--r--apps/settings/l10n/ka_GE.js3
-rw-r--r--apps/settings/l10n/ka_GE.json3
-rw-r--r--apps/settings/l10n/ko.js3
-rw-r--r--apps/settings/l10n/ko.json3
-rw-r--r--apps/settings/l10n/lt_LT.js3
-rw-r--r--apps/settings/l10n/lt_LT.json3
-rw-r--r--apps/settings/l10n/lv.js3
-rw-r--r--apps/settings/l10n/lv.json3
-rw-r--r--apps/settings/l10n/mk.js3
-rw-r--r--apps/settings/l10n/mk.json3
-rw-r--r--apps/settings/l10n/nb.js3
-rw-r--r--apps/settings/l10n/nb.json3
-rw-r--r--apps/settings/l10n/nl.js3
-rw-r--r--apps/settings/l10n/nl.json3
-rw-r--r--apps/settings/l10n/nn_NO.js3
-rw-r--r--apps/settings/l10n/nn_NO.json3
-rw-r--r--apps/settings/l10n/oc.js3
-rw-r--r--apps/settings/l10n/oc.json3
-rw-r--r--apps/settings/l10n/pl.js3
-rw-r--r--apps/settings/l10n/pl.json3
-rw-r--r--apps/settings/l10n/pt_BR.js3
-rw-r--r--apps/settings/l10n/pt_BR.json3
-rw-r--r--apps/settings/l10n/pt_PT.js3
-rw-r--r--apps/settings/l10n/pt_PT.json3
-rw-r--r--apps/settings/l10n/ro.js3
-rw-r--r--apps/settings/l10n/ro.json3
-rw-r--r--apps/settings/l10n/ru.js3
-rw-r--r--apps/settings/l10n/ru.json3
-rw-r--r--apps/settings/l10n/sc.js3
-rw-r--r--apps/settings/l10n/sc.json3
-rw-r--r--apps/settings/l10n/sk.js3
-rw-r--r--apps/settings/l10n/sk.json3
-rw-r--r--apps/settings/l10n/sl.js3
-rw-r--r--apps/settings/l10n/sl.json3
-rw-r--r--apps/settings/l10n/sq.js3
-rw-r--r--apps/settings/l10n/sq.json3
-rw-r--r--apps/settings/l10n/sr.js3
-rw-r--r--apps/settings/l10n/sr.json3
-rw-r--r--apps/settings/l10n/sv.js3
-rw-r--r--apps/settings/l10n/sv.json3
-rw-r--r--apps/settings/l10n/th.js3
-rw-r--r--apps/settings/l10n/th.json3
-rw-r--r--apps/settings/l10n/tr.js3
-rw-r--r--apps/settings/l10n/tr.json3
-rw-r--r--apps/settings/l10n/uk.js3
-rw-r--r--apps/settings/l10n/uk.json3
-rw-r--r--apps/settings/l10n/vi.js3
-rw-r--r--apps/settings/l10n/vi.json3
-rw-r--r--apps/settings/l10n/zh_CN.js3
-rw-r--r--apps/settings/l10n/zh_CN.json3
-rw-r--r--apps/settings/l10n/zh_HK.js3
-rw-r--r--apps/settings/l10n/zh_HK.json3
-rw-r--r--apps/settings/l10n/zh_TW.js3
-rw-r--r--apps/settings/l10n/zh_TW.json3
-rw-r--r--apps/theming/l10n/es.js1
-rw-r--r--apps/theming/l10n/es.json1
-rw-r--r--apps/theming/l10n/uk.js2
-rw-r--r--apps/theming/l10n/uk.json2
-rw-r--r--apps/updatenotification/l10n/ru.js1
-rw-r--r--apps/updatenotification/l10n/ru.json1
-rw-r--r--apps/user_ldap/l10n/ru.js5
-rw-r--r--apps/user_ldap/l10n/ru.json5
-rw-r--r--build/psalm-baseline.xml5
-rw-r--r--core/l10n/bg.js4
-rw-r--r--core/l10n/bg.json4
-rw-r--r--core/l10n/ca.js4
-rw-r--r--core/l10n/ca.json4
-rw-r--r--core/l10n/cs.js4
-rw-r--r--core/l10n/cs.json4
-rw-r--r--core/l10n/da.js4
-rw-r--r--core/l10n/da.json4
-rw-r--r--core/l10n/de.js4
-rw-r--r--core/l10n/de.json4
-rw-r--r--core/l10n/de_DE.js4
-rw-r--r--core/l10n/de_DE.json4
-rw-r--r--core/l10n/en_GB.js4
-rw-r--r--core/l10n/en_GB.json4
-rw-r--r--core/l10n/eo.js4
-rw-r--r--core/l10n/eo.json4
-rw-r--r--core/l10n/es.js8
-rw-r--r--core/l10n/es.json8
-rw-r--r--core/l10n/eu.js4
-rw-r--r--core/l10n/eu.json4
-rw-r--r--core/l10n/fi.js4
-rw-r--r--core/l10n/fi.json4
-rw-r--r--core/l10n/fr.js4
-rw-r--r--core/l10n/fr.json4
-rw-r--r--core/l10n/gl.js4
-rw-r--r--core/l10n/gl.json4
-rw-r--r--core/l10n/hu.js4
-rw-r--r--core/l10n/hu.json4
-rw-r--r--core/l10n/is.js4
-rw-r--r--core/l10n/is.json4
-rw-r--r--core/l10n/it.js4
-rw-r--r--core/l10n/it.json4
-rw-r--r--core/l10n/ja.js4
-rw-r--r--core/l10n/ja.json4
-rw-r--r--core/l10n/ko.js4
-rw-r--r--core/l10n/ko.json4
-rw-r--r--core/l10n/mk.js4
-rw-r--r--core/l10n/mk.json4
-rw-r--r--core/l10n/nb.js4
-rw-r--r--core/l10n/nb.json4
-rw-r--r--core/l10n/nl.js4
-rw-r--r--core/l10n/nl.json4
-rw-r--r--core/l10n/pl.js4
-rw-r--r--core/l10n/pl.json4
-rw-r--r--core/l10n/pt_BR.js4
-rw-r--r--core/l10n/pt_BR.json4
-rw-r--r--core/l10n/ru.js4
-rw-r--r--core/l10n/ru.json4
-rw-r--r--core/l10n/sk.js4
-rw-r--r--core/l10n/sk.json4
-rw-r--r--core/l10n/sl.js4
-rw-r--r--core/l10n/sl.json4
-rw-r--r--core/l10n/sr.js8
-rw-r--r--core/l10n/sr.json8
-rw-r--r--core/l10n/sv.js4
-rw-r--r--core/l10n/sv.json4
-rw-r--r--core/l10n/th.js4
-rw-r--r--core/l10n/th.json4
-rw-r--r--core/l10n/tr.js4
-rw-r--r--core/l10n/tr.json4
-rw-r--r--core/l10n/uk.js4
-rw-r--r--core/l10n/uk.json4
-rw-r--r--core/l10n/zh_CN.js4
-rw-r--r--core/l10n/zh_CN.json4
-rw-r--r--core/l10n/zh_HK.js4
-rw-r--r--core/l10n/zh_HK.json4
-rw-r--r--core/l10n/zh_TW.js4
-rw-r--r--core/l10n/zh_TW.json4
-rw-r--r--dist/files_sharing-additionalScripts.js4
-rw-r--r--dist/files_sharing-additionalScripts.js.map2
-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/files_sharing-main.js4
-rw-r--r--dist/files_sharing-main.js.map2
-rw-r--r--lib/l10n/ru.js4
-rw-r--r--lib/l10n/ru.json4
-rw-r--r--lib/l10n/uk.js4
-rw-r--r--lib/l10n/uk.json4
-rw-r--r--lib/private/Config.php10
-rw-r--r--lib/private/Files/Node/LazyUserFolder.php18
-rw-r--r--lib/private/Files/Node/Root.php2
-rw-r--r--lib/private/Setup/PostgreSQL.php8
-rw-r--r--lib/private/Share/Constants.php2
-rw-r--r--lib/private/Share20/Manager.php1
-rw-r--r--lib/private/Share20/ProviderFactory.php2
-rw-r--r--lib/public/Share/IShare.php5
-rw-r--r--resources/config/mimetypemapping.dist.json1
260 files changed, 701 insertions, 320 deletions
diff --git a/apps/admin_audit/lib/Actions/Sharing.php b/apps/admin_audit/lib/Actions/Sharing.php
index 329ed740b53..fd61d862e91 100644
--- a/apps/admin_audit/lib/Actions/Sharing.php
+++ b/apps/admin_audit/lib/Actions/Sharing.php
@@ -160,6 +160,19 @@ class Sharing extends Action {
'id',
]
);
+ } elseif ($params['shareType'] === IShare::TYPE_SCIENCEMESH) {
+ $this->log(
+ 'The %s "%s" with ID "%s" has been shared to the sciencemesh user "%s" with permissions "%s" (Share ID: %s)',
+ $params,
+ [
+ 'itemType',
+ 'path',
+ 'itemSource',
+ 'shareWith',
+ 'permissions',
+ 'id',
+ ]
+ );
}
}
@@ -276,6 +289,18 @@ class Sharing extends Action {
'id',
]
);
+ } elseif ($params['shareType'] === IShare::TYPE_SCIENCEMESH) {
+ $this->log(
+ 'The %s "%s" with ID "%s" has been unshared from the sciencemesh user "%s" (Share ID: %s)',
+ $params,
+ [
+ 'itemType',
+ 'fileTarget',
+ 'itemSource',
+ 'shareWith',
+ 'id',
+ ]
+ );
}
}
diff --git a/apps/dav/lib/Connector/Sabre/SharesPlugin.php b/apps/dav/lib/Connector/Sabre/SharesPlugin.php
index 9fa6775c3b5..3d52a44b6a6 100644
--- a/apps/dav/lib/Connector/Sabre/SharesPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/SharesPlugin.php
@@ -110,6 +110,7 @@ class SharesPlugin extends \Sabre\DAV\ServerPlugin {
IShare::TYPE_ROOM,
IShare::TYPE_CIRCLE,
IShare::TYPE_DECK,
+ IShare::TYPE_SCIENCEMESH,
];
foreach ($requestedShareTypes as $requestedShareType) {
$shares = $this->shareManager->getSharesBy(
diff --git a/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php
index abbf13d5479..e6e90838966 100644
--- a/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php
@@ -278,6 +278,7 @@ class SharesPluginTest extends \Test\TestCase {
[[IShare::TYPE_REMOTE]],
[[IShare::TYPE_ROOM]],
[[IShare::TYPE_DECK]],
+ [[IShare::TYPE_SCIENCEMESH]],
[[IShare::TYPE_USER, IShare::TYPE_GROUP]],
[[IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK]],
[[IShare::TYPE_USER, IShare::TYPE_LINK]],
diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js
index 2bd2068d91b..c5e38d83a66 100644
--- a/apps/files/l10n/da.js
+++ b/apps/files/l10n/da.js
@@ -182,8 +182,11 @@ OC.L10N.register(
"Unknown error" : "Ukendt fejl",
"Ownership transfer request sent" : "Anmodning om ejerskabsoverdragelse sendt",
"Cannot transfer ownership of a file or folder you do not own" : "Kan ikke overføre ejerskab af en fil eller mappe, du ikke ejer",
+ "Select file or folder to link to" : "Vælg fil eller mappe at linke til",
"Open the files app settings" : "Åbn fil-app indstillinger",
"Files settings" : "indstillinger for filer",
+ "File cannot be accessed" : "Filen kan ikke tilgås",
+ "You might not have have permissions to view it, ask the sender to share it" : "Du har muligvis ikke tilladelser til at se.... Bed afsenderen om at dele...",
"Show hidden files" : "Vis skjulte filer",
"Crop image previews" : "Beskær forhåndsvisninger af billeder",
"Additional settings" : "Yderligere indstillinger",
@@ -191,6 +194,7 @@ OC.L10N.register(
"Copy to clipboard" : "Kopier til udklipsholder",
"Use this address to access your Files via WebDAV" : "Brug denne adresse til at få adgang til dine filer via WebDAV",
"Clipboard is not available" : "Udklipsholderen er ikke tilgængelig",
+ "WebDAV URL copied to clipboard" : "WebDAV URL kopieret til udklipsholder",
"Unable to change the favourite state of the file" : "Kan ikke ændre favorittilstanden for filen",
"Error while loading the file data" : "Fejl under indlæsning af fildata",
"Pick a template for {name}" : "Vælg en skabelon til {name}",
diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json
index 0e1a1b75999..e88e285d189 100644
--- a/apps/files/l10n/da.json
+++ b/apps/files/l10n/da.json
@@ -180,8 +180,11 @@
"Unknown error" : "Ukendt fejl",
"Ownership transfer request sent" : "Anmodning om ejerskabsoverdragelse sendt",
"Cannot transfer ownership of a file or folder you do not own" : "Kan ikke overføre ejerskab af en fil eller mappe, du ikke ejer",
+ "Select file or folder to link to" : "Vælg fil eller mappe at linke til",
"Open the files app settings" : "Åbn fil-app indstillinger",
"Files settings" : "indstillinger for filer",
+ "File cannot be accessed" : "Filen kan ikke tilgås",
+ "You might not have have permissions to view it, ask the sender to share it" : "Du har muligvis ikke tilladelser til at se.... Bed afsenderen om at dele...",
"Show hidden files" : "Vis skjulte filer",
"Crop image previews" : "Beskær forhåndsvisninger af billeder",
"Additional settings" : "Yderligere indstillinger",
@@ -189,6 +192,7 @@
"Copy to clipboard" : "Kopier til udklipsholder",
"Use this address to access your Files via WebDAV" : "Brug denne adresse til at få adgang til dine filer via WebDAV",
"Clipboard is not available" : "Udklipsholderen er ikke tilgængelig",
+ "WebDAV URL copied to clipboard" : "WebDAV URL kopieret til udklipsholder",
"Unable to change the favourite state of the file" : "Kan ikke ændre favorittilstanden for filen",
"Error while loading the file data" : "Fejl under indlæsning af fildata",
"Pick a template for {name}" : "Vælg en skabelon til {name}",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index 57d57288742..da731b36af2 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -185,6 +185,8 @@ OC.L10N.register(
"Select file or folder to link to" : "Selecciona archivo o carpeta a enlazar",
"Open the files app settings" : "Abrir la configuración de la app Archivos",
"Files settings" : "Configuración de archivos",
+ "File cannot be accessed" : "El archivo no puede ser accesado",
+ "You might not have have permissions to view it, ask the sender to share it" : "Puede que no tenga permisos para verlo, solicite al remitente que lo comparta",
"Show hidden files" : "Mostrar archivos ocultos",
"Crop image previews" : "Recortar la previsualización de las imágenes",
"Additional settings" : "Configuración adicional",
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index c68e4910972..cc4333b6bb2 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -183,6 +183,8 @@
"Select file or folder to link to" : "Selecciona archivo o carpeta a enlazar",
"Open the files app settings" : "Abrir la configuración de la app Archivos",
"Files settings" : "Configuración de archivos",
+ "File cannot be accessed" : "El archivo no puede ser accesado",
+ "You might not have have permissions to view it, ask the sender to share it" : "Puede que no tenga permisos para verlo, solicite al remitente que lo comparta",
"Show hidden files" : "Mostrar archivos ocultos",
"Crop image previews" : "Recortar la previsualización de las imágenes",
"Additional settings" : "Configuración adicional",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 5652f10d5fe..0165b7abe6c 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -98,6 +98,7 @@ OC.L10N.register(
"Your storage is almost full ({usedSpacePercent}%)." : "Ваше хранилище почти заполнено (использовано {usedSpacePercent} %).",
"_matches \"{filter}\"_::_match \"{filter}\"_" : ["соответствуют «{filter}»","соответствуют «{filter}»","соответствуют «{filter}»","соответствует «{filter}»"],
"View in folder" : "Посмотреть в каталоге",
+ "Direct link was copied (only works for users who have access to this file/folder)" : "Внутренняя ссылка скопирована. Она может быть использована только пользователями, у которых есть доступ к этому файлу или папке. ",
"Path" : "Путь",
"_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байт","%n байт"],
"Favorited" : "Избранное",
@@ -165,6 +166,10 @@ OC.L10N.register(
"The ownership transfer of {path} from {user} has completed." : "Завершена передача владения «{path}» от пользователя {user}.",
"in %s" : "в %s",
"File Management" : "Управление файлами",
+ "Storage informations" : "Сведения о хранилище",
+ "{usedQuotaByte} used" : "Использовано {usedQuotaByte}",
+ "{relative}% used" : "Использовано {relative}%",
+ "Could not refresh storage stats" : "Не удалось обновить данные об использовании хранилища",
"Transfer ownership of a file or folder" : "Изменение владельца файла или папки",
"Choose file or folder to transfer" : "Выберите файл или папку для передачи владения",
"Change" : "Изменить",
@@ -177,7 +182,11 @@ OC.L10N.register(
"Unknown error" : "Неизвестная ошибка",
"Ownership transfer request sent" : "Запрос на передачу прав владения отправлен",
"Cannot transfer ownership of a file or folder you do not own" : "Невозможно передать право владения на файл или каталог, которые вам не принадлежат",
+ "Select file or folder to link to" : "Выберите файл или папку для создания ссылки",
+ "Open the files app settings" : "Открыть параметры приложения «Файлы»",
"Files settings" : "Настройки файлов",
+ "File cannot be accessed" : "Не удалось получить доступ к файлу",
+ "You might not have have permissions to view it, ask the sender to share it" : "У вас отсутствуют права на просмотр файла, попросите предоставить их у владельца общего ресурса",
"Show hidden files" : "Показывать скрытые файлы",
"Crop image previews" : "Обрезать пред. просмотр",
"Additional settings" : "Дополнительные параметры",
@@ -185,6 +194,7 @@ OC.L10N.register(
"Copy to clipboard" : "Копировать в буфер",
"Use this address to access your Files via WebDAV" : "Используйте этот адрес для подключения WebDAV",
"Clipboard is not available" : "Буфер обмена недоступен",
+ "WebDAV URL copied to clipboard" : "Ссылка CalDAV скопирована в буфер обмена",
"Unable to change the favourite state of the file" : "Не удалось изменить состояние «избранный» этого файла.",
"Error while loading the file data" : "Не удалось загрузить данные файла",
"Pick a template for {name}" : "Выбрать шаблон для {name}",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 5ced37241de..008493d1c27 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -96,6 +96,7 @@
"Your storage is almost full ({usedSpacePercent}%)." : "Ваше хранилище почти заполнено (использовано {usedSpacePercent} %).",
"_matches \"{filter}\"_::_match \"{filter}\"_" : ["соответствуют «{filter}»","соответствуют «{filter}»","соответствуют «{filter}»","соответствует «{filter}»"],
"View in folder" : "Посмотреть в каталоге",
+ "Direct link was copied (only works for users who have access to this file/folder)" : "Внутренняя ссылка скопирована. Она может быть использована только пользователями, у которых есть доступ к этому файлу или папке. ",
"Path" : "Путь",
"_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байт","%n байт"],
"Favorited" : "Избранное",
@@ -163,6 +164,10 @@
"The ownership transfer of {path} from {user} has completed." : "Завершена передача владения «{path}» от пользователя {user}.",
"in %s" : "в %s",
"File Management" : "Управление файлами",
+ "Storage informations" : "Сведения о хранилище",
+ "{usedQuotaByte} used" : "Использовано {usedQuotaByte}",
+ "{relative}% used" : "Использовано {relative}%",
+ "Could not refresh storage stats" : "Не удалось обновить данные об использовании хранилища",
"Transfer ownership of a file or folder" : "Изменение владельца файла или папки",
"Choose file or folder to transfer" : "Выберите файл или папку для передачи владения",
"Change" : "Изменить",
@@ -175,7 +180,11 @@
"Unknown error" : "Неизвестная ошибка",
"Ownership transfer request sent" : "Запрос на передачу прав владения отправлен",
"Cannot transfer ownership of a file or folder you do not own" : "Невозможно передать право владения на файл или каталог, которые вам не принадлежат",
+ "Select file or folder to link to" : "Выберите файл или папку для создания ссылки",
+ "Open the files app settings" : "Открыть параметры приложения «Файлы»",
"Files settings" : "Настройки файлов",
+ "File cannot be accessed" : "Не удалось получить доступ к файлу",
+ "You might not have have permissions to view it, ask the sender to share it" : "У вас отсутствуют права на просмотр файла, попросите предоставить их у владельца общего ресурса",
"Show hidden files" : "Показывать скрытые файлы",
"Crop image previews" : "Обрезать пред. просмотр",
"Additional settings" : "Дополнительные параметры",
@@ -183,6 +192,7 @@
"Copy to clipboard" : "Копировать в буфер",
"Use this address to access your Files via WebDAV" : "Используйте этот адрес для подключения WebDAV",
"Clipboard is not available" : "Буфер обмена недоступен",
+ "WebDAV URL copied to clipboard" : "Ссылка CalDAV скопирована в буфер обмена",
"Unable to change the favourite state of the file" : "Не удалось изменить состояние «избранный» этого файла.",
"Error while loading the file data" : "Не удалось загрузить данные файла",
"Pick a template for {name}" : "Выбрать шаблон для {name}",
diff --git a/apps/files/lib/Controller/ApiController.php b/apps/files/lib/Controller/ApiController.php
index 604cf9a3c64..9baf5e97892 100644
--- a/apps/files/lib/Controller/ApiController.php
+++ b/apps/files/lib/Controller/ApiController.php
@@ -209,6 +209,7 @@ class ApiController extends Controller {
IShare::TYPE_EMAIL,
IShare::TYPE_ROOM,
IShare::TYPE_DECK,
+ IShare::TYPE_SCIENCEMESH,
];
$shareTypes = [];
diff --git a/apps/files/lib/Service/OwnershipTransferService.php b/apps/files/lib/Service/OwnershipTransferService.php
index 661a7e66e10..c744573ac99 100644
--- a/apps/files/lib/Service/OwnershipTransferService.php
+++ b/apps/files/lib/Service/OwnershipTransferService.php
@@ -286,7 +286,7 @@ class OwnershipTransferService {
$shares = [];
$progress = new ProgressBar($output);
- foreach ([IShare::TYPE_GROUP, IShare::TYPE_USER, IShare::TYPE_LINK, IShare::TYPE_REMOTE, IShare::TYPE_ROOM, IShare::TYPE_EMAIL, IShare::TYPE_CIRCLE, IShare::TYPE_DECK] as $shareType) {
+ foreach ([IShare::TYPE_GROUP, IShare::TYPE_USER, IShare::TYPE_LINK, IShare::TYPE_REMOTE, IShare::TYPE_ROOM, IShare::TYPE_EMAIL, IShare::TYPE_CIRCLE, IShare::TYPE_DECK, IShare::TYPE_SCIENCEMESH] as $shareType) {
$offset = 0;
while (true) {
$sharePage = $this->shareManager->getSharesBy($sourceUid, $shareType, null, true, 50, $offset);
diff --git a/apps/files_sharing/lib/Controller/DeletedShareAPIController.php b/apps/files_sharing/lib/Controller/DeletedShareAPIController.php
index 1d625b35322..19d1cbd0af6 100644
--- a/apps/files_sharing/lib/Controller/DeletedShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/DeletedShareAPIController.php
@@ -159,6 +159,14 @@ class DeletedShareAPIController extends OCSController {
$result = array_merge($result, $this->getDeckShareHelper()->formatShare($share));
} catch (QueryException $e) {
}
+ } elseif ($share->getShareType() === IShare::TYPE_SCIENCEMESH) {
+ $result['share_with'] = $share->getSharedWith();
+ $result['share_with_displayname'] = '';
+
+ try {
+ $result = array_merge($result, $this->getSciencemeshShareHelper()->formatShare($share));
+ } catch (QueryException $e) {
+ }
}
return $result;
@@ -171,8 +179,9 @@ class DeletedShareAPIController extends OCSController {
$groupShares = $this->shareManager->getDeletedSharedWith($this->userId, IShare::TYPE_GROUP, null, -1, 0);
$roomShares = $this->shareManager->getDeletedSharedWith($this->userId, IShare::TYPE_ROOM, null, -1, 0);
$deckShares = $this->shareManager->getDeletedSharedWith($this->userId, IShare::TYPE_DECK, null, -1, 0);
+ $sciencemeshShares = $this->shareManager->getDeletedSharedWith($this->userId, IShare::TYPE_SCIENCEMESH, null, -1, 0);
- $shares = array_merge($groupShares, $roomShares, $deckShares);
+ $shares = array_merge($groupShares, $roomShares, $deckShares, $sciencemeshShares);
$shares = array_map(function (IShare $share) {
return $this->formatShare($share);
@@ -224,7 +233,7 @@ class DeletedShareAPIController extends OCSController {
}
/**
- * Returns the helper of ShareAPIHelper for deck shares.
+ * Returns the helper of DeletedShareAPIHelper for deck shares.
*
* If the Deck application is not enabled or the helper is not available
* a QueryException is thrown instead.
@@ -239,4 +248,21 @@ class DeletedShareAPIController extends OCSController {
return $this->serverContainer->get('\OCA\Deck\Sharing\ShareAPIHelper');
}
+
+ /**
+ * Returns the helper of DeletedShareAPIHelper for sciencemesh shares.
+ *
+ * If the sciencemesh application is not enabled or the helper is not available
+ * a QueryException is thrown instead.
+ *
+ * @return \OCA\Deck\Sharing\ShareAPIHelper
+ * @throws QueryException
+ */
+ private function getSciencemeshShareHelper() {
+ if (!$this->appManager->isEnabledForUser('sciencemesh')) {
+ throw new QueryException();
+ }
+
+ return $this->serverContainer->get('\OCA\ScienceMesh\Sharing\ShareAPIHelper');
+ }
}
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index ab318a81fc2..48146bc6599 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -320,6 +320,14 @@ class ShareAPIController extends OCSController {
$result = array_merge($result, $this->getDeckShareHelper()->formatShare($share));
} catch (QueryException $e) {
}
+ } elseif ($share->getShareType() === IShare::TYPE_SCIENCEMESH) {
+ $result['share_with'] = $share->getSharedWith();
+ $result['share_with_displayname'] = '';
+
+ try {
+ $result = array_merge($result, $this->getSciencemeshShareHelper()->formatShare($share));
+ } catch (QueryException $e) {
+ }
}
@@ -692,6 +700,12 @@ class ShareAPIController extends OCSController {
} catch (QueryException $e) {
throw new OCSForbiddenException($this->l->t('Sharing %s failed because the back end does not support room shares', [$node->getPath()]));
}
+ } elseif ($shareType === IShare::TYPE_SCIENCEMESH) {
+ try {
+ $this->getSciencemeshShareHelper()->createShare($share, $shareWith, $permissions, $expireDate);
+ } catch (QueryException $e) {
+ throw new OCSForbiddenException($this->l->t('Sharing %s failed because the back end does not support sciencemesh shares', [$node->getPath()]));
+ }
} else {
throw new OCSBadRequestException($this->l->t('Unknown share type'));
}
@@ -730,8 +744,9 @@ class ShareAPIController extends OCSController {
$circleShares = $this->shareManager->getSharedWith($this->currentUser, IShare::TYPE_CIRCLE, $node, -1, 0);
$roomShares = $this->shareManager->getSharedWith($this->currentUser, IShare::TYPE_ROOM, $node, -1, 0);
$deckShares = $this->shareManager->getSharedWith($this->currentUser, IShare::TYPE_DECK, $node, -1, 0);
+ $sciencemeshShares = $this->shareManager->getSharedWith($this->currentUser, IShare::TYPE_SCIENCEMESH, $node, -1, 0);
- $shares = array_merge($userShares, $groupShares, $circleShares, $roomShares, $deckShares);
+ $shares = array_merge($userShares, $groupShares, $circleShares, $roomShares, $deckShares, $sciencemeshShares);
$filteredShares = array_filter($shares, function (IShare $share) {
return $share->getShareOwner() !== $this->currentUser;
@@ -1414,6 +1429,14 @@ class ShareAPIController extends OCSController {
}
}
+ if ($share->getShareType() === IShare::TYPE_SCIENCEMESH) {
+ try {
+ return $this->getSciencemeshShareHelper()->canAccessShare($share, $this->currentUser);
+ } catch (QueryException $e) {
+ return false;
+ }
+ }
+
return false;
}
@@ -1490,7 +1513,8 @@ class ShareAPIController extends OCSController {
protected function canDeleteShareFromSelf(\OCP\Share\IShare $share): bool {
if ($share->getShareType() !== IShare::TYPE_GROUP &&
$share->getShareType() !== IShare::TYPE_ROOM &&
- $share->getShareType() !== IShare::TYPE_DECK
+ $share->getShareType() !== IShare::TYPE_DECK &&
+ $share->getShareType() !== IShare::TYPE_SCIENCEMESH
) {
return false;
}
@@ -1527,6 +1551,14 @@ class ShareAPIController extends OCSController {
}
}
+ if ($share->getShareType() === IShare::TYPE_SCIENCEMESH) {
+ try {
+ return $this->getSciencemeshShareHelper()->canAccessShare($share, $this->currentUser);
+ } catch (QueryException $e) {
+ return false;
+ }
+ }
+
return false;
}
@@ -1606,6 +1638,15 @@ class ShareAPIController extends OCSController {
// Do nothing, just try the other share type
}
+ try {
+ if ($this->shareManager->shareProviderExists(IShare::TYPE_SCIENCEMESH)) {
+ $share = $this->shareManager->getShareById('sciencemesh:' . $id, $this->currentUser);
+ return $share;
+ }
+ } catch (ShareNotFound $e) {
+ // Do nothing, just try the other share type
+ }
+
if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) {
throw new ShareNotFound();
}
@@ -1670,6 +1711,23 @@ class ShareAPIController extends OCSController {
}
/**
+ * Returns the helper of ShareAPIHelper for sciencemesh shares.
+ *
+ * If the sciencemesh application is not enabled or the helper is not available
+ * a QueryException is thrown instead.
+ *
+ * @return \OCA\Deck\Sharing\ShareAPIHelper
+ * @throws QueryException
+ */
+ private function getSciencemeshShareHelper() {
+ if (!$this->appManager->isEnabledForUser('sciencemesh')) {
+ throw new QueryException();
+ }
+
+ return $this->serverContainer->get('\OCA\ScienceMesh\Sharing\ShareAPIHelper');
+ }
+
+ /**
* @param string $viewer
* @param Node $node
* @param bool $reShares
@@ -1684,7 +1742,8 @@ class ShareAPIController extends OCSController {
IShare::TYPE_EMAIL,
IShare::TYPE_CIRCLE,
IShare::TYPE_ROOM,
- IShare::TYPE_DECK
+ IShare::TYPE_DECK,
+ IShare::TYPE_SCIENCEMESH
];
// Should we assume that the (currentUser) viewer is the owner of the node !?
@@ -1837,8 +1896,12 @@ class ShareAPIController extends OCSController {
// TALK SHARES
$roomShares = $this->shareManager->getSharesBy($this->currentUser, IShare::TYPE_ROOM, $path, $reshares, -1, 0);
+ // DECK SHARES
$deckShares = $this->shareManager->getSharesBy($this->currentUser, IShare::TYPE_DECK, $path, $reshares, -1, 0);
+ // SCIENCEMESH SHARES
+ $sciencemeshShares = $this->shareManager->getSharesBy($this->currentUser, IShare::TYPE_SCIENCEMESH, $path, $reshares, -1, 0);
+
// FEDERATION
if ($this->shareManager->outgoingServer2ServerSharesAllowed()) {
$federatedShares = $this->shareManager->getSharesBy($this->currentUser, IShare::TYPE_REMOTE, $path, $reshares, -1, 0);
@@ -1851,7 +1914,7 @@ class ShareAPIController extends OCSController {
$federatedGroupShares = [];
}
- return array_merge($userShares, $groupShares, $linkShares, $mailShares, $circleShares, $roomShares, $deckShares, $federatedShares, $federatedGroupShares);
+ return array_merge($userShares, $groupShares, $linkShares, $mailShares, $circleShares, $roomShares, $deckShares, $sciencemeshShares, $federatedShares, $federatedGroupShares);
}
diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php
index 5a2e200c238..8daa7dc5ab9 100644
--- a/apps/files_sharing/lib/Controller/ShareesAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php
@@ -186,6 +186,10 @@ class ShareesAPIController extends OCSController {
if ($this->shareManager->shareProviderExists(IShare::TYPE_ROOM)) {
$shareTypes[] = IShare::TYPE_ROOM;
}
+
+ if ($this->shareManager->shareProviderExists(IShare::TYPE_SCIENCEMESH)) {
+ $shareTypes[] = IShare::TYPE_SCIENCEMESH;
+ }
} else {
if ($this->shareManager->allowGroupSharing()) {
$shareTypes[] = IShare::TYPE_GROUP;
@@ -198,6 +202,10 @@ class ShareesAPIController extends OCSController {
$shareTypes[] = IShare::TYPE_CIRCLE;
}
+ if ($this->shareManager->shareProviderExists(IShare::TYPE_SCIENCEMESH)) {
+ $shareTypes[] = IShare::TYPE_SCIENCEMESH;
+ }
+
if ($shareType !== null && is_array($shareType)) {
$shareTypes = array_intersect($shareTypes, $shareType);
} elseif (is_numeric($shareType)) {
diff --git a/apps/files_sharing/lib/MountProvider.php b/apps/files_sharing/lib/MountProvider.php
index a9705e94906..2ad7ede8e40 100644
--- a/apps/files_sharing/lib/MountProvider.php
+++ b/apps/files_sharing/lib/MountProvider.php
@@ -97,6 +97,7 @@ class MountProvider implements IMountProvider {
$shares = array_merge($shares, $this->shareManager->getSharedWith($user->getUID(), IShare::TYPE_CIRCLE, null, -1));
$shares = array_merge($shares, $this->shareManager->getSharedWith($user->getUID(), IShare::TYPE_ROOM, null, -1));
$shares = array_merge($shares, $this->shareManager->getSharedWith($user->getUID(), IShare::TYPE_DECK, null, -1));
+ $shares = array_merge($shares, $this->shareManager->getSharedWith($user->getUID(), IShare::TYPE_SCIENCEMESH, null, -1));
// filter out excluded shares and group shares that includes self
diff --git a/apps/files_sharing/src/components/SharingInput.vue b/apps/files_sharing/src/components/SharingInput.vue
index 8dadb4689ff..de6812c9569 100644
--- a/apps/files_sharing/src/components/SharingInput.vue
+++ b/apps/files_sharing/src/components/SharingInput.vue
@@ -194,6 +194,7 @@ export default {
this.SHARE_TYPES.SHARE_TYPE_ROOM,
this.SHARE_TYPES.SHARE_TYPE_GUEST,
this.SHARE_TYPES.SHARE_TYPE_DECK,
+ this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH,
]
if (OC.getCapabilities().files_sharing.public.enabled === true) {
@@ -420,6 +421,11 @@ export default {
icon: 'icon-deck',
iconTitle: t('files_sharing', 'Deck board'),
}
+ case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:
+ return {
+ icon: 'icon-sciencemesh',
+ iconTitle: t('files_sharing', 'Science Mesh'),
+ }
default:
return {}
}
diff --git a/apps/files_sharing/src/index.js b/apps/files_sharing/src/index.js
index 9f80c79270e..95ed017bbf9 100644
--- a/apps/files_sharing/src/index.js
+++ b/apps/files_sharing/src/index.js
@@ -34,5 +34,6 @@ Object.assign(OC, {
SHARE_TYPE_REMOTE_GROUP: 9,
SHARE_TYPE_ROOM: 10,
SHARE_TYPE_DECK: 12,
+ SHARE_TYPE_SCIENCEMESH: 15,
},
})
diff --git a/apps/files_sharing/src/share.js b/apps/files_sharing/src/share.js
index ca4dba7c888..06eea5807a1 100644
--- a/apps/files_sharing/src/share.js
+++ b/apps/files_sharing/src/share.js
@@ -201,6 +201,8 @@ import { getCapabilities } from '@nextcloud/capabilities'
hasShares = true
} else if (shareType === ShareTypes.SHARE_TYPE_DECK) {
hasShares = true
+ } else if (shareType === ShareTypes.SHARE_TYPE_SCIENCEMESH) {
+ hasShares = true
}
})
OCA.Sharing.Util._updateFileActionIcon($tr, hasShares, hasLink)
diff --git a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
index 6405181d0dc..2a2a7d940be 100644
--- a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
+++ b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
@@ -218,10 +218,10 @@ class ShareAPIControllerTest extends TestCase {
$this->expectExceptionMessage('Wrong share ID, share does not exist');
$this->shareManager
- ->expects($this->exactly(6))
+ ->expects($this->exactly(7))
->method('getShareById')
->willReturnCallback(function ($id) {
- if ($id === 'ocinternal:42' || $id === 'ocRoomShare:42' || $id === 'ocFederatedSharing:42' || $id === 'ocCircleShare:42' || $id === 'ocMailShare:42' || $id === 'deck:42') {
+ if ($id === 'ocinternal:42' || $id === 'ocRoomShare:42' || $id === 'ocFederatedSharing:42' || $id === 'ocCircleShare:42' || $id === 'ocMailShare:42' || $id === 'deck:42' || $id === 'sciencemesh:42') {
throw new \OCP\Share\Exceptions\ShareNotFound();
} else {
throw new \Exception();
diff --git a/apps/files_sharing/tests/MountProviderTest.php b/apps/files_sharing/tests/MountProviderTest.php
index 37e7e3d9d03..f7cf5156ec5 100644
--- a/apps/files_sharing/tests/MountProviderTest.php
+++ b/apps/files_sharing/tests/MountProviderTest.php
@@ -163,12 +163,13 @@ class MountProviderTest extends \Test\TestCase {
$this->makeMockShare(12, 103, 'user2', '/share7', 31),
$this->makeMockShare(13, 103, 'user2', '/share7', 31),
];
- // tests regarding circles are made in the app itself.
+ // tests regarding circles and sciencemesh are made in the apps themselves.
$circleShares = [];
+ $sciencemeshShares = [];
$this->user->expects($this->any())
->method('getUID')
->willReturn('user1');
- $this->shareManager->expects($this->exactly(5))
+ $this->shareManager->expects($this->exactly(6))
->method('getSharedWith')
->withConsecutive(
['user1', IShare::TYPE_USER],
@@ -176,12 +177,14 @@ class MountProviderTest extends \Test\TestCase {
['user1', IShare::TYPE_CIRCLE, null, -1],
['user1', IShare::TYPE_ROOM, null, -1],
['user1', IShare::TYPE_DECK, null, -1],
+ ['user1', IShare::TYPE_SCIENCEMESH, null, -1],
)->willReturnOnConsecutiveCalls(
$userShares,
$groupShares,
$circleShares,
$roomShares,
$deckShares,
+ $sciencemeshShares
);
$this->shareManager->expects($this->any())
->method('newShare')
@@ -386,7 +389,8 @@ class MountProviderTest extends \Test\TestCase {
$circleShares = [];
$roomShares = [];
$deckShares = [];
- $this->shareManager->expects($this->exactly(5))
+ $sciencemeshShares = [];
+ $this->shareManager->expects($this->exactly(6))
->method('getSharedWith')
->withConsecutive(
['user1', IShare::TYPE_USER],
@@ -394,12 +398,14 @@ class MountProviderTest extends \Test\TestCase {
['user1', IShare::TYPE_CIRCLE, null, -1],
['user1', IShare::TYPE_ROOM, null, -1],
['user1', IShare::TYPE_DECK, null, -1],
+ ['user1', IShare::TYPE_SCIENCEMESH, null, -1],
)->willReturnOnConsecutiveCalls(
$userShares,
$groupShares,
$circleShares,
$roomShares,
$deckShares,
+ $sciencemeshShares
);
$this->shareManager->expects($this->any())
->method('newShare')
diff --git a/apps/settings/l10n/af.js b/apps/settings/l10n/af.js
index 27c6bb7ef6c..f381d7fc727 100644
--- a/apps/settings/l10n/af.js
+++ b/apps/settings/l10n/af.js
@@ -19,17 +19,18 @@ OC.L10N.register(
"Your email address was changed by an administrator" : "U e-posadres is deur ’n administrateur verander",
"Security" : "Sekuriteit",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "U <strong>wagwoord</strong> of <strong>e-pos</strong> is gewysig",
+ "Apps" : "Toeps",
"Wrong password" : "Verkeerde wagwoord",
"Saved" : "Bewaar",
"No user supplied" : "Geen gebruiker verskaf nie",
"Administrator documentation" : "Administrateurdokumentasie",
"User documentation" : "Gebruikerdokumentasie",
"Well done, %s!" : "Welgedaan %s!",
+ "Users" : "Gebruikers",
"Invalid user" : "Ongeldige gebruiker",
"Invalid mail address" : "Ongeldige posadres",
"Settings saved" : "Instellings gestoor",
"Go to %s" : "Gaan na %s",
- "Apps" : "Toeps",
"Settings" : "Instellings",
"Personal" : "Persoonlik",
"Calendar" : "Kalender",
diff --git a/apps/settings/l10n/af.json b/apps/settings/l10n/af.json
index b13ec99b2c4..60fd9374992 100644
--- a/apps/settings/l10n/af.json
+++ b/apps/settings/l10n/af.json
@@ -17,17 +17,18 @@
"Your email address was changed by an administrator" : "U e-posadres is deur ’n administrateur verander",
"Security" : "Sekuriteit",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "U <strong>wagwoord</strong> of <strong>e-pos</strong> is gewysig",
+ "Apps" : "Toeps",
"Wrong password" : "Verkeerde wagwoord",
"Saved" : "Bewaar",
"No user supplied" : "Geen gebruiker verskaf nie",
"Administrator documentation" : "Administrateurdokumentasie",
"User documentation" : "Gebruikerdokumentasie",
"Well done, %s!" : "Welgedaan %s!",
+ "Users" : "Gebruikers",
"Invalid user" : "Ongeldige gebruiker",
"Invalid mail address" : "Ongeldige posadres",
"Settings saved" : "Instellings gestoor",
"Go to %s" : "Gaan na %s",
- "Apps" : "Toeps",
"Settings" : "Instellings",
"Personal" : "Persoonlik",
"Calendar" : "Kalender",
diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js
index 9a3d2205fea..e4694b8097b 100644
--- a/apps/settings/l10n/ar.js
+++ b/apps/settings/l10n/ar.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"You changed your email address" : "لقد قمت بتعديل عنوان بريدك الإلكتروني",
"Your email address was changed by an administrator" : "قام أحد المدراء بتغيير عنوان بريدك الإلكتروني",
"Security" : "الأمان",
+ "Apps" : "التطبيقات",
"Wrong password" : "كلمة مرور خاطئة",
"Saved" : "حفظ",
"No user supplied" : "لم يتم توفير مستخدم ",
@@ -37,6 +38,7 @@ OC.L10N.register(
"Email setting test" : "تجريب إعدادات البريد الإلكتروني",
"Well done, %s!" : "حسنًا فعلت، %s !",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "حدث خطأ أثناء إرسال البريد الإلكتروني. برجى مراجعة الاعدادات. (خطأ: %s)",
+ "Users" : "المستخدمين:",
"Invalid user" : "مستخدم غير صالح",
"Invalid mail address" : "عنوان البريد الإلكتروني خاطئ",
"Settings saved" : "تم حفظ الإعدادات",
@@ -49,7 +51,6 @@ OC.L10N.register(
"Set your password" : "قم بإدخال كلمتك السرية",
"Go to %s" : "الإنتقال إلى %s",
"Install Client" : "تنصيب العميل",
- "Apps" : "التطبيقات",
"Settings" : "الإعدادات",
"Personal" : "شخصي",
"Administration" : "الإدارة",
diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json
index b1e514566f8..b8b0592f814 100644
--- a/apps/settings/l10n/ar.json
+++ b/apps/settings/l10n/ar.json
@@ -23,6 +23,7 @@
"You changed your email address" : "لقد قمت بتعديل عنوان بريدك الإلكتروني",
"Your email address was changed by an administrator" : "قام أحد المدراء بتغيير عنوان بريدك الإلكتروني",
"Security" : "الأمان",
+ "Apps" : "التطبيقات",
"Wrong password" : "كلمة مرور خاطئة",
"Saved" : "حفظ",
"No user supplied" : "لم يتم توفير مستخدم ",
@@ -35,6 +36,7 @@
"Email setting test" : "تجريب إعدادات البريد الإلكتروني",
"Well done, %s!" : "حسنًا فعلت، %s !",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "حدث خطأ أثناء إرسال البريد الإلكتروني. برجى مراجعة الاعدادات. (خطأ: %s)",
+ "Users" : "المستخدمين:",
"Invalid user" : "مستخدم غير صالح",
"Invalid mail address" : "عنوان البريد الإلكتروني خاطئ",
"Settings saved" : "تم حفظ الإعدادات",
@@ -47,7 +49,6 @@
"Set your password" : "قم بإدخال كلمتك السرية",
"Go to %s" : "الإنتقال إلى %s",
"Install Client" : "تنصيب العميل",
- "Apps" : "التطبيقات",
"Settings" : "الإعدادات",
"Personal" : "شخصي",
"Administration" : "الإدارة",
diff --git a/apps/settings/l10n/ast.js b/apps/settings/l10n/ast.js
index 38c8b411d33..78a5d2d5566 100644
--- a/apps/settings/l10n/ast.js
+++ b/apps/settings/l10n/ast.js
@@ -22,6 +22,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Aniciesti sesión con ésitu usando l'autenticación en dos pasos (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Falló un intentu d'aniciu de sesión usando l'autenticación en dos pasos (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Modificóse la to <strong>contraseña</strong> o <strong>corréu</strong>",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorreuta",
"Saved" : "Guardóse",
"No user supplied" : "Nun s'apurrieron usuarios",
@@ -36,6 +37,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si recibes esti corréu, entós la configuración de corréu paez tar bien.",
"Email could not be sent. Check your mail server log" : "Nun pudo unviase'l corréu. Comprueba'l rexistru del to sirvidor de corréu",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Asocedió un problema entrín s'unviaba'l corréu. Revisa los tos axustes por favor. (Fallu: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuariu non válidu",
"Invalid mail address" : "Direición non válida de corréu",
"Settings saved" : "Axustes guardaos",
@@ -59,7 +61,6 @@ OC.L10N.register(
"Set your password" : "Afita la to contraseña",
"Go to %s" : "Dir a %s",
"Install Client" : "Instalar veceru",
- "Apps" : "Aplicaciones",
"Settings" : "Settings",
"Personal" : "Personal",
"Additional settings" : "Axustes adicionales",
diff --git a/apps/settings/l10n/ast.json b/apps/settings/l10n/ast.json
index 80a58a769cd..385e8f59222 100644
--- a/apps/settings/l10n/ast.json
+++ b/apps/settings/l10n/ast.json
@@ -20,6 +20,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Aniciesti sesión con ésitu usando l'autenticación en dos pasos (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Falló un intentu d'aniciu de sesión usando l'autenticación en dos pasos (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Modificóse la to <strong>contraseña</strong> o <strong>corréu</strong>",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorreuta",
"Saved" : "Guardóse",
"No user supplied" : "Nun s'apurrieron usuarios",
@@ -34,6 +35,7 @@
"If you received this email, the email configuration seems to be correct." : "Si recibes esti corréu, entós la configuración de corréu paez tar bien.",
"Email could not be sent. Check your mail server log" : "Nun pudo unviase'l corréu. Comprueba'l rexistru del to sirvidor de corréu",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Asocedió un problema entrín s'unviaba'l corréu. Revisa los tos axustes por favor. (Fallu: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuariu non válidu",
"Invalid mail address" : "Direición non válida de corréu",
"Settings saved" : "Axustes guardaos",
@@ -57,7 +59,6 @@
"Set your password" : "Afita la to contraseña",
"Go to %s" : "Dir a %s",
"Install Client" : "Instalar veceru",
- "Apps" : "Aplicaciones",
"Settings" : "Settings",
"Personal" : "Personal",
"Additional settings" : "Axustes adicionales",
diff --git a/apps/settings/l10n/bg.js b/apps/settings/l10n/bg.js
index 4bc4f711acc..838ede4a48a 100644
--- a/apps/settings/l10n/bg.js
+++ b/apps/settings/l10n/bg.js
@@ -50,6 +50,7 @@ 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> е променен",
+ "Apps" : "Приложения",
"Could not remove app." : "Приложението не можа да се премахне.",
"Could not update app." : "Приложението не можа да се актуализира.",
"Wrong password" : "Грешна парола",
@@ -83,6 +84,7 @@ OC.L10N.register(
"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.",
+ "Users" : "Потребители",
"Invalid user" : "Невалиден потребител",
"Invalid mail address" : "невалиден адрес на електронна поща",
"Settings saved" : "Настройките са запазени",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "Отидете на %s",
"Install Client" : "Инсталиране на клиента",
"Logged in user must be a subadmin" : "Влезлият потребител трябва да е подадминистратор",
- "Apps" : "Приложения",
"Settings" : "Настройки",
"Personal" : "Лични",
"Administration" : "Административни",
diff --git a/apps/settings/l10n/bg.json b/apps/settings/l10n/bg.json
index e88867a7784..0afc06864cd 100644
--- a/apps/settings/l10n/bg.json
+++ b/apps/settings/l10n/bg.json
@@ -48,6 +48,7 @@
"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> е променен",
+ "Apps" : "Приложения",
"Could not remove app." : "Приложението не можа да се премахне.",
"Could not update app." : "Приложението не можа да се актуализира.",
"Wrong password" : "Грешна парола",
@@ -81,6 +82,7 @@
"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.",
+ "Users" : "Потребители",
"Invalid user" : "Невалиден потребител",
"Invalid mail address" : "невалиден адрес на електронна поща",
"Settings saved" : "Настройките са запазени",
@@ -112,7 +114,6 @@
"Go to %s" : "Отидете на %s",
"Install Client" : "Инсталиране на клиента",
"Logged in user must be a subadmin" : "Влезлият потребител трябва да е подадминистратор",
- "Apps" : "Приложения",
"Settings" : "Настройки",
"Personal" : "Лични",
"Administration" : "Административни",
diff --git a/apps/settings/l10n/br.js b/apps/settings/l10n/br.js
index 7934e8c046a..b9ed3564331 100644
--- a/apps/settings/l10n/br.js
+++ b/apps/settings/l10n/br.js
@@ -45,6 +45,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Groget eo al lemel pall da %1$s",
"Remote wipe has finished on %1$s" : "Echuet eo bet al lemel pell da %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ho <strong>ger-tremen</strong> pe <strong>postel</strong> a zo bet cheñchet",
+ "Apps" : "Meziant",
"Wrong password" : "Ger-tremen fall",
"Saved" : "Enrollet",
"No user supplied" : "Implijour roet ebet",
@@ -61,6 +62,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Ma eo bet resevet ar postel ganeoc'h, stummadur ar bostel a seblant bezañ bet graet mat.",
"Email could not be sent. Check your mail server log" : "N'eo ket posupl kas ar postel. Gwiriit kazetenn servijour evit ar bostel.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ur gudenn a zo bet en ur kas ar bostel. Adstummit o stumm (Fazi : %s)",
+ "Users" : "Implijer",
"Invalid mail address" : "Chom-lec'h postel fall",
"Settings saved" : "Stummoù enrollet",
"Unable to change full name" : "Dibosupl cheñch tout an anv",
@@ -88,7 +90,6 @@ OC.L10N.register(
"Go to %s" : "Mont da %s",
"Install Client" : "Stalia ar c'hliant",
"Logged in user must be a subadmin" : "An trement e implijer a zo ret bezañ un iz-merour",
- "Apps" : "Meziant",
"Settings" : "Arventennoù",
"Personal" : "Personel",
"Administration" : "Merouriez",
diff --git a/apps/settings/l10n/br.json b/apps/settings/l10n/br.json
index 464dab34349..8e972303f67 100644
--- a/apps/settings/l10n/br.json
+++ b/apps/settings/l10n/br.json
@@ -43,6 +43,7 @@
"Remote wipe was started on %1$s" : "Groget eo al lemel pall da %1$s",
"Remote wipe has finished on %1$s" : "Echuet eo bet al lemel pell da %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ho <strong>ger-tremen</strong> pe <strong>postel</strong> a zo bet cheñchet",
+ "Apps" : "Meziant",
"Wrong password" : "Ger-tremen fall",
"Saved" : "Enrollet",
"No user supplied" : "Implijour roet ebet",
@@ -59,6 +60,7 @@
"If you received this email, the email configuration seems to be correct." : "Ma eo bet resevet ar postel ganeoc'h, stummadur ar bostel a seblant bezañ bet graet mat.",
"Email could not be sent. Check your mail server log" : "N'eo ket posupl kas ar postel. Gwiriit kazetenn servijour evit ar bostel.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ur gudenn a zo bet en ur kas ar bostel. Adstummit o stumm (Fazi : %s)",
+ "Users" : "Implijer",
"Invalid mail address" : "Chom-lec'h postel fall",
"Settings saved" : "Stummoù enrollet",
"Unable to change full name" : "Dibosupl cheñch tout an anv",
@@ -86,7 +88,6 @@
"Go to %s" : "Mont da %s",
"Install Client" : "Stalia ar c'hliant",
"Logged in user must be a subadmin" : "An trement e implijer a zo ret bezañ un iz-merour",
- "Apps" : "Meziant",
"Settings" : "Arventennoù",
"Personal" : "Personel",
"Administration" : "Merouriez",
diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js
index 0eb565db243..00b843d7c99 100644
--- a/apps/settings/l10n/ca.js
+++ b/apps/settings/l10n/ca.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "S'ha engegat la neteja remota a %1$s",
"Remote wipe has finished on %1$s" : "Ha finalitzat la neteja remota a %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "S'ha modificat la vostra <strong>contrasenya</strong> o <strong>correu electrònic</strong>",
+ "Apps" : "Aplicacions",
"Could not remove app." : "No s'ha pogut suprimir l'aplicació.",
"Could not update app." : "No s'ha pogut actualitzar l'aplicació.",
"Wrong password" : "Contrasenya incorrecta",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "No s'ha pogut enviar el correu electrònic. Comproveu el registre del servidor de correu",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hi ha hagut un problema mentre s'enviava el correu electrònic. Reviseu els paràmetres. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Heu d'establir el correu electrònic d'usuari abans de poder enviar correus de prova. Aneu a %s per fer-ho.",
+ "Users" : "Usuaris",
"Invalid user" : "Usuari no vàlid",
"Invalid mail address" : "Adreça de correu electrònic no vàlida",
"Settings saved" : "S'han desat els paràmetres",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "Ves a %s",
"Install Client" : "Instal·la el Client",
"Logged in user must be a subadmin" : "L’usuari que ha iniciat la sessió ha de ser un subadministrador",
- "Apps" : "Aplicacions",
"Settings" : "Paràmetres",
"Personal" : "Personal",
"Administration" : "Administració",
diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json
index 8496fc31ab6..2126fb968ed 100644
--- a/apps/settings/l10n/ca.json
+++ b/apps/settings/l10n/ca.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "S'ha engegat la neteja remota a %1$s",
"Remote wipe has finished on %1$s" : "Ha finalitzat la neteja remota a %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "S'ha modificat la vostra <strong>contrasenya</strong> o <strong>correu electrònic</strong>",
+ "Apps" : "Aplicacions",
"Could not remove app." : "No s'ha pogut suprimir l'aplicació.",
"Could not update app." : "No s'ha pogut actualitzar l'aplicació.",
"Wrong password" : "Contrasenya incorrecta",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "No s'ha pogut enviar el correu electrònic. Comproveu el registre del servidor de correu",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hi ha hagut un problema mentre s'enviava el correu electrònic. Reviseu els paràmetres. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Heu d'establir el correu electrònic d'usuari abans de poder enviar correus de prova. Aneu a %s per fer-ho.",
+ "Users" : "Usuaris",
"Invalid user" : "Usuari no vàlid",
"Invalid mail address" : "Adreça de correu electrònic no vàlida",
"Settings saved" : "S'han desat els paràmetres",
@@ -112,7 +114,6 @@
"Go to %s" : "Ves a %s",
"Install Client" : "Instal·la el Client",
"Logged in user must be a subadmin" : "L’usuari que ha iniciat la sessió ha de ser un subadministrador",
- "Apps" : "Aplicacions",
"Settings" : "Paràmetres",
"Personal" : "Personal",
"Administration" : "Administració",
diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js
index b8d2430adec..14d1e11cf4a 100644
--- a/apps/settings/l10n/cs.js
+++ b/apps/settings/l10n/cs.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Vymazání na dálku spuštěno na %1$s",
"Remote wipe has finished on %1$s" : "Vymazání na dálku bylo na %1$s dokončeno",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Vaše <strong>heslo</strong> nebo <strong>e-mail</strong> bylo změněno",
+ "Apps" : "Aplikace",
"Could not remove app." : "Aplikaci se nedaří odebrat.",
"Could not update app." : "Aplikaci se nedaří aktualizovat.",
"Wrong password" : "Nesprávné heslo",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "E-mail se nepodařilo odeslat. Podívejte se do záznamu událostí (log) svého e-mailového serveru.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Při odesílání e-mailu nastala chyba – překontrolujte nastavení. (Chyba: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Aby bylo možné odesílat zkušební e-maily je třeba, abyste si nejprve nastavili svou e-mailovou adresu. To učiníte v %s.",
+ "Users" : "Uživatelé",
"Invalid user" : "Neplatný uživatel",
"Invalid mail address" : "Neplatná e-mailová adresa",
"Settings saved" : "Nastavení uložena",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "Jít na %s",
"Install Client" : "Nainstalovat klienta",
"Logged in user must be a subadmin" : "Je třeba, aby přihlášený uživatel byl dílčím správcem",
- "Apps" : "Aplikace",
"Settings" : "Nastavení",
"Personal" : "Osobní",
"Administration" : "Správa",
diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json
index 54e339f02ad..d37a9547cb5 100644
--- a/apps/settings/l10n/cs.json
+++ b/apps/settings/l10n/cs.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Vymazání na dálku spuštěno na %1$s",
"Remote wipe has finished on %1$s" : "Vymazání na dálku bylo na %1$s dokončeno",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Vaše <strong>heslo</strong> nebo <strong>e-mail</strong> bylo změněno",
+ "Apps" : "Aplikace",
"Could not remove app." : "Aplikaci se nedaří odebrat.",
"Could not update app." : "Aplikaci se nedaří aktualizovat.",
"Wrong password" : "Nesprávné heslo",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "E-mail se nepodařilo odeslat. Podívejte se do záznamu událostí (log) svého e-mailového serveru.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Při odesílání e-mailu nastala chyba – překontrolujte nastavení. (Chyba: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Aby bylo možné odesílat zkušební e-maily je třeba, abyste si nejprve nastavili svou e-mailovou adresu. To učiníte v %s.",
+ "Users" : "Uživatelé",
"Invalid user" : "Neplatný uživatel",
"Invalid mail address" : "Neplatná e-mailová adresa",
"Settings saved" : "Nastavení uložena",
@@ -112,7 +114,6 @@
"Go to %s" : "Jít na %s",
"Install Client" : "Nainstalovat klienta",
"Logged in user must be a subadmin" : "Je třeba, aby přihlášený uživatel byl dílčím správcem",
- "Apps" : "Aplikace",
"Settings" : "Nastavení",
"Personal" : "Osobní",
"Administration" : "Správa",
diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js
index c6fd5a15b3e..91b96845c0f 100644
--- a/apps/settings/l10n/da.js
+++ b/apps/settings/l10n/da.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Fjernsletning blev startet på %1$s",
"Remote wipe has finished on %1$s" : "Fjernsletning er afsluttet på %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Dit <strong>password</strong> eller <strong>email</strong> blev ændret",
+ "Apps" : "Apps",
"Wrong password" : "Forkert kodeord",
"Saved" : "Gemt",
"No user supplied" : "Intet brugernavn givet",
@@ -65,6 +66,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Hvis du har modtaget denne email, så er email konfigureret rigtigt.",
"Email could not be sent. Check your mail server log" : "Email kunne ikke sendes. Tjek din mail server log",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Der opstod et problem under afsendelse af e-mailen. Gennemse venligst dine indstillinger. (Fejl: %s)",
+ "Users" : "Brugere",
"Invalid user" : "Ugyldig bruger",
"Invalid mail address" : "Ugyldig mailadresse",
"Settings saved" : "Indstillinger gemt",
@@ -96,7 +98,6 @@ OC.L10N.register(
"Go to %s" : "Gå til %s",
"Install Client" : "Installer client",
"Logged in user must be a subadmin" : "Logget på bruger skal være en underadministrator",
- "Apps" : "Apps",
"Settings" : "Indstillinger",
"Personal" : "Personligt",
"Administration" : "Administration",
diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json
index 7ce85977557..9e70c4dbd68 100644
--- a/apps/settings/l10n/da.json
+++ b/apps/settings/l10n/da.json
@@ -46,6 +46,7 @@
"Remote wipe was started on %1$s" : "Fjernsletning blev startet på %1$s",
"Remote wipe has finished on %1$s" : "Fjernsletning er afsluttet på %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Dit <strong>password</strong> eller <strong>email</strong> blev ændret",
+ "Apps" : "Apps",
"Wrong password" : "Forkert kodeord",
"Saved" : "Gemt",
"No user supplied" : "Intet brugernavn givet",
@@ -63,6 +64,7 @@
"If you received this email, the email configuration seems to be correct." : "Hvis du har modtaget denne email, så er email konfigureret rigtigt.",
"Email could not be sent. Check your mail server log" : "Email kunne ikke sendes. Tjek din mail server log",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Der opstod et problem under afsendelse af e-mailen. Gennemse venligst dine indstillinger. (Fejl: %s)",
+ "Users" : "Brugere",
"Invalid user" : "Ugyldig bruger",
"Invalid mail address" : "Ugyldig mailadresse",
"Settings saved" : "Indstillinger gemt",
@@ -94,7 +96,6 @@
"Go to %s" : "Gå til %s",
"Install Client" : "Installer client",
"Logged in user must be a subadmin" : "Logget på bruger skal være en underadministrator",
- "Apps" : "Apps",
"Settings" : "Indstillinger",
"Personal" : "Personligt",
"Administration" : "Administration",
diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js
index b9cf15e2f1f..b8498e067e0 100644
--- a/apps/settings/l10n/de.js
+++ b/apps/settings/l10n/de.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Fernlöschung wurde am %1$s gestartet",
"Remote wipe has finished on %1$s" : "Fernlöschung wurde am %1$s abgeschlossen",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Dein <strong>Passwort</strong> oder deine <strong>E-Mail-Adresse</strong> wurde geändert",
+ "Apps" : "Apps",
"Could not remove app." : "App konnte nicht entfernt werden",
"Could not update app." : "App konnte nicht aktualisiert werden",
"Wrong password" : "Falsches Passwort",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfe dein E-Mail-Server-Protokoll",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfe deine Einstellungen. (Fehler: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Du musst deine Benutzer-E-Mail-Adresse festlegen, bevor du Test-E-Mails senden kannst. Gehe dazu zu %s.",
+ "Users" : "Benutzer",
"Invalid user" : "Ungültiger Benutzer",
"Invalid mail address" : "Ungültige E-Mail-Adresse",
"Settings saved" : "Einstellungen gespeichert",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "%s aufrufen",
"Install Client" : "Installiere den Client",
"Logged in user must be a subadmin" : "Der angemeldete Benutzer muss ein Administrator sein",
- "Apps" : "Apps",
"Settings" : "Einstellungen",
"Personal" : "Persönlich",
"Administration" : "Verwaltung",
diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json
index 92218de8f0c..73b20d9c942 100644
--- a/apps/settings/l10n/de.json
+++ b/apps/settings/l10n/de.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Fernlöschung wurde am %1$s gestartet",
"Remote wipe has finished on %1$s" : "Fernlöschung wurde am %1$s abgeschlossen",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Dein <strong>Passwort</strong> oder deine <strong>E-Mail-Adresse</strong> wurde geändert",
+ "Apps" : "Apps",
"Could not remove app." : "App konnte nicht entfernt werden",
"Could not update app." : "App konnte nicht aktualisiert werden",
"Wrong password" : "Falsches Passwort",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfe dein E-Mail-Server-Protokoll",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfe deine Einstellungen. (Fehler: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Du musst deine Benutzer-E-Mail-Adresse festlegen, bevor du Test-E-Mails senden kannst. Gehe dazu zu %s.",
+ "Users" : "Benutzer",
"Invalid user" : "Ungültiger Benutzer",
"Invalid mail address" : "Ungültige E-Mail-Adresse",
"Settings saved" : "Einstellungen gespeichert",
@@ -112,7 +114,6 @@
"Go to %s" : "%s aufrufen",
"Install Client" : "Installiere den Client",
"Logged in user must be a subadmin" : "Der angemeldete Benutzer muss ein Administrator sein",
- "Apps" : "Apps",
"Settings" : "Einstellungen",
"Personal" : "Persönlich",
"Administration" : "Verwaltung",
diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js
index cd92902c89a..b26a072d5e3 100644
--- a/apps/settings/l10n/de_DE.js
+++ b/apps/settings/l10n/de_DE.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Fernlöschung wurde am %1$s gestartet",
"Remote wipe has finished on %1$s" : "Fernlöschung wurde am %1$s abgeschlossen",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ihr <strong>Passwort</strong> oder Ihre <strong>E-Mail-Adresse</strong> wurde geändert",
+ "Apps" : "Apps",
"Could not remove app." : "App konnte nicht entfernt werden.",
"Could not update app." : "App konnte nicht aktualisiert werden.",
"Wrong password" : "Falsches Passwort",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfen Sie Ihr E-Mail-Server-Protokoll",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfen Sie Ihre Einstellungen. (Fehler: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Sie müssen Ihre Benutzer-E-Mail-Adresse festlegen, bevor Sie Test-E-Mails senden können. Gehen Sie dazu zu %s.",
+ "Users" : "Benutzer",
"Invalid user" : "Ungültiger Benutzer",
"Invalid mail address" : "Ungültige E-Mail-Adresse",
"Settings saved" : "Einstellungen gespeichert",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "%s aufrufen",
"Install Client" : "Installiere den Client",
"Logged in user must be a subadmin" : "Der angemeldete Benutzer muss ein Subadministrator sein",
- "Apps" : "Apps",
"Settings" : "Einstellungen",
"Personal" : "Persönlich",
"Administration" : "Verwaltung",
diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json
index be4203cb965..8b01c6b2d87 100644
--- a/apps/settings/l10n/de_DE.json
+++ b/apps/settings/l10n/de_DE.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Fernlöschung wurde am %1$s gestartet",
"Remote wipe has finished on %1$s" : "Fernlöschung wurde am %1$s abgeschlossen",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ihr <strong>Passwort</strong> oder Ihre <strong>E-Mail-Adresse</strong> wurde geändert",
+ "Apps" : "Apps",
"Could not remove app." : "App konnte nicht entfernt werden.",
"Could not update app." : "App konnte nicht aktualisiert werden.",
"Wrong password" : "Falsches Passwort",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfen Sie Ihr E-Mail-Server-Protokoll",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfen Sie Ihre Einstellungen. (Fehler: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Sie müssen Ihre Benutzer-E-Mail-Adresse festlegen, bevor Sie Test-E-Mails senden können. Gehen Sie dazu zu %s.",
+ "Users" : "Benutzer",
"Invalid user" : "Ungültiger Benutzer",
"Invalid mail address" : "Ungültige E-Mail-Adresse",
"Settings saved" : "Einstellungen gespeichert",
@@ -112,7 +114,6 @@
"Go to %s" : "%s aufrufen",
"Install Client" : "Installiere den Client",
"Logged in user must be a subadmin" : "Der angemeldete Benutzer muss ein Subadministrator sein",
- "Apps" : "Apps",
"Settings" : "Einstellungen",
"Personal" : "Persönlich",
"Administration" : "Verwaltung",
diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js
index 47954e06c39..b713c3a7552 100644
--- a/apps/settings/l10n/el.js
+++ b/apps/settings/l10n/el.js
@@ -48,6 +48,7 @@ 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>email</strong> σας, τροποποιήθηκαν",
+ "Apps" : "Εφαρμογές",
"Wrong password" : "Λάθος κωδικός πρόσβασης",
"Saved" : "Αποθηκεύτηκαν",
"No user supplied" : "Δεν εισήχθη χρήστης",
@@ -66,6 +67,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "Το μήνυμα ηλεκτρονικού ταχυδρομείου δεν εστάλη. Ελέγξτε το αρχείο καταγραφής.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Παρουσιάστηκε σφάλμα κατά την αποστολή e-mail. Παρακαλούμε ελέγξτε τις ρυθμίσεις σας. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Πρέπει να ορίσετε τη διεύθυνση email του χρήστη πριν μπορέσετε να στείλετε δοκιμαστικά μηνύματα. Πηγαίνετε στο %s για αυτό.",
+ "Users" : "Χρήστες",
"Invalid user" : "Μη έγκυρος χρήστης",
"Invalid mail address" : "Μη έγκυρη διεύθυνση Ηλ.Ταχυδρομείου.",
"Settings saved" : "Οι ρυθμίσεις αποθηκεύτηκαν",
@@ -97,7 +99,6 @@ OC.L10N.register(
"Go to %s" : "Πηγαίνετε στο %s",
"Install Client" : "Εγκατάσταση πελάτη",
"Logged in user must be a subadmin" : "Ο συνδεδεμένος χρήστης πρέπει να είναι subadmin",
- "Apps" : "Εφαρμογές",
"Settings" : "Ρυθμίσεις",
"Personal" : "Προσωπικά",
"Administration" : "Διαχείριση",
diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json
index 7bf6862ed25..9c191490f42 100644
--- a/apps/settings/l10n/el.json
+++ b/apps/settings/l10n/el.json
@@ -46,6 +46,7 @@
"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>email</strong> σας, τροποποιήθηκαν",
+ "Apps" : "Εφαρμογές",
"Wrong password" : "Λάθος κωδικός πρόσβασης",
"Saved" : "Αποθηκεύτηκαν",
"No user supplied" : "Δεν εισήχθη χρήστης",
@@ -64,6 +65,7 @@
"Email could not be sent. Check your mail server log" : "Το μήνυμα ηλεκτρονικού ταχυδρομείου δεν εστάλη. Ελέγξτε το αρχείο καταγραφής.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Παρουσιάστηκε σφάλμα κατά την αποστολή e-mail. Παρακαλούμε ελέγξτε τις ρυθμίσεις σας. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Πρέπει να ορίσετε τη διεύθυνση email του χρήστη πριν μπορέσετε να στείλετε δοκιμαστικά μηνύματα. Πηγαίνετε στο %s για αυτό.",
+ "Users" : "Χρήστες",
"Invalid user" : "Μη έγκυρος χρήστης",
"Invalid mail address" : "Μη έγκυρη διεύθυνση Ηλ.Ταχυδρομείου.",
"Settings saved" : "Οι ρυθμίσεις αποθηκεύτηκαν",
@@ -95,7 +97,6 @@
"Go to %s" : "Πηγαίνετε στο %s",
"Install Client" : "Εγκατάσταση πελάτη",
"Logged in user must be a subadmin" : "Ο συνδεδεμένος χρήστης πρέπει να είναι subadmin",
- "Apps" : "Εφαρμογές",
"Settings" : "Ρυθμίσεις",
"Personal" : "Προσωπικά",
"Administration" : "Διαχείριση",
diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js
index d1d3a1cb5f9..9ee663c78de 100644
--- a/apps/settings/l10n/en_GB.js
+++ b/apps/settings/l10n/en_GB.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Remote wipe was started on %1$s",
"Remote wipe has finished on %1$s" : "Remote wipe has finished on %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Your <strong>password</strong> or <strong>email</strong> was modified",
+ "Apps" : "Apps",
"Could not remove app." : "Could not remove app.",
"Could not update app." : "Could not update app.",
"Wrong password" : "Incorrect password",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "Email could not be sent. Check your mail server log",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "A problem occurred while sending the email. Please revise your settings. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "You need to set your user email before being able to send test emails. Go to %s for that.",
+ "Users" : "Users",
"Invalid user" : "Invalid user",
"Invalid mail address" : "Invalid mail address",
"Settings saved" : "Settings saved",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "Go to %s",
"Install Client" : "Install Client",
"Logged in user must be a subadmin" : "Logged in user must be a subadmin",
- "Apps" : "Apps",
"Settings" : "Settings",
"Personal" : "Personal",
"Administration" : "Administration",
diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json
index fe8f00acd08..345b71e407f 100644
--- a/apps/settings/l10n/en_GB.json
+++ b/apps/settings/l10n/en_GB.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Remote wipe was started on %1$s",
"Remote wipe has finished on %1$s" : "Remote wipe has finished on %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Your <strong>password</strong> or <strong>email</strong> was modified",
+ "Apps" : "Apps",
"Could not remove app." : "Could not remove app.",
"Could not update app." : "Could not update app.",
"Wrong password" : "Incorrect password",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "Email could not be sent. Check your mail server log",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "A problem occurred while sending the email. Please revise your settings. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "You need to set your user email before being able to send test emails. Go to %s for that.",
+ "Users" : "Users",
"Invalid user" : "Invalid user",
"Invalid mail address" : "Invalid mail address",
"Settings saved" : "Settings saved",
@@ -112,7 +114,6 @@
"Go to %s" : "Go to %s",
"Install Client" : "Install Client",
"Logged in user must be a subadmin" : "Logged in user must be a subadmin",
- "Apps" : "Apps",
"Settings" : "Settings",
"Personal" : "Personal",
"Administration" : "Administration",
diff --git a/apps/settings/l10n/eo.js b/apps/settings/l10n/eo.js
index 30599990f1c..4da9b1aedb5 100644
--- a/apps/settings/l10n/eo.js
+++ b/apps/settings/l10n/eo.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Defora forviŝado komenciĝis ĉe %1$s",
"Remote wipe has finished on %1$s" : "Defora forviŝado finis ĉe %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Via <strong>pasvorto</strong> aŭ <strong>retpoŝtadreso</strong> estis modifita",
+ "Apps" : "Aplikaĵoj",
"Wrong password" : "Neĝusta pasvorto",
"Saved" : "Konservita",
"No user supplied" : "Neniu uzanto provizita",
@@ -58,6 +59,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Se vi ricevis tiun ĉi retmesaĝon, retpoŝta agordo estas ĝusta, espereble.",
"Email could not be sent. Check your mail server log" : "Retmesaĝo ne eblis esti sendita. Kontrolu vian servil-protokolon.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Problem dum sendado de la retmesaĝo. Bv. ekzameni viajn agordojn. (Eraro: %s)",
+ "Users" : "Uzantoj",
"Invalid user" : "Nevalida uzanto",
"Invalid mail address" : "Nevalida retpoŝtadreso",
"Settings saved" : "Agordoj konservitaj",
@@ -85,7 +87,6 @@ OC.L10N.register(
"Go to %s" : "Iri al %s",
"Install Client" : "Instali kienton",
"Logged in user must be a subadmin" : "La konektita uzanto estu subadministranto.",
- "Apps" : "Aplikaĵoj",
"Settings" : "Agordoj",
"Personal" : "Persona",
"Administration" : "Administrado",
diff --git a/apps/settings/l10n/eo.json b/apps/settings/l10n/eo.json
index 03b60283388..99cdca45e3a 100644
--- a/apps/settings/l10n/eo.json
+++ b/apps/settings/l10n/eo.json
@@ -40,6 +40,7 @@
"Remote wipe was started on %1$s" : "Defora forviŝado komenciĝis ĉe %1$s",
"Remote wipe has finished on %1$s" : "Defora forviŝado finis ĉe %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Via <strong>pasvorto</strong> aŭ <strong>retpoŝtadreso</strong> estis modifita",
+ "Apps" : "Aplikaĵoj",
"Wrong password" : "Neĝusta pasvorto",
"Saved" : "Konservita",
"No user supplied" : "Neniu uzanto provizita",
@@ -56,6 +57,7 @@
"If you received this email, the email configuration seems to be correct." : "Se vi ricevis tiun ĉi retmesaĝon, retpoŝta agordo estas ĝusta, espereble.",
"Email could not be sent. Check your mail server log" : "Retmesaĝo ne eblis esti sendita. Kontrolu vian servil-protokolon.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Problem dum sendado de la retmesaĝo. Bv. ekzameni viajn agordojn. (Eraro: %s)",
+ "Users" : "Uzantoj",
"Invalid user" : "Nevalida uzanto",
"Invalid mail address" : "Nevalida retpoŝtadreso",
"Settings saved" : "Agordoj konservitaj",
@@ -83,7 +85,6 @@
"Go to %s" : "Iri al %s",
"Install Client" : "Instali kienton",
"Logged in user must be a subadmin" : "La konektita uzanto estu subadministranto.",
- "Apps" : "Aplikaĵoj",
"Settings" : "Agordoj",
"Personal" : "Persona",
"Administration" : "Administrado",
diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js
index 60f127f88af..f0cc60c8b05 100644
--- a/apps/settings/l10n/es.js
+++ b/apps/settings/l10n/es.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "El borrado remoto se inició en %1$s",
"Remote wipe has finished on %1$s" : "El borrado remoto finalizó en %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>dirección de correo</strong> fue modificada",
+ "Apps" : "Apps",
"Could not remove app." : "No se ha podido eliminar la app.",
"Could not update app." : "No se ha podido actualizar la app.",
"Wrong password" : "Contraseña incorrecta",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "No se ha podido enviar el correo. Compruebe el registro del servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ha ocurrido un problema al enviar el mensaje de correo electrónico. Revisa tu configuración. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Necesitas configurar tu correo antes de poder enviar mensajes de prueba. Ve a %s para ello.",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario no válido",
"Invalid mail address" : "Dirección de correo no válido",
"Settings saved" : "Ajustes guardados",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "Vaya a %s",
"Install Client" : "Instalar cliente",
"Logged in user must be a subadmin" : "El usuario registrado debe ser un subadministrador",
- "Apps" : "Apps",
"Settings" : "Ajustes",
"Personal" : "Personal",
"Administration" : "Administración",
@@ -446,6 +447,7 @@ OC.L10N.register(
"Server address" : "Dirección del servidor",
"Port" : "Puerto",
"Authentication method" : "Método de autenticación",
+ "Only applies when authentication is required" : "Aplica solamente cuando se requiere autenticación",
"Authentication required" : "Se necesita autenticación",
"Credentials" : "Credenciales",
"SMTP Username" : "Nombre de usuario SMTP",
diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json
index a4211ba76e0..6180a517bee 100644
--- a/apps/settings/l10n/es.json
+++ b/apps/settings/l10n/es.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "El borrado remoto se inició en %1$s",
"Remote wipe has finished on %1$s" : "El borrado remoto finalizó en %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>dirección de correo</strong> fue modificada",
+ "Apps" : "Apps",
"Could not remove app." : "No se ha podido eliminar la app.",
"Could not update app." : "No se ha podido actualizar la app.",
"Wrong password" : "Contraseña incorrecta",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "No se ha podido enviar el correo. Compruebe el registro del servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ha ocurrido un problema al enviar el mensaje de correo electrónico. Revisa tu configuración. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Necesitas configurar tu correo antes de poder enviar mensajes de prueba. Ve a %s para ello.",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario no válido",
"Invalid mail address" : "Dirección de correo no válido",
"Settings saved" : "Ajustes guardados",
@@ -112,7 +114,6 @@
"Go to %s" : "Vaya a %s",
"Install Client" : "Instalar cliente",
"Logged in user must be a subadmin" : "El usuario registrado debe ser un subadministrador",
- "Apps" : "Apps",
"Settings" : "Ajustes",
"Personal" : "Personal",
"Administration" : "Administración",
@@ -444,6 +445,7 @@
"Server address" : "Dirección del servidor",
"Port" : "Puerto",
"Authentication method" : "Método de autenticación",
+ "Only applies when authentication is required" : "Aplica solamente cuando se requiere autenticación",
"Authentication required" : "Se necesita autenticación",
"Credentials" : "Credenciales",
"SMTP Username" : "Nombre de usuario SMTP",
diff --git a/apps/settings/l10n/es_419.js b/apps/settings/l10n/es_419.js
index 5dc8cc534ec..c8a8f3b947b 100644
--- a/apps/settings/l10n/es_419.js
+++ b/apps/settings/l10n/es_419.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Ususarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -64,7 +66,6 @@ OC.L10N.register(
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_419.json b/apps/settings/l10n/es_419.json
index ddc7dfb8b3e..f5d2f288de8 100644
--- a/apps/settings/l10n/es_419.json
+++ b/apps/settings/l10n/es_419.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -36,6 +37,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Ususarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -62,7 +64,6 @@
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_AR.js b/apps/settings/l10n/es_AR.js
index 86fd3a2af4d..56ac4ea3c57 100644
--- a/apps/settings/l10n/es_AR.js
+++ b/apps/settings/l10n/es_AR.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Ha iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autienticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Su <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó un usuario",
@@ -38,6 +39,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si usted ha recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Favor de verficiar la bitácora de su servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Favor de revisar sus configuraciones (Error: %s)",
+ "Users" : "Ususarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -63,7 +65,6 @@ OC.L10N.register(
"Set your password" : "Establezca su contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Ajustes",
"Personal" : "Personal",
"Additional settings" : "Configuraciones adicionales",
diff --git a/apps/settings/l10n/es_AR.json b/apps/settings/l10n/es_AR.json
index 8fe06082352..d6c6612f3df 100644
--- a/apps/settings/l10n/es_AR.json
+++ b/apps/settings/l10n/es_AR.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Ha iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autienticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Su <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó un usuario",
@@ -36,6 +37,7 @@
"If you received this email, the email configuration seems to be correct." : "Si usted ha recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Favor de verficiar la bitácora de su servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Favor de revisar sus configuraciones (Error: %s)",
+ "Users" : "Ususarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -61,7 +63,6 @@
"Set your password" : "Establezca su contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Ajustes",
"Personal" : "Personal",
"Additional settings" : "Configuraciones adicionales",
diff --git a/apps/settings/l10n/es_CL.js b/apps/settings/l10n/es_CL.js
index de83d3093fe..beab3681c71 100644
--- a/apps/settings/l10n/es_CL.js
+++ b/apps/settings/l10n/es_CL.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -40,6 +41,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Ususarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -67,7 +69,6 @@ OC.L10N.register(
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_CL.json b/apps/settings/l10n/es_CL.json
index 9d83290989b..b62770fe0e7 100644
--- a/apps/settings/l10n/es_CL.json
+++ b/apps/settings/l10n/es_CL.json
@@ -23,6 +23,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Ususarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -65,7 +67,6 @@
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_CO.js b/apps/settings/l10n/es_CO.js
index de83d3093fe..151e50320d7 100644
--- a/apps/settings/l10n/es_CO.js
+++ b/apps/settings/l10n/es_CO.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -40,6 +41,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -67,7 +69,6 @@ OC.L10N.register(
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_CO.json b/apps/settings/l10n/es_CO.json
index 9d83290989b..fcf4009c769 100644
--- a/apps/settings/l10n/es_CO.json
+++ b/apps/settings/l10n/es_CO.json
@@ -23,6 +23,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -65,7 +67,6 @@
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_CR.js b/apps/settings/l10n/es_CR.js
index de83d3093fe..151e50320d7 100644
--- a/apps/settings/l10n/es_CR.js
+++ b/apps/settings/l10n/es_CR.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -40,6 +41,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -67,7 +69,6 @@ OC.L10N.register(
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_CR.json b/apps/settings/l10n/es_CR.json
index 9d83290989b..fcf4009c769 100644
--- a/apps/settings/l10n/es_CR.json
+++ b/apps/settings/l10n/es_CR.json
@@ -23,6 +23,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -65,7 +67,6 @@
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_DO.js b/apps/settings/l10n/es_DO.js
index de83d3093fe..151e50320d7 100644
--- a/apps/settings/l10n/es_DO.js
+++ b/apps/settings/l10n/es_DO.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -40,6 +41,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -67,7 +69,6 @@ OC.L10N.register(
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_DO.json b/apps/settings/l10n/es_DO.json
index 9d83290989b..fcf4009c769 100644
--- a/apps/settings/l10n/es_DO.json
+++ b/apps/settings/l10n/es_DO.json
@@ -23,6 +23,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -65,7 +67,6 @@
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_EC.js b/apps/settings/l10n/es_EC.js
index de83d3093fe..151e50320d7 100644
--- a/apps/settings/l10n/es_EC.js
+++ b/apps/settings/l10n/es_EC.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -40,6 +41,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -67,7 +69,6 @@ OC.L10N.register(
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_EC.json b/apps/settings/l10n/es_EC.json
index 9d83290989b..fcf4009c769 100644
--- a/apps/settings/l10n/es_EC.json
+++ b/apps/settings/l10n/es_EC.json
@@ -23,6 +23,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -65,7 +67,6 @@
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_GT.js b/apps/settings/l10n/es_GT.js
index de83d3093fe..151e50320d7 100644
--- a/apps/settings/l10n/es_GT.js
+++ b/apps/settings/l10n/es_GT.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -40,6 +41,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -67,7 +69,6 @@ OC.L10N.register(
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_GT.json b/apps/settings/l10n/es_GT.json
index 9d83290989b..fcf4009c769 100644
--- a/apps/settings/l10n/es_GT.json
+++ b/apps/settings/l10n/es_GT.json
@@ -23,6 +23,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -65,7 +67,6 @@
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_HN.js b/apps/settings/l10n/es_HN.js
index f7dbd2827cf..3992f77037d 100644
--- a/apps/settings/l10n/es_HN.js
+++ b/apps/settings/l10n/es_HN.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -64,7 +66,6 @@ OC.L10N.register(
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_HN.json b/apps/settings/l10n/es_HN.json
index e8cfbf28955..97495931c64 100644
--- a/apps/settings/l10n/es_HN.json
+++ b/apps/settings/l10n/es_HN.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -36,6 +37,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -62,7 +64,6 @@
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_MX.js b/apps/settings/l10n/es_MX.js
index 9e7758f2752..6566471b1de 100644
--- a/apps/settings/l10n/es_MX.js
+++ b/apps/settings/l10n/es_MX.js
@@ -35,6 +35,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -50,6 +51,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : " Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -77,7 +79,6 @@ OC.L10N.register(
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_MX.json b/apps/settings/l10n/es_MX.json
index 29db743dfa1..f9dfab27e9f 100644
--- a/apps/settings/l10n/es_MX.json
+++ b/apps/settings/l10n/es_MX.json
@@ -33,6 +33,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -48,6 +49,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : " Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -75,7 +77,6 @@
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_NI.js b/apps/settings/l10n/es_NI.js
index f7dbd2827cf..3992f77037d 100644
--- a/apps/settings/l10n/es_NI.js
+++ b/apps/settings/l10n/es_NI.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -64,7 +66,6 @@ OC.L10N.register(
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_NI.json b/apps/settings/l10n/es_NI.json
index e8cfbf28955..97495931c64 100644
--- a/apps/settings/l10n/es_NI.json
+++ b/apps/settings/l10n/es_NI.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -36,6 +37,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -62,7 +64,6 @@
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_PA.js b/apps/settings/l10n/es_PA.js
index f7dbd2827cf..3992f77037d 100644
--- a/apps/settings/l10n/es_PA.js
+++ b/apps/settings/l10n/es_PA.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -64,7 +66,6 @@ OC.L10N.register(
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_PA.json b/apps/settings/l10n/es_PA.json
index e8cfbf28955..97495931c64 100644
--- a/apps/settings/l10n/es_PA.json
+++ b/apps/settings/l10n/es_PA.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -36,6 +37,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -62,7 +64,6 @@
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_PE.js b/apps/settings/l10n/es_PE.js
index f7dbd2827cf..3992f77037d 100644
--- a/apps/settings/l10n/es_PE.js
+++ b/apps/settings/l10n/es_PE.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -64,7 +66,6 @@ OC.L10N.register(
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_PE.json b/apps/settings/l10n/es_PE.json
index e8cfbf28955..97495931c64 100644
--- a/apps/settings/l10n/es_PE.json
+++ b/apps/settings/l10n/es_PE.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -36,6 +37,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -62,7 +64,6 @@
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_PR.js b/apps/settings/l10n/es_PR.js
index f7dbd2827cf..3992f77037d 100644
--- a/apps/settings/l10n/es_PR.js
+++ b/apps/settings/l10n/es_PR.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -64,7 +66,6 @@ OC.L10N.register(
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_PR.json b/apps/settings/l10n/es_PR.json
index e8cfbf28955..97495931c64 100644
--- a/apps/settings/l10n/es_PR.json
+++ b/apps/settings/l10n/es_PR.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -36,6 +37,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -62,7 +64,6 @@
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_PY.js b/apps/settings/l10n/es_PY.js
index f7dbd2827cf..3992f77037d 100644
--- a/apps/settings/l10n/es_PY.js
+++ b/apps/settings/l10n/es_PY.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -64,7 +66,6 @@ OC.L10N.register(
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_PY.json b/apps/settings/l10n/es_PY.json
index e8cfbf28955..97495931c64 100644
--- a/apps/settings/l10n/es_PY.json
+++ b/apps/settings/l10n/es_PY.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -36,6 +37,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -62,7 +64,6 @@
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_SV.js b/apps/settings/l10n/es_SV.js
index de83d3093fe..151e50320d7 100644
--- a/apps/settings/l10n/es_SV.js
+++ b/apps/settings/l10n/es_SV.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -40,6 +41,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -67,7 +69,6 @@ OC.L10N.register(
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_SV.json b/apps/settings/l10n/es_SV.json
index 9d83290989b..fcf4009c769 100644
--- a/apps/settings/l10n/es_SV.json
+++ b/apps/settings/l10n/es_SV.json
@@ -23,6 +23,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -65,7 +67,6 @@
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
"Logged in user must be a subadmin" : "El usuario firmado debe ser un subadministrador ",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_UY.js b/apps/settings/l10n/es_UY.js
index f7dbd2827cf..3992f77037d 100644
--- a/apps/settings/l10n/es_UY.js
+++ b/apps/settings/l10n/es_UY.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -38,6 +39,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -64,7 +66,6 @@ OC.L10N.register(
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/es_UY.json b/apps/settings/l10n/es_UY.json
index e8cfbf28955..97495931c64 100644
--- a/apps/settings/l10n/es_UY.json
+++ b/apps/settings/l10n/es_UY.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado",
+ "Apps" : "Aplicaciones",
"Wrong password" : "Contraseña incorrecta",
"Saved" : "Guardado",
"No user supplied" : "No se proporcionó usuario alguno",
@@ -36,6 +37,7 @@
"If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ",
"Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario inválido",
"Invalid mail address" : "Dirección de correo inválida",
"Settings saved" : "Se han guardado las configuraciones ",
@@ -62,7 +64,6 @@
"Set your password" : "Establece tu contraseña",
"Go to %s" : "Ir a %s",
"Install Client" : "Instalar el cliente",
- "Apps" : "Aplicaciones",
"Settings" : "Configuraciones ",
"Personal" : "Personal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js
index 296ef094a8a..068ef724c8a 100644
--- a/apps/settings/l10n/et_EE.js
+++ b/apps/settings/l10n/et_EE.js
@@ -26,6 +26,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Logisid edukalt sisse, kasutades kaheastmelist autentimiset (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Sisselogimiskatse, kasutades kaheastmelist autentimist, ebaõnnestus (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Sinu <strong>parooli</strong> või <strong>e-posti aadressi</strong> muudeti",
+ "Apps" : "Rakendused",
"Wrong password" : "Vale parool",
"Saved" : "Salvestatud",
"No user supplied" : "Kasutajat ei sisestatud",
@@ -40,6 +41,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Kui saite selle kirja, näib e-posti seadistus õige.",
"Email could not be sent. Check your mail server log" : "E-posti ei saanud saata. Kontrollige oma meiliserveri logi",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "E-posti saatmisel ilmnes viga. Palun kontrollige seadeid. (Viga: %s)",
+ "Users" : "Kasutajad",
"Invalid user" : "Vigane kasutaja",
"Invalid mail address" : "Vigane e-posti aadress",
"Settings saved" : "Seaded salvestatud",
@@ -64,7 +66,6 @@ OC.L10N.register(
"Set your password" : "Määra oma parool",
"Go to %s" : "Mine %s",
"Install Client" : "Paigalda kliendiprogramm",
- "Apps" : "Rakendused",
"Settings" : "Seaded",
"Personal" : "Isiklik",
"Administration" : "Haldus",
diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json
index 12df9bc7be3..69d4a95969c 100644
--- a/apps/settings/l10n/et_EE.json
+++ b/apps/settings/l10n/et_EE.json
@@ -24,6 +24,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Logisid edukalt sisse, kasutades kaheastmelist autentimiset (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Sisselogimiskatse, kasutades kaheastmelist autentimist, ebaõnnestus (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Sinu <strong>parooli</strong> või <strong>e-posti aadressi</strong> muudeti",
+ "Apps" : "Rakendused",
"Wrong password" : "Vale parool",
"Saved" : "Salvestatud",
"No user supplied" : "Kasutajat ei sisestatud",
@@ -38,6 +39,7 @@
"If you received this email, the email configuration seems to be correct." : "Kui saite selle kirja, näib e-posti seadistus õige.",
"Email could not be sent. Check your mail server log" : "E-posti ei saanud saata. Kontrollige oma meiliserveri logi",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "E-posti saatmisel ilmnes viga. Palun kontrollige seadeid. (Viga: %s)",
+ "Users" : "Kasutajad",
"Invalid user" : "Vigane kasutaja",
"Invalid mail address" : "Vigane e-posti aadress",
"Settings saved" : "Seaded salvestatud",
@@ -62,7 +64,6 @@
"Set your password" : "Määra oma parool",
"Go to %s" : "Mine %s",
"Install Client" : "Paigalda kliendiprogramm",
- "Apps" : "Rakendused",
"Settings" : "Seaded",
"Personal" : "Isiklik",
"Administration" : "Haldus",
diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js
index ff50f882b38..f0fda5bfe79 100644
--- a/apps/settings/l10n/eu.js
+++ b/apps/settings/l10n/eu.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Urruneko garbiketa hasi zen %1$s-ean",
"Remote wipe has finished on %1$s" : "Urruneko garbiketa amaitu zen %1$s-ean",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Zure pasahitza edo e-posta helbidea aldatu da",
+ "Apps" : "Aplikazioak",
"Could not remove app." : "Ezin izan da kendu aplikazioa.",
"Could not update app." : "Ezin izan da aplikazioa eguneratu.",
"Wrong password" : "Pasahitz okerra",
@@ -82,6 +83,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "E-posta mezua ezin izan da bidali. Begiratu zure posta-zerbitzariaren egunkaria",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Arazo bat sortu da posta bidaltzerakoan. Berrikusi zure ezarpenak. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Zure erabiltzailearen posta elektronikoa ezarri behar duzu probako mezu elektronikoak bidali ahal izateko. Zoaz %sorrira horretarako.",
+ "Users" : "Erabiltzaileak",
"Invalid user" : "Erabiltzaile baliogabea",
"Invalid mail address" : "Posta helbide baliogabea",
"Settings saved" : "Ezarpenak gordeta",
@@ -113,7 +115,6 @@ OC.L10N.register(
"Go to %s" : "%s-ra joan",
"Install Client" : "Instalatu bezeroa",
"Logged in user must be a subadmin" : "Saioa hasitako erabiltzailea azpi-administratzailea izan behar du",
- "Apps" : "Aplikazioak",
"Settings" : "Ezarpenak",
"Personal" : "Pertsonala",
"Administration" : "Administrazioa",
diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json
index 3fa2a05987f..ea3cde26404 100644
--- a/apps/settings/l10n/eu.json
+++ b/apps/settings/l10n/eu.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Urruneko garbiketa hasi zen %1$s-ean",
"Remote wipe has finished on %1$s" : "Urruneko garbiketa amaitu zen %1$s-ean",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Zure pasahitza edo e-posta helbidea aldatu da",
+ "Apps" : "Aplikazioak",
"Could not remove app." : "Ezin izan da kendu aplikazioa.",
"Could not update app." : "Ezin izan da aplikazioa eguneratu.",
"Wrong password" : "Pasahitz okerra",
@@ -80,6 +81,7 @@
"Email could not be sent. Check your mail server log" : "E-posta mezua ezin izan da bidali. Begiratu zure posta-zerbitzariaren egunkaria",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Arazo bat sortu da posta bidaltzerakoan. Berrikusi zure ezarpenak. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Zure erabiltzailearen posta elektronikoa ezarri behar duzu probako mezu elektronikoak bidali ahal izateko. Zoaz %sorrira horretarako.",
+ "Users" : "Erabiltzaileak",
"Invalid user" : "Erabiltzaile baliogabea",
"Invalid mail address" : "Posta helbide baliogabea",
"Settings saved" : "Ezarpenak gordeta",
@@ -111,7 +113,6 @@
"Go to %s" : "%s-ra joan",
"Install Client" : "Instalatu bezeroa",
"Logged in user must be a subadmin" : "Saioa hasitako erabiltzailea azpi-administratzailea izan behar du",
- "Apps" : "Aplikazioak",
"Settings" : "Ezarpenak",
"Personal" : "Pertsonala",
"Administration" : "Administrazioa",
diff --git a/apps/settings/l10n/fa.js b/apps/settings/l10n/fa.js
index 2ef4c63ba52..99ae72bd85e 100644
--- a/apps/settings/l10n/fa.js
+++ b/apps/settings/l10n/fa.js
@@ -48,6 +48,7 @@ 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> شما ویراش شد.",
+ "Apps" : "برنامه ها",
"Could not remove app." : "امکان حذف برنامه وجود ندارد.",
"Could not update app." : "برنامه را نمی توان به روزرسانی کرد .",
"Wrong password" : "رمز عبور اشتباه است",
@@ -69,6 +70,7 @@ OC.L10N.register(
"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)",
+ "Users" : "کاربران",
"Invalid user" : "کاربر نامعتبر",
"Invalid mail address" : "آدرس ایمیل نامعتبر است",
"Settings saved" : "تنظیمات ذخیره شد",
@@ -96,7 +98,6 @@ OC.L10N.register(
"Go to %s" : "برو به %s",
"Install Client" : "قسمت مشتری را نصب کنید",
"Logged in user must be a subadmin" : "ورود به سیستم کاربر باید زیرمجموعه باشد",
- "Apps" : "برنامه ها",
"Settings" : "تنظیمات",
"Personal" : "شخصی",
"Administration" : "مدیریت",
diff --git a/apps/settings/l10n/fa.json b/apps/settings/l10n/fa.json
index cdddffe9c16..dc40d7b48a5 100644
--- a/apps/settings/l10n/fa.json
+++ b/apps/settings/l10n/fa.json
@@ -46,6 +46,7 @@
"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> شما ویراش شد.",
+ "Apps" : "برنامه ها",
"Could not remove app." : "امکان حذف برنامه وجود ندارد.",
"Could not update app." : "برنامه را نمی توان به روزرسانی کرد .",
"Wrong password" : "رمز عبور اشتباه است",
@@ -67,6 +68,7 @@
"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)",
+ "Users" : "کاربران",
"Invalid user" : "کاربر نامعتبر",
"Invalid mail address" : "آدرس ایمیل نامعتبر است",
"Settings saved" : "تنظیمات ذخیره شد",
@@ -94,7 +96,6 @@
"Go to %s" : "برو به %s",
"Install Client" : "قسمت مشتری را نصب کنید",
"Logged in user must be a subadmin" : "ورود به سیستم کاربر باید زیرمجموعه باشد",
- "Apps" : "برنامه ها",
"Settings" : "تنظیمات",
"Personal" : "شخصی",
"Administration" : "مدیریت",
diff --git a/apps/settings/l10n/fi.js b/apps/settings/l10n/fi.js
index f4886be9eab..9abe5ba994b 100644
--- a/apps/settings/l10n/fi.js
+++ b/apps/settings/l10n/fi.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Etätyhjennys aloitettiin %1$s",
"Remote wipe has finished on %1$s" : "Etätyhjennys valmistui %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Salasanaasi</strong> tai <strong>sähköpostiosoitettasi</strong> muokattiin",
+ "Apps" : "Sovellukset",
"Could not remove app." : "Sovellusta ei voitu poistaa.",
"Could not update app." : "Sovellusta ei voitu päivittää.",
"Wrong password" : "Väärä salasana",
@@ -66,6 +67,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Jos vastaanotit tämän viestin, sähköpostimääritykset vaikuttavat olevan kunnossa.",
"Email could not be sent. Check your mail server log" : "Sähköpostia ei voitu lähettää. Tarkista sähköpostipalvelimen lokitiedosto",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Sähköpostia lähettäessä tapahtui virhe. Tarkista asetukset. (Virhe: %s)",
+ "Users" : "Käyttäjät",
"Invalid user" : "Virheellinen käyttäjä",
"Invalid mail address" : "Virheellinen sähköpostiosoite",
"Settings saved" : "Asetukset tallennettu",
@@ -95,7 +97,6 @@ OC.L10N.register(
"Set your password" : "Aseta salasanasi",
"Go to %s" : "Siirry %s-palveluun",
"Install Client" : "Asenna sovellus",
- "Apps" : "Sovellukset",
"Settings" : "Asetukset",
"Personal" : "Henkilökohtainen",
"Administration" : "Ylläpito",
diff --git a/apps/settings/l10n/fi.json b/apps/settings/l10n/fi.json
index e2b53687fb2..95ebf67250e 100644
--- a/apps/settings/l10n/fi.json
+++ b/apps/settings/l10n/fi.json
@@ -44,6 +44,7 @@
"Remote wipe was started on %1$s" : "Etätyhjennys aloitettiin %1$s",
"Remote wipe has finished on %1$s" : "Etätyhjennys valmistui %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Salasanaasi</strong> tai <strong>sähköpostiosoitettasi</strong> muokattiin",
+ "Apps" : "Sovellukset",
"Could not remove app." : "Sovellusta ei voitu poistaa.",
"Could not update app." : "Sovellusta ei voitu päivittää.",
"Wrong password" : "Väärä salasana",
@@ -64,6 +65,7 @@
"If you received this email, the email configuration seems to be correct." : "Jos vastaanotit tämän viestin, sähköpostimääritykset vaikuttavat olevan kunnossa.",
"Email could not be sent. Check your mail server log" : "Sähköpostia ei voitu lähettää. Tarkista sähköpostipalvelimen lokitiedosto",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Sähköpostia lähettäessä tapahtui virhe. Tarkista asetukset. (Virhe: %s)",
+ "Users" : "Käyttäjät",
"Invalid user" : "Virheellinen käyttäjä",
"Invalid mail address" : "Virheellinen sähköpostiosoite",
"Settings saved" : "Asetukset tallennettu",
@@ -93,7 +95,6 @@
"Set your password" : "Aseta salasanasi",
"Go to %s" : "Siirry %s-palveluun",
"Install Client" : "Asenna sovellus",
- "Apps" : "Sovellukset",
"Settings" : "Asetukset",
"Personal" : "Henkilökohtainen",
"Administration" : "Ylläpito",
diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js
index e30391cc368..30c84b02811 100644
--- a/apps/settings/l10n/fr.js
+++ b/apps/settings/l10n/fr.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Effacement distant démarré pour%1$s",
"Remote wipe has finished on %1$s" : "Effacement distant terminé pour %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié⋅e",
+ "Apps" : "Apps",
"Could not remove app." : "Impossible de supprimer l'app.",
"Could not update app." : "Impossible de mettre à jour l'app.",
"Wrong password" : "Mot de passe incorrect",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "L'e-mail n'a pu être envoyé. Vérifiez le journal du serveur de messagerie",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Une erreur est survenue lors de l'envoi de l'e-mail. Veuillez vérifier vos paramètres. (Erreur: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Vous devez définir votre e-mail utilisateur avant de tester l'envoi d'e-mail. Aller à %s pour cela.",
+ "Users" : "Utilisateurs",
"Invalid user" : "Utilisateur non valide",
"Invalid mail address" : "Adresse e-mail non valide",
"Settings saved" : "Paramètres sauvegardés",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "Aller à %s",
"Install Client" : "Installer le Client",
"Logged in user must be a subadmin" : "L'utilisateur connecté doit être un sous-administrateur",
- "Apps" : "Apps",
"Settings" : "Paramètres",
"Personal" : "Personnel",
"Administration" : "Administration",
diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json
index f755f862d35..2b220cbecb6 100644
--- a/apps/settings/l10n/fr.json
+++ b/apps/settings/l10n/fr.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Effacement distant démarré pour%1$s",
"Remote wipe has finished on %1$s" : "Effacement distant terminé pour %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié⋅e",
+ "Apps" : "Apps",
"Could not remove app." : "Impossible de supprimer l'app.",
"Could not update app." : "Impossible de mettre à jour l'app.",
"Wrong password" : "Mot de passe incorrect",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "L'e-mail n'a pu être envoyé. Vérifiez le journal du serveur de messagerie",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Une erreur est survenue lors de l'envoi de l'e-mail. Veuillez vérifier vos paramètres. (Erreur: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Vous devez définir votre e-mail utilisateur avant de tester l'envoi d'e-mail. Aller à %s pour cela.",
+ "Users" : "Utilisateurs",
"Invalid user" : "Utilisateur non valide",
"Invalid mail address" : "Adresse e-mail non valide",
"Settings saved" : "Paramètres sauvegardés",
@@ -112,7 +114,6 @@
"Go to %s" : "Aller à %s",
"Install Client" : "Installer le Client",
"Logged in user must be a subadmin" : "L'utilisateur connecté doit être un sous-administrateur",
- "Apps" : "Apps",
"Settings" : "Paramètres",
"Personal" : "Personnel",
"Administration" : "Administration",
diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js
index b312f7a91c7..b51fc1e847a 100644
--- a/apps/settings/l10n/gl.js
+++ b/apps/settings/l10n/gl.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Iniciouse a limpeza remota en %1$s",
"Remote wipe has finished on %1$s" : "Rematou a limpeza remota en %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Foi modificado o seu <strong>contrasinal</strong> ou o seu <strong>correo electrónico</strong>",
+ "Apps" : "Aplicacións",
"Could not remove app." : "Non se puido eliminar a aplicación.",
"Could not update app." : "Non se puido actualizar a aplicación.",
"Wrong password" : "Contrasinal incorrecto",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "Non foi posíbel enviar o correo. Comprobe o rexistro do servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu un problema ao enviar o correo. Revise a súa configuración. (Erro: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Debes configurar o teu correo electrónico de usuario antes de poder enviar correos electrónicos de proba. Vaia a %spara iso.",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario incorrecto",
"Invalid mail address" : "Enderezo de correo incorrecto",
"Settings saved" : "Axustes gardados",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "Ira a %s",
"Install Client" : "Instalar o cliente",
"Logged in user must be a subadmin" : "O usuario rexistrado debe ser un subadministrador",
- "Apps" : "Aplicacións",
"Settings" : "Axustes",
"Personal" : "Persoal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json
index 294688833cb..5d3b1935e55 100644
--- a/apps/settings/l10n/gl.json
+++ b/apps/settings/l10n/gl.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Iniciouse a limpeza remota en %1$s",
"Remote wipe has finished on %1$s" : "Rematou a limpeza remota en %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Foi modificado o seu <strong>contrasinal</strong> ou o seu <strong>correo electrónico</strong>",
+ "Apps" : "Aplicacións",
"Could not remove app." : "Non se puido eliminar a aplicación.",
"Could not update app." : "Non se puido actualizar a aplicación.",
"Wrong password" : "Contrasinal incorrecto",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "Non foi posíbel enviar o correo. Comprobe o rexistro do servidor de correo",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu un problema ao enviar o correo. Revise a súa configuración. (Erro: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Debes configurar o teu correo electrónico de usuario antes de poder enviar correos electrónicos de proba. Vaia a %spara iso.",
+ "Users" : "Usuarios",
"Invalid user" : "Usuario incorrecto",
"Invalid mail address" : "Enderezo de correo incorrecto",
"Settings saved" : "Axustes gardados",
@@ -112,7 +114,6 @@
"Go to %s" : "Ira a %s",
"Install Client" : "Instalar o cliente",
"Logged in user must be a subadmin" : "O usuario rexistrado debe ser un subadministrador",
- "Apps" : "Aplicacións",
"Settings" : "Axustes",
"Personal" : "Persoal",
"Administration" : "Administración",
diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js
index e867f6bf9b0..98b4ec174ea 100644
--- a/apps/settings/l10n/he.js
+++ b/apps/settings/l10n/he.js
@@ -45,6 +45,7 @@ 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> השתנו",
+ "Apps" : "יישומונים",
"Wrong password" : "ססמה שגויה",
"Saved" : "נשמר",
"No user supplied" : "לא סופק שם משתמש",
@@ -61,6 +62,7 @@ OC.L10N.register(
"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)",
+ "Users" : "משתמשים",
"Invalid user" : "משתמש שגוי",
"Invalid mail address" : "כתובת דואר אלקטרוני לא חוקית",
"Settings saved" : "הגדרות נשמרו",
@@ -91,7 +93,6 @@ OC.L10N.register(
"Go to %s" : "מעבר אל %s",
"Install Client" : "התקנת לקו",
"Logged in user must be a subadmin" : "המשתמש שנכנס חייב להיות תת־מנהל",
- "Apps" : "יישומונים",
"Settings" : "הגדרות",
"Personal" : "אישי",
"Administration" : "ניהול",
diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json
index f896e411ce8..1d39fcbe970 100644
--- a/apps/settings/l10n/he.json
+++ b/apps/settings/l10n/he.json
@@ -43,6 +43,7 @@
"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> השתנו",
+ "Apps" : "יישומונים",
"Wrong password" : "ססמה שגויה",
"Saved" : "נשמר",
"No user supplied" : "לא סופק שם משתמש",
@@ -59,6 +60,7 @@
"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)",
+ "Users" : "משתמשים",
"Invalid user" : "משתמש שגוי",
"Invalid mail address" : "כתובת דואר אלקטרוני לא חוקית",
"Settings saved" : "הגדרות נשמרו",
@@ -89,7 +91,6 @@
"Go to %s" : "מעבר אל %s",
"Install Client" : "התקנת לקו",
"Logged in user must be a subadmin" : "המשתמש שנכנס חייב להיות תת־מנהל",
- "Apps" : "יישומונים",
"Settings" : "הגדרות",
"Personal" : "אישי",
"Administration" : "ניהול",
diff --git a/apps/settings/l10n/hr.js b/apps/settings/l10n/hr.js
index 76c07be6b58..0e0dfe68521 100644
--- a/apps/settings/l10n/hr.js
+++ b/apps/settings/l10n/hr.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Udaljeno brisanje pokrenuto je %1$s",
"Remote wipe has finished on %1$s" : "Udaljeno brisanje završilo je %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Izmijenjena je vaša <strong>zaporka</strong> ili <strong>adresa e-pošte</strong>",
+ "Apps" : "Aplikacije",
"Wrong password" : "Pogrešna zaporka",
"Saved" : "Spremljeno",
"No user supplied" : "Nijedan korisnik nije podnesen",
@@ -65,6 +66,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Ako ste primili ovu poruku e-pošte, čini se da je e-pošta pravilno konfigurirana.",
"Email could not be sent. Check your mail server log" : "Slanje poruke e-pošte nije uspjelo. Provjerite zapis poslužitelja e-pošte",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Došlo je do problema pri slanju poruke e-pošte. Pregledajte svoje postavke. (Pogreška: %s)",
+ "Users" : "Korisnici",
"Invalid user" : "Nevažeći korisnik",
"Invalid mail address" : "Nevažeća adresa e-pošte",
"Settings saved" : "Postavke spremljene",
@@ -96,7 +98,6 @@ OC.L10N.register(
"Go to %s" : "Idi na %s",
"Install Client" : "Instaliraj klijenta",
"Logged in user must be a subadmin" : "Korisnik koji je prijavljen mora biti podadministrator",
- "Apps" : "Aplikacije",
"Settings" : "Postavke",
"Personal" : "Osobno",
"Administration" : "Administracija",
diff --git a/apps/settings/l10n/hr.json b/apps/settings/l10n/hr.json
index 8d51e0a799b..ab315adb8fe 100644
--- a/apps/settings/l10n/hr.json
+++ b/apps/settings/l10n/hr.json
@@ -46,6 +46,7 @@
"Remote wipe was started on %1$s" : "Udaljeno brisanje pokrenuto je %1$s",
"Remote wipe has finished on %1$s" : "Udaljeno brisanje završilo je %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Izmijenjena je vaša <strong>zaporka</strong> ili <strong>adresa e-pošte</strong>",
+ "Apps" : "Aplikacije",
"Wrong password" : "Pogrešna zaporka",
"Saved" : "Spremljeno",
"No user supplied" : "Nijedan korisnik nije podnesen",
@@ -63,6 +64,7 @@
"If you received this email, the email configuration seems to be correct." : "Ako ste primili ovu poruku e-pošte, čini se da je e-pošta pravilno konfigurirana.",
"Email could not be sent. Check your mail server log" : "Slanje poruke e-pošte nije uspjelo. Provjerite zapis poslužitelja e-pošte",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Došlo je do problema pri slanju poruke e-pošte. Pregledajte svoje postavke. (Pogreška: %s)",
+ "Users" : "Korisnici",
"Invalid user" : "Nevažeći korisnik",
"Invalid mail address" : "Nevažeća adresa e-pošte",
"Settings saved" : "Postavke spremljene",
@@ -94,7 +96,6 @@
"Go to %s" : "Idi na %s",
"Install Client" : "Instaliraj klijenta",
"Logged in user must be a subadmin" : "Korisnik koji je prijavljen mora biti podadministrator",
- "Apps" : "Aplikacije",
"Settings" : "Postavke",
"Personal" : "Osobno",
"Administration" : "Administracija",
diff --git a/apps/settings/l10n/hu.js b/apps/settings/l10n/hu.js
index 1613aa4bfca..65078dca2c4 100644
--- a/apps/settings/l10n/hu.js
+++ b/apps/settings/l10n/hu.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Távoli törlés indítva ezen: %1$s",
"Remote wipe has finished on %1$s" : "Távol törlés befejezve ezen: %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "A <strong>jelszava </strong> vagy <strong>e-mail-címe</strong> megváltozott",
+ "Apps" : "Alkalmazások",
"Could not remove app." : "Nem sikerült eltávolítani az alkalmazást.",
"Could not update app." : "Nem sikerült frissíteni az alkalmazást.",
"Wrong password" : "Hibás jelszó",
@@ -82,6 +83,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "Az e-mail nem küldhető el. Ellenőrizze a levelezőkiszolgáló naplójában.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hiba történt az e-mail küldésekor. Ellenőrizze a beállításokat. (Hiba: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Előbb meg kell adnia az e-mail-címét, mielőtt tesztelni tudná az e-mail küldést. Ehhez ugorjon ide: %s.",
+ "Users" : "Felhasználók",
"Invalid user" : "Érvénytelen felhasználó",
"Invalid mail address" : "Érvénytelen e-mail-cím",
"Settings saved" : "Beállítások mentve",
@@ -113,7 +115,6 @@ OC.L10N.register(
"Go to %s" : "Ugrás ide: %s",
"Install Client" : "Kliens telepítése",
"Logged in user must be a subadmin" : "Nem rendszergazda felhasználóként kell bejelentkezzen",
- "Apps" : "Alkalmazások",
"Settings" : "Beállítások",
"Personal" : "Személyes",
"Administration" : "Adminisztráció",
diff --git a/apps/settings/l10n/hu.json b/apps/settings/l10n/hu.json
index 183522128da..36c634cb46f 100644
--- a/apps/settings/l10n/hu.json
+++ b/apps/settings/l10n/hu.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Távoli törlés indítva ezen: %1$s",
"Remote wipe has finished on %1$s" : "Távol törlés befejezve ezen: %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "A <strong>jelszava </strong> vagy <strong>e-mail-címe</strong> megváltozott",
+ "Apps" : "Alkalmazások",
"Could not remove app." : "Nem sikerült eltávolítani az alkalmazást.",
"Could not update app." : "Nem sikerült frissíteni az alkalmazást.",
"Wrong password" : "Hibás jelszó",
@@ -80,6 +81,7 @@
"Email could not be sent. Check your mail server log" : "Az e-mail nem küldhető el. Ellenőrizze a levelezőkiszolgáló naplójában.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hiba történt az e-mail küldésekor. Ellenőrizze a beállításokat. (Hiba: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Előbb meg kell adnia az e-mail-címét, mielőtt tesztelni tudná az e-mail küldést. Ehhez ugorjon ide: %s.",
+ "Users" : "Felhasználók",
"Invalid user" : "Érvénytelen felhasználó",
"Invalid mail address" : "Érvénytelen e-mail-cím",
"Settings saved" : "Beállítások mentve",
@@ -111,7 +113,6 @@
"Go to %s" : "Ugrás ide: %s",
"Install Client" : "Kliens telepítése",
"Logged in user must be a subadmin" : "Nem rendszergazda felhasználóként kell bejelentkezzen",
- "Apps" : "Alkalmazások",
"Settings" : "Beállítások",
"Personal" : "Személyes",
"Administration" : "Adminisztráció",
diff --git a/apps/settings/l10n/ia.js b/apps/settings/l10n/ia.js
index 23322b661e1..2f1dad87922 100644
--- a/apps/settings/l10n/ia.js
+++ b/apps/settings/l10n/ia.js
@@ -20,6 +20,7 @@ OC.L10N.register(
"Administrator documentation" : "Documentation de administrator",
"User documentation" : "Documentation de usator",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Un problema occurreva durante le invio del e-posta. Per favor, revide tu configurationes. (Error: %s)",
+ "Users" : "Usatores",
"Invalid user" : "Usator invalide",
"Invalid mail address" : "Adresse de e-posta non valide",
"Settings saved" : "Configurationes salveguardate",
diff --git a/apps/settings/l10n/ia.json b/apps/settings/l10n/ia.json
index 0c926952993..779f3115a84 100644
--- a/apps/settings/l10n/ia.json
+++ b/apps/settings/l10n/ia.json
@@ -18,6 +18,7 @@
"Administrator documentation" : "Documentation de administrator",
"User documentation" : "Documentation de usator",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Un problema occurreva durante le invio del e-posta. Per favor, revide tu configurationes. (Error: %s)",
+ "Users" : "Usatores",
"Invalid user" : "Usator invalide",
"Invalid mail address" : "Adresse de e-posta non valide",
"Settings saved" : "Configurationes salveguardate",
diff --git a/apps/settings/l10n/id.js b/apps/settings/l10n/id.js
index 84d94ca90c6..cc469442856 100644
--- a/apps/settings/l10n/id.js
+++ b/apps/settings/l10n/id.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Pembersihan secara remote telah dimulai di %1$s",
"Remote wipe has finished on %1$s" : "Pembersihan secara remote telah selesai di %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Kata sandi</strong> atau <strong>surel</strong> Anda telah diubah",
+ "Apps" : "Aplikasi",
"Could not remove app." : "Tidak dapat hapus aplikasi.",
"Could not update app." : "Tidak dapat perbarui aplikasi.",
"Wrong password" : "Kata sandi salah",
@@ -71,6 +72,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "Surel tidak dapat dikirim. Periksa log server mail Anda",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Terjadi masalah saat mengirim surel. Mohon periksa kembali pengaturan Anda. (Kesalahan: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Kamu harus pilih alamat email pengguna sebelum bisa mengirin email-email percobaan. Pergilah ke %s jadi bisa pilih email pengguna.",
+ "Users" : "Pengguna",
"Invalid user" : "Pengguna tidak sah",
"Invalid mail address" : "Alamat surel salah",
"Settings saved" : "Pengaturan disimpan",
@@ -98,7 +100,6 @@ OC.L10N.register(
"Go to %s" : "Pergi ke %s",
"Install Client" : "Pasang Klien",
"Logged in user must be a subadmin" : "Masuk ke dalam pengguna harus sebagai seorang subadmin",
- "Apps" : "Aplikasi",
"Settings" : "Setelan",
"Personal" : "Personal",
"Administration" : "Administrasi",
diff --git a/apps/settings/l10n/id.json b/apps/settings/l10n/id.json
index 87f395ee3d8..c4ef821f7dd 100644
--- a/apps/settings/l10n/id.json
+++ b/apps/settings/l10n/id.json
@@ -46,6 +46,7 @@
"Remote wipe was started on %1$s" : "Pembersihan secara remote telah dimulai di %1$s",
"Remote wipe has finished on %1$s" : "Pembersihan secara remote telah selesai di %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Kata sandi</strong> atau <strong>surel</strong> Anda telah diubah",
+ "Apps" : "Aplikasi",
"Could not remove app." : "Tidak dapat hapus aplikasi.",
"Could not update app." : "Tidak dapat perbarui aplikasi.",
"Wrong password" : "Kata sandi salah",
@@ -69,6 +70,7 @@
"Email could not be sent. Check your mail server log" : "Surel tidak dapat dikirim. Periksa log server mail Anda",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Terjadi masalah saat mengirim surel. Mohon periksa kembali pengaturan Anda. (Kesalahan: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Kamu harus pilih alamat email pengguna sebelum bisa mengirin email-email percobaan. Pergilah ke %s jadi bisa pilih email pengguna.",
+ "Users" : "Pengguna",
"Invalid user" : "Pengguna tidak sah",
"Invalid mail address" : "Alamat surel salah",
"Settings saved" : "Pengaturan disimpan",
@@ -96,7 +98,6 @@
"Go to %s" : "Pergi ke %s",
"Install Client" : "Pasang Klien",
"Logged in user must be a subadmin" : "Masuk ke dalam pengguna harus sebagai seorang subadmin",
- "Apps" : "Aplikasi",
"Settings" : "Setelan",
"Personal" : "Personal",
"Administration" : "Administrasi",
diff --git a/apps/settings/l10n/is.js b/apps/settings/l10n/is.js
index f4bd3f4a018..d4d610a057a 100644
--- a/apps/settings/l10n/is.js
+++ b/apps/settings/l10n/is.js
@@ -43,6 +43,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Fjartengd útþurrkun var hafin á %1$s",
"Remote wipe has finished on %1$s" : "Fjartengdri útþurrkun er lokið á %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Breyting hefur orðið á <strong>lykilorði</strong> eða <strong>tölvupóstfangi</strong> þínu",
+ "Apps" : "Forrit",
"Wrong password" : "Rangt lykilorð",
"Saved" : "Vistað",
"No user supplied" : "Enginn notandi gefinn",
@@ -59,6 +60,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Fyrst að þú fékkst þennan tölvupóst, þá lítur út fyrir að tölvupóstuppsetningin sé í lagi.",
"Email could not be sent. Check your mail server log" : "Ekki var hægt að senda póst. Skoðaðu annál póstþjónsins",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Vandamál kom upp við að senda tölvupóst. Farðu yfir stillingarnar þínar. (Villa: %s)",
+ "Users" : "Notendur",
"Invalid user" : "Ógildur notandi",
"Invalid mail address" : "Ógilt tölvupóstfang",
"Settings saved" : "Stillingar vistaðar",
@@ -86,7 +88,6 @@ OC.L10N.register(
"Go to %s" : "Farðu í %s",
"Install Client" : "Setja upp biðlaraforrit",
"Logged in user must be a subadmin" : "Innskráður notandi verður að vera undirstjórnandi (subadmin)",
- "Apps" : "Forrit",
"Settings" : "Stillingar",
"Personal" : "Einka",
"Administration" : "Stjórnun",
diff --git a/apps/settings/l10n/is.json b/apps/settings/l10n/is.json
index 35577379101..72d04589072 100644
--- a/apps/settings/l10n/is.json
+++ b/apps/settings/l10n/is.json
@@ -41,6 +41,7 @@
"Remote wipe was started on %1$s" : "Fjartengd útþurrkun var hafin á %1$s",
"Remote wipe has finished on %1$s" : "Fjartengdri útþurrkun er lokið á %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Breyting hefur orðið á <strong>lykilorði</strong> eða <strong>tölvupóstfangi</strong> þínu",
+ "Apps" : "Forrit",
"Wrong password" : "Rangt lykilorð",
"Saved" : "Vistað",
"No user supplied" : "Enginn notandi gefinn",
@@ -57,6 +58,7 @@
"If you received this email, the email configuration seems to be correct." : "Fyrst að þú fékkst þennan tölvupóst, þá lítur út fyrir að tölvupóstuppsetningin sé í lagi.",
"Email could not be sent. Check your mail server log" : "Ekki var hægt að senda póst. Skoðaðu annál póstþjónsins",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Vandamál kom upp við að senda tölvupóst. Farðu yfir stillingarnar þínar. (Villa: %s)",
+ "Users" : "Notendur",
"Invalid user" : "Ógildur notandi",
"Invalid mail address" : "Ógilt tölvupóstfang",
"Settings saved" : "Stillingar vistaðar",
@@ -84,7 +86,6 @@
"Go to %s" : "Farðu í %s",
"Install Client" : "Setja upp biðlaraforrit",
"Logged in user must be a subadmin" : "Innskráður notandi verður að vera undirstjórnandi (subadmin)",
- "Apps" : "Forrit",
"Settings" : "Stillingar",
"Personal" : "Einka",
"Administration" : "Stjórnun",
diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js
index d21a1e85a9e..177d0730647 100644
--- a/apps/settings/l10n/it.js
+++ b/apps/settings/l10n/it.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Cancellazione remota avviata su %1$s",
"Remote wipe has finished on %1$s" : "Cancellazione remota terminata su %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "La tua<strong>password</strong> o <strong>email</strong> è stata modificata",
+ "Apps" : "Applicazioni",
"Could not remove app." : "Impossibile rimuovere l'app.",
"Could not update app." : "Impossibile aggiornare l'app.",
"Wrong password" : "Password errata",
@@ -75,6 +76,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "Il messaggio non può essere inviato. Controlla il log del tuo server di posta",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Si è verificato un problema durante l'invio dell'email. Controlla le tue impostazioni. (Errore: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Devi impostare la tua email prima di poter inviare email di prova. Vai in %s per farlo.",
+ "Users" : "Utenti",
"Invalid user" : "Utente non valido",
"Invalid mail address" : "Indirizzo email non valido",
"Settings saved" : "Impostazioni salvate",
@@ -106,7 +108,6 @@ OC.L10N.register(
"Go to %s" : "Vai a %s",
"Install Client" : "Installa client",
"Logged in user must be a subadmin" : "L'utente che ha eseguito l'accesso deve essere un sotto-amministratore ",
- "Apps" : "Applicazioni",
"Settings" : "Impostazioni",
"Personal" : "Personale",
"Administration" : "Amministrazione",
diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json
index b4b242f40ff..7978c52957c 100644
--- a/apps/settings/l10n/it.json
+++ b/apps/settings/l10n/it.json
@@ -46,6 +46,7 @@
"Remote wipe was started on %1$s" : "Cancellazione remota avviata su %1$s",
"Remote wipe has finished on %1$s" : "Cancellazione remota terminata su %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "La tua<strong>password</strong> o <strong>email</strong> è stata modificata",
+ "Apps" : "Applicazioni",
"Could not remove app." : "Impossibile rimuovere l'app.",
"Could not update app." : "Impossibile aggiornare l'app.",
"Wrong password" : "Password errata",
@@ -73,6 +74,7 @@
"Email could not be sent. Check your mail server log" : "Il messaggio non può essere inviato. Controlla il log del tuo server di posta",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Si è verificato un problema durante l'invio dell'email. Controlla le tue impostazioni. (Errore: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Devi impostare la tua email prima di poter inviare email di prova. Vai in %s per farlo.",
+ "Users" : "Utenti",
"Invalid user" : "Utente non valido",
"Invalid mail address" : "Indirizzo email non valido",
"Settings saved" : "Impostazioni salvate",
@@ -104,7 +106,6 @@
"Go to %s" : "Vai a %s",
"Install Client" : "Installa client",
"Logged in user must be a subadmin" : "L'utente che ha eseguito l'accesso deve essere un sotto-amministratore ",
- "Apps" : "Applicazioni",
"Settings" : "Impostazioni",
"Personal" : "Personale",
"Administration" : "Amministrazione",
diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js
index f9012ac0934..d37f92811de 100644
--- a/apps/settings/l10n/ja.js
+++ b/apps/settings/l10n/ja.js
@@ -48,6 +48,7 @@ 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>が更新されたとき",
+ "Apps" : "アプリ",
"Could not remove app." : "アプリを削除できませんでした。",
"Could not update app." : "アプリを更新できませんでした。",
"Wrong password" : "パスワードが間違っています",
@@ -80,6 +81,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "メールが送信できませんでした。メールサーバーのログを確認してください",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "メールの送信中に問題が発生しました。設定を確認してください。 (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "テストメールを送信する前に、ユーザーメールを設定する必要があります。%sから設定を行ってください。",
+ "Users" : "ユーザー",
"Invalid user" : "無効なユーザー",
"Invalid mail address" : "無効なメールアドレスです",
"Settings saved" : "設定を保存しました",
@@ -111,7 +113,6 @@ OC.L10N.register(
"Go to %s" : "%s に移動",
"Install Client" : "クライアントをインストール",
"Logged in user must be a subadmin" : "ログインユーザーはサブ管理者である必要があります",
- "Apps" : "アプリ",
"Settings" : "設定",
"Personal" : "個人",
"Administration" : "管理",
diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json
index ef34923cc66..000d355bf61 100644
--- a/apps/settings/l10n/ja.json
+++ b/apps/settings/l10n/ja.json
@@ -46,6 +46,7 @@
"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>が更新されたとき",
+ "Apps" : "アプリ",
"Could not remove app." : "アプリを削除できませんでした。",
"Could not update app." : "アプリを更新できませんでした。",
"Wrong password" : "パスワードが間違っています",
@@ -78,6 +79,7 @@
"Email could not be sent. Check your mail server log" : "メールが送信できませんでした。メールサーバーのログを確認してください",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "メールの送信中に問題が発生しました。設定を確認してください。 (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "テストメールを送信する前に、ユーザーメールを設定する必要があります。%sから設定を行ってください。",
+ "Users" : "ユーザー",
"Invalid user" : "無効なユーザー",
"Invalid mail address" : "無効なメールアドレスです",
"Settings saved" : "設定を保存しました",
@@ -109,7 +111,6 @@
"Go to %s" : "%s に移動",
"Install Client" : "クライアントをインストール",
"Logged in user must be a subadmin" : "ログインユーザーはサブ管理者である必要があります",
- "Apps" : "アプリ",
"Settings" : "設定",
"Personal" : "個人",
"Administration" : "管理",
diff --git a/apps/settings/l10n/ka_GE.js b/apps/settings/l10n/ka_GE.js
index fb6bafdf4d1..dfccb20e1b1 100644
--- a/apps/settings/l10n/ka_GE.js
+++ b/apps/settings/l10n/ka_GE.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "თქვენ ორ-ფაქტორიანი აუტენტიფიკაციით წარმატებით გაიარეთ ავტორიზაცია (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "ავტორიზაცია ორ-ფაქტორიანი აუტენტიფიკაციით ვერ მოხერხდა (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>თქვენი პაროლი</strong> ან <strong>ელ-ფოსტის მისამართი</strong> შეიცვალა",
+ "Apps" : "აპლიკაციები",
"Wrong password" : "არასწორი პაროლი",
"Saved" : "დამახსოვრდა",
"No user supplied" : "მომხმარებელი არ იქნა მოწოდებული",
@@ -38,6 +39,7 @@ OC.L10N.register(
"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)",
+ "Users" : "მომხმარებლები",
"Invalid user" : "არასწორი მომხმარებელი",
"Invalid mail address" : "არასწორი საფოსტო მისამართი",
"Settings saved" : "პარამეტრები შენახულია",
@@ -65,7 +67,6 @@ OC.L10N.register(
"Go to %s" : "გადადით %s-ზე",
"Install Client" : "დააყენეთ კლიენტი",
"Logged in user must be a subadmin" : "ავტორიზირებული მომხმარებელი უნდა იყოს ქვე-ადმინისტრატორი",
- "Apps" : "აპლიკაციები",
"Settings" : "პარამეტრები",
"Personal" : "პირადი",
"Administration" : "ადმინისტრაცია",
diff --git a/apps/settings/l10n/ka_GE.json b/apps/settings/l10n/ka_GE.json
index 3cd307201f9..a9edc533b2c 100644
--- a/apps/settings/l10n/ka_GE.json
+++ b/apps/settings/l10n/ka_GE.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "თქვენ ორ-ფაქტორიანი აუტენტიფიკაციით წარმატებით გაიარეთ ავტორიზაცია (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "ავტორიზაცია ორ-ფაქტორიანი აუტენტიფიკაციით ვერ მოხერხდა (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>თქვენი პაროლი</strong> ან <strong>ელ-ფოსტის მისამართი</strong> შეიცვალა",
+ "Apps" : "აპლიკაციები",
"Wrong password" : "არასწორი პაროლი",
"Saved" : "დამახსოვრდა",
"No user supplied" : "მომხმარებელი არ იქნა მოწოდებული",
@@ -36,6 +37,7 @@
"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)",
+ "Users" : "მომხმარებლები",
"Invalid user" : "არასწორი მომხმარებელი",
"Invalid mail address" : "არასწორი საფოსტო მისამართი",
"Settings saved" : "პარამეტრები შენახულია",
@@ -63,7 +65,6 @@
"Go to %s" : "გადადით %s-ზე",
"Install Client" : "დააყენეთ კლიენტი",
"Logged in user must be a subadmin" : "ავტორიზირებული მომხმარებელი უნდა იყოს ქვე-ადმინისტრატორი",
- "Apps" : "აპლიკაციები",
"Settings" : "პარამეტრები",
"Personal" : "პირადი",
"Administration" : "ადმინისტრაცია",
diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js
index 6dfca886999..4c92203220e 100644
--- a/apps/settings/l10n/ko.js
+++ b/apps/settings/l10n/ko.js
@@ -48,6 +48,7 @@ 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>이 변경됨",
+ "Apps" : "앱",
"Could not remove app." : "앱을 삭제할 수 없음",
"Could not update app." : "앱을 업데이트 할 수 없음",
"Wrong password" : "잘못된 암호",
@@ -80,6 +81,7 @@ OC.L10N.register(
"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(으)로 가십시오.",
+ "Users" : "사용자",
"Invalid user" : "잘못된 사용자",
"Invalid mail address" : "잘못된 이메일 주소",
"Settings saved" : "설정 저장됨",
@@ -111,7 +113,6 @@ OC.L10N.register(
"Go to %s" : "%s(으)로 이동",
"Install Client" : "클라이언트 설치",
"Logged in user must be a subadmin" : "로그인한 사용자는 부관리자여야 합니다.",
- "Apps" : "앱",
"Settings" : "설정",
"Personal" : "개인",
"Administration" : "관리",
diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json
index 76329230346..6b70340d6d5 100644
--- a/apps/settings/l10n/ko.json
+++ b/apps/settings/l10n/ko.json
@@ -46,6 +46,7 @@
"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>이 변경됨",
+ "Apps" : "앱",
"Could not remove app." : "앱을 삭제할 수 없음",
"Could not update app." : "앱을 업데이트 할 수 없음",
"Wrong password" : "잘못된 암호",
@@ -78,6 +79,7 @@
"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(으)로 가십시오.",
+ "Users" : "사용자",
"Invalid user" : "잘못된 사용자",
"Invalid mail address" : "잘못된 이메일 주소",
"Settings saved" : "설정 저장됨",
@@ -109,7 +111,6 @@
"Go to %s" : "%s(으)로 이동",
"Install Client" : "클라이언트 설치",
"Logged in user must be a subadmin" : "로그인한 사용자는 부관리자여야 합니다.",
- "Apps" : "앱",
"Settings" : "설정",
"Personal" : "개인",
"Administration" : "관리",
diff --git a/apps/settings/l10n/lt_LT.js b/apps/settings/l10n/lt_LT.js
index a2a747a7330..7d50b8120a9 100644
--- a/apps/settings/l10n/lt_LT.js
+++ b/apps/settings/l10n/lt_LT.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Nuotolinių duomenų ištrynimas buvo pradėtas ties %1$s",
"Remote wipe has finished on %1$s" : "Nuotolinių duomenų ištrynimas užbaigtas ties %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Jūsų <strong>slaptažodis</strong> ar <strong>el. paštas</strong> buvo pakeisti",
+ "Apps" : "Programėlės",
"Could not remove app." : "Nepavyko pašalinti programėlės.",
"Could not update app." : "Nepavyko atnaujinti programėlės.",
"Wrong password" : "Neteisingas slaptažodis",
@@ -73,6 +74,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "El. laiškas nebuvo išsiųstas. Peržiūrėkite savo pašto serverio žurnalą.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Siunčiant el. laišką atsirado problemų. Peržiūrėkite savo nustatymus. (Klaida: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Prieš tai, kai galėsite siųsti bandomuosius el. laiškus, turite nusistatyti naudotojo el. paštą. Norėdami tai atlikti, pereikite į %s.",
+ "Users" : "Naudotojai",
"Invalid user" : "Neteisingas naudotojas",
"Invalid mail address" : "Neteisingas pašto adresas",
"Settings saved" : "Nustatymai įrašyti",
@@ -102,7 +104,6 @@ OC.L10N.register(
"Go to %s" : "Pereiti į %s",
"Install Client" : "Įdiegti kliento programą",
"Logged in user must be a subadmin" : "Prisijungęs naudotojas privalo būti administratoriaus pavaduotojas",
- "Apps" : "Programėlės",
"Settings" : "Nustatymai",
"Personal" : "Asmeniniai",
"Administration" : "Administravimas",
diff --git a/apps/settings/l10n/lt_LT.json b/apps/settings/l10n/lt_LT.json
index 749ffb8b228..27dfce43484 100644
--- a/apps/settings/l10n/lt_LT.json
+++ b/apps/settings/l10n/lt_LT.json
@@ -46,6 +46,7 @@
"Remote wipe was started on %1$s" : "Nuotolinių duomenų ištrynimas buvo pradėtas ties %1$s",
"Remote wipe has finished on %1$s" : "Nuotolinių duomenų ištrynimas užbaigtas ties %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Jūsų <strong>slaptažodis</strong> ar <strong>el. paštas</strong> buvo pakeisti",
+ "Apps" : "Programėlės",
"Could not remove app." : "Nepavyko pašalinti programėlės.",
"Could not update app." : "Nepavyko atnaujinti programėlės.",
"Wrong password" : "Neteisingas slaptažodis",
@@ -71,6 +72,7 @@
"Email could not be sent. Check your mail server log" : "El. laiškas nebuvo išsiųstas. Peržiūrėkite savo pašto serverio žurnalą.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Siunčiant el. laišką atsirado problemų. Peržiūrėkite savo nustatymus. (Klaida: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Prieš tai, kai galėsite siųsti bandomuosius el. laiškus, turite nusistatyti naudotojo el. paštą. Norėdami tai atlikti, pereikite į %s.",
+ "Users" : "Naudotojai",
"Invalid user" : "Neteisingas naudotojas",
"Invalid mail address" : "Neteisingas pašto adresas",
"Settings saved" : "Nustatymai įrašyti",
@@ -100,7 +102,6 @@
"Go to %s" : "Pereiti į %s",
"Install Client" : "Įdiegti kliento programą",
"Logged in user must be a subadmin" : "Prisijungęs naudotojas privalo būti administratoriaus pavaduotojas",
- "Apps" : "Programėlės",
"Settings" : "Nustatymai",
"Personal" : "Asmeniniai",
"Administration" : "Administravimas",
diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js
index fbc4f160a17..8bd1d0fde38 100644
--- a/apps/settings/l10n/lv.js
+++ b/apps/settings/l10n/lv.js
@@ -16,6 +16,7 @@ OC.L10N.register(
"Unable to retrieve the group list" : "Nevarēja saņemt grupu sarakstu",
"You successfully logged in using two-factor authentication (%1$s)" : "Esat veiksmīgi pieteicies, izmantojot divpakāpju autentifikācija (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Pieteikšanās mēģinājums, izmantojot divpakāpju autentifikāciju neizdevās (%1$s)",
+ "Apps" : "Lietotnes",
"Wrong password" : "Nepareiza parole",
"Saved" : "Saglabāts",
"No user supplied" : "Nav norādīts lietotājs",
@@ -25,13 +26,13 @@ OC.L10N.register(
"Administrator documentation" : "Administratora dokumentācija",
"User documentation" : "Lietotāja dokumentācija",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Radās kļūda, nosūtot e-pastu. Lūdzu, pārskatiet savus iestatījumus. (Kļūda: %s)",
+ "Users" : "Lietotāji",
"Invalid user" : "Nepareizs lietotājs",
"Invalid mail address" : "Nepareiza e-pasta adrese",
"Settings saved" : "Iestatījumi saglabāti",
"Unable to change full name" : "Nav iespējams nomainīt jūsu pilno vārdu",
"Unable to change email address" : "Nevar mainīt e-pasta adresi",
"Your %s account was created" : "Konts %s ir izveidots",
- "Apps" : "Lietotnes",
"Settings" : "Iestatījumi",
"Personal" : "Personīgs",
"Administration" : "Administrēšana",
diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json
index 27ab58ae415..39b8a469d82 100644
--- a/apps/settings/l10n/lv.json
+++ b/apps/settings/l10n/lv.json
@@ -14,6 +14,7 @@
"Unable to retrieve the group list" : "Nevarēja saņemt grupu sarakstu",
"You successfully logged in using two-factor authentication (%1$s)" : "Esat veiksmīgi pieteicies, izmantojot divpakāpju autentifikācija (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Pieteikšanās mēģinājums, izmantojot divpakāpju autentifikāciju neizdevās (%1$s)",
+ "Apps" : "Lietotnes",
"Wrong password" : "Nepareiza parole",
"Saved" : "Saglabāts",
"No user supplied" : "Nav norādīts lietotājs",
@@ -23,13 +24,13 @@
"Administrator documentation" : "Administratora dokumentācija",
"User documentation" : "Lietotāja dokumentācija",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Radās kļūda, nosūtot e-pastu. Lūdzu, pārskatiet savus iestatījumus. (Kļūda: %s)",
+ "Users" : "Lietotāji",
"Invalid user" : "Nepareizs lietotājs",
"Invalid mail address" : "Nepareiza e-pasta adrese",
"Settings saved" : "Iestatījumi saglabāti",
"Unable to change full name" : "Nav iespējams nomainīt jūsu pilno vārdu",
"Unable to change email address" : "Nevar mainīt e-pasta adresi",
"Your %s account was created" : "Konts %s ir izveidots",
- "Apps" : "Lietotnes",
"Settings" : "Iestatījumi",
"Personal" : "Personīgs",
"Administration" : "Administrēšana",
diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js
index c50a6cf3f26..fe6e34b2e9d 100644
--- a/apps/settings/l10n/mk.js
+++ b/apps/settings/l10n/mk.js
@@ -48,6 +48,7 @@ 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> е променета",
+ "Apps" : "Аппликации",
"Could not remove app." : "Не може да ја се избрише апликацијата.",
"Could not update app." : "Не може да ја се ажурира апликацијата.",
"Wrong password" : "Погрешна лозинка",
@@ -75,6 +76,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "Порака преку Е-пошта неможе да се испрати. Проверете го записот во е-пошта серверот",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Се случи грешка при праќање на порака. Ве молам проверете ги вашите параметри. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки. Одете во %s за тоа.",
+ "Users" : "Корисници",
"Invalid user" : "Неправилен корисник",
"Invalid mail address" : "Неправилна електронска адреса/пошта",
"Settings saved" : "Параматрите се зачувани",
@@ -106,7 +108,6 @@ OC.L10N.register(
"Go to %s" : "Оди до %s",
"Install Client" : "Инсталирај клиент",
"Logged in user must be a subadmin" : "Најавениот корисник мора да биде подадминистратор",
- "Apps" : "Аппликации",
"Settings" : "Параметри",
"Personal" : "Лично",
"Administration" : "Администрација",
diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json
index fe3e80c419f..eff7a0fa745 100644
--- a/apps/settings/l10n/mk.json
+++ b/apps/settings/l10n/mk.json
@@ -46,6 +46,7 @@
"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> е променета",
+ "Apps" : "Аппликации",
"Could not remove app." : "Не може да ја се избрише апликацијата.",
"Could not update app." : "Не може да ја се ажурира апликацијата.",
"Wrong password" : "Погрешна лозинка",
@@ -73,6 +74,7 @@
"Email could not be sent. Check your mail server log" : "Порака преку Е-пошта неможе да се испрати. Проверете го записот во е-пошта серверот",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Се случи грешка при праќање на порака. Ве молам проверете ги вашите параметри. (Error: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки. Одете во %s за тоа.",
+ "Users" : "Корисници",
"Invalid user" : "Неправилен корисник",
"Invalid mail address" : "Неправилна електронска адреса/пошта",
"Settings saved" : "Параматрите се зачувани",
@@ -104,7 +106,6 @@
"Go to %s" : "Оди до %s",
"Install Client" : "Инсталирај клиент",
"Logged in user must be a subadmin" : "Најавениот корисник мора да биде подадминистратор",
- "Apps" : "Аппликации",
"Settings" : "Параметри",
"Personal" : "Лично",
"Administration" : "Администрација",
diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js
index d2a6fd22ff7..84858446108 100644
--- a/apps/settings/l10n/nb.js
+++ b/apps/settings/l10n/nb.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Fjernsletting ble startet på %1$s",
"Remote wipe has finished on %1$s" : "Fjernsletting er ferdig på %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ditt <strong>passord</strong> eller din <strong>e-postadresse</strong> ble endret",
+ "Apps" : "Apper",
"Could not remove app." : "Kunne ikke fjerne appen.",
"Could not update app." : "Kunne ikke oppdatere appen.",
"Wrong password" : "Feil passord",
@@ -78,6 +79,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Hvis du mottar denne e-posten, er e-postoppsettet rett.",
"Email could not be sent. Check your mail server log" : "E-post kunne ikke sendes. Sjekk serverloggen på din e-postserver",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Et problem oppsto med sending av e-post. Sjekk innstillingene. (Feil: %s)",
+ "Users" : "Brukere",
"Invalid user" : "Ugyldig bruker",
"Invalid mail address" : "Ugyldig e-postadresse",
"Settings saved" : "Innstillinger lagret",
@@ -108,7 +110,6 @@ OC.L10N.register(
"Go to %s" : "Gå til %s",
"Install Client" : "Installer klient",
"Logged in user must be a subadmin" : "Innlogget bruker må være subadministrator",
- "Apps" : "Apper",
"Settings" : "Innstillinger",
"Personal" : "Personlig",
"Administration" : "Administrasjon",
diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json
index adbfbbbdd7a..17d0d06bbd9 100644
--- a/apps/settings/l10n/nb.json
+++ b/apps/settings/l10n/nb.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Fjernsletting ble startet på %1$s",
"Remote wipe has finished on %1$s" : "Fjernsletting er ferdig på %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ditt <strong>passord</strong> eller din <strong>e-postadresse</strong> ble endret",
+ "Apps" : "Apper",
"Could not remove app." : "Kunne ikke fjerne appen.",
"Could not update app." : "Kunne ikke oppdatere appen.",
"Wrong password" : "Feil passord",
@@ -76,6 +77,7 @@
"If you received this email, the email configuration seems to be correct." : "Hvis du mottar denne e-posten, er e-postoppsettet rett.",
"Email could not be sent. Check your mail server log" : "E-post kunne ikke sendes. Sjekk serverloggen på din e-postserver",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Et problem oppsto med sending av e-post. Sjekk innstillingene. (Feil: %s)",
+ "Users" : "Brukere",
"Invalid user" : "Ugyldig bruker",
"Invalid mail address" : "Ugyldig e-postadresse",
"Settings saved" : "Innstillinger lagret",
@@ -106,7 +108,6 @@
"Go to %s" : "Gå til %s",
"Install Client" : "Installer klient",
"Logged in user must be a subadmin" : "Innlogget bruker må være subadministrator",
- "Apps" : "Apper",
"Settings" : "Innstillinger",
"Personal" : "Personlig",
"Administration" : "Administrasjon",
diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js
index c29a3a8333b..85f6844f279 100644
--- a/apps/settings/l10n/nl.js
+++ b/apps/settings/l10n/nl.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Wissen op afstand gestart op %1$s",
"Remote wipe has finished on %1$s" : "Wissen op afstand voltooid op %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Je <strong>wachtwoord</strong> of <strong>e-mailadres</strong> is gewijzigd",
+ "Apps" : "Apps",
"Wrong password" : "Onjuist wachtwoord",
"Unable to change personal password" : "Kan persoonlijk wachtwoord niet wijzigen",
"Saved" : "Opgeslagen",
@@ -74,6 +75,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Als je deze e-mail hebt ontvangen, dan lijken de e-mailinstellingen correct.",
"Email could not be sent. Check your mail server log" : "Er kon geen e-mail verstuurd worden. Controleer je server log files",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Er ontstond een probleem bij het versturen van de e-mail. Controleer je instellingen. (Fout: %s)",
+ "Users" : "Gebruikers",
"Invalid user" : "Ongeldige gebruiker",
"Invalid mail address" : "Ongeldig e-mailadres",
"Settings saved" : "Instellingen opgeslagen",
@@ -105,7 +107,6 @@ OC.L10N.register(
"Go to %s" : "Ga naar %s",
"Install Client" : "Installeer Client",
"Logged in user must be a subadmin" : "Ingelogde gebruiker moet een subbeheerder zijn",
- "Apps" : "Apps",
"Settings" : "Instellingen",
"Personal" : "Persoonlijk",
"Administration" : "Beheer",
diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json
index 702c03b4b76..fc8351e2fb7 100644
--- a/apps/settings/l10n/nl.json
+++ b/apps/settings/l10n/nl.json
@@ -46,6 +46,7 @@
"Remote wipe was started on %1$s" : "Wissen op afstand gestart op %1$s",
"Remote wipe has finished on %1$s" : "Wissen op afstand voltooid op %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Je <strong>wachtwoord</strong> of <strong>e-mailadres</strong> is gewijzigd",
+ "Apps" : "Apps",
"Wrong password" : "Onjuist wachtwoord",
"Unable to change personal password" : "Kan persoonlijk wachtwoord niet wijzigen",
"Saved" : "Opgeslagen",
@@ -72,6 +73,7 @@
"If you received this email, the email configuration seems to be correct." : "Als je deze e-mail hebt ontvangen, dan lijken de e-mailinstellingen correct.",
"Email could not be sent. Check your mail server log" : "Er kon geen e-mail verstuurd worden. Controleer je server log files",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Er ontstond een probleem bij het versturen van de e-mail. Controleer je instellingen. (Fout: %s)",
+ "Users" : "Gebruikers",
"Invalid user" : "Ongeldige gebruiker",
"Invalid mail address" : "Ongeldig e-mailadres",
"Settings saved" : "Instellingen opgeslagen",
@@ -103,7 +105,6 @@
"Go to %s" : "Ga naar %s",
"Install Client" : "Installeer Client",
"Logged in user must be a subadmin" : "Ingelogde gebruiker moet een subbeheerder zijn",
- "Apps" : "Apps",
"Settings" : "Instellingen",
"Personal" : "Persoonlijk",
"Administration" : "Beheer",
diff --git a/apps/settings/l10n/nn_NO.js b/apps/settings/l10n/nn_NO.js
index a700c8a941e..5c89954a1ac 100644
--- a/apps/settings/l10n/nn_NO.js
+++ b/apps/settings/l10n/nn_NO.js
@@ -15,6 +15,7 @@ OC.L10N.register(
"Strong password" : "Sterkt passord",
"Groups" : "Grupper",
"Group list is empty" : "Gruppelista er tom",
+ "Apps" : "Applikasjonar",
"Wrong password" : "Feil passord",
"Saved" : "Lagra",
"No user supplied" : "Ingen brukar gjeve",
@@ -22,6 +23,7 @@ OC.L10N.register(
"Wrong admin recovery password. Please check the password and try again." : "Feil admingjenopprettingspassord. Ver venleg og sjekk passordet og prøv igjen.",
"Administrator documentation" : "Administratordokumentasjon",
"User documentation" : "Brukardokumentasjon",
+ "Users" : "Brukarare",
"Invalid mail address" : "Ugyldig e--postadresse",
"Welcome aboard" : "Velkomen ombord",
"Welcome aboard %s" : "Velkomen ombord %s",
@@ -29,7 +31,6 @@ OC.L10N.register(
"Set your password" : "Vel eit passord",
"Go to %s" : "Gå til %s",
"Install Client" : "Installer klient",
- "Apps" : "Applikasjonar",
"Settings" : "Instillingar",
"Personal" : "Personleg",
"Administration" : "Administrasjon",
diff --git a/apps/settings/l10n/nn_NO.json b/apps/settings/l10n/nn_NO.json
index 50340421d6d..a63de9a3677 100644
--- a/apps/settings/l10n/nn_NO.json
+++ b/apps/settings/l10n/nn_NO.json
@@ -13,6 +13,7 @@
"Strong password" : "Sterkt passord",
"Groups" : "Grupper",
"Group list is empty" : "Gruppelista er tom",
+ "Apps" : "Applikasjonar",
"Wrong password" : "Feil passord",
"Saved" : "Lagra",
"No user supplied" : "Ingen brukar gjeve",
@@ -20,6 +21,7 @@
"Wrong admin recovery password. Please check the password and try again." : "Feil admingjenopprettingspassord. Ver venleg og sjekk passordet og prøv igjen.",
"Administrator documentation" : "Administratordokumentasjon",
"User documentation" : "Brukardokumentasjon",
+ "Users" : "Brukarare",
"Invalid mail address" : "Ugyldig e--postadresse",
"Welcome aboard" : "Velkomen ombord",
"Welcome aboard %s" : "Velkomen ombord %s",
@@ -27,7 +29,6 @@
"Set your password" : "Vel eit passord",
"Go to %s" : "Gå til %s",
"Install Client" : "Installer klient",
- "Apps" : "Applikasjonar",
"Settings" : "Instillingar",
"Personal" : "Personleg",
"Administration" : "Administrasjon",
diff --git a/apps/settings/l10n/oc.js b/apps/settings/l10n/oc.js
index a59fa1f5c23..829e8573b3e 100644
--- a/apps/settings/l10n/oc.js
+++ b/apps/settings/l10n/oc.js
@@ -38,6 +38,7 @@ OC.L10N.register(
"You renamed app password \"{token}\" to \"{newToken}\"" : "Avètz renommat lo senhal d’aplicacion « {token} » en « {newToken} »",
"Security" : "Seguretat",
"You successfully logged in using two-factor authentication (%1$s)" : "Vos sètz corrèctament connectat via l’autentificacion a dos factors (%1$s)",
+ "Apps" : "Aplicacions",
"Wrong password" : "Wrong password",
"Saved" : "Enregistrat",
"Authentication error" : "Error d’autentificacion",
@@ -45,6 +46,7 @@ OC.L10N.register(
"Invalid SMTP password." : "Senhal SMTP invalid.",
"Email setting test" : "Paramètres email de pròva",
"Well done, %s!" : "Felicitacion, %s !",
+ "Users" : "Utilizaires",
"Invalid user" : "Utilizaire invalid",
"Invalid mail address" : "Adreça email invalida",
"Settings saved" : "Paramètres enregistrats",
@@ -54,7 +56,6 @@ OC.L10N.register(
"Set your password" : "Definir vòstre senhal",
"Go to %s" : "Anar a %s",
"Install Client" : "Installar client",
- "Apps" : "Aplicacions",
"Settings" : "Paramètres",
"Personal" : "Personal",
"Administration" : "Administracion",
diff --git a/apps/settings/l10n/oc.json b/apps/settings/l10n/oc.json
index 8ea1b10baed..0563e841a2f 100644
--- a/apps/settings/l10n/oc.json
+++ b/apps/settings/l10n/oc.json
@@ -36,6 +36,7 @@
"You renamed app password \"{token}\" to \"{newToken}\"" : "Avètz renommat lo senhal d’aplicacion « {token} » en « {newToken} »",
"Security" : "Seguretat",
"You successfully logged in using two-factor authentication (%1$s)" : "Vos sètz corrèctament connectat via l’autentificacion a dos factors (%1$s)",
+ "Apps" : "Aplicacions",
"Wrong password" : "Wrong password",
"Saved" : "Enregistrat",
"Authentication error" : "Error d’autentificacion",
@@ -43,6 +44,7 @@
"Invalid SMTP password." : "Senhal SMTP invalid.",
"Email setting test" : "Paramètres email de pròva",
"Well done, %s!" : "Felicitacion, %s !",
+ "Users" : "Utilizaires",
"Invalid user" : "Utilizaire invalid",
"Invalid mail address" : "Adreça email invalida",
"Settings saved" : "Paramètres enregistrats",
@@ -52,7 +54,6 @@
"Set your password" : "Definir vòstre senhal",
"Go to %s" : "Anar a %s",
"Install Client" : "Installar client",
- "Apps" : "Aplicacions",
"Settings" : "Paramètres",
"Personal" : "Personal",
"Administration" : "Administracion",
diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js
index 61495cb9e9b..b7b583acea5 100644
--- a/apps/settings/l10n/pl.js
+++ b/apps/settings/l10n/pl.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Zdalne czyszczenie zostało uruchomione w %1$s",
"Remote wipe has finished on %1$s" : "Zdalne czyszczenie zakończyło się w %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Twoje <strong>hasło</strong> lub <strong>e-mail</strong> został zmieniony",
+ "Apps" : "Aplikacje",
"Could not remove app." : "Usuwanie aplikacji nie powiodło się.",
"Could not update app." : "Nie można uaktualnić aplikacji.",
"Wrong password" : "Złe hasło",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "E-mail nie został wysłany. Sprawdź logi swojego serwera poczty",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Wystąpił problem podczas wysyłania wiadomości e-mail. Zmień ustawienia. (Błąd: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Musisz ustawić swój adres e-mail użytkownika, zanim będziesz mógł wysyłać e-maile testowe. Przejdź do %s.",
+ "Users" : "Użytkownicy",
"Invalid user" : "Nieprawidłowy użytkownik",
"Invalid mail address" : "Nieprawidłowy adres e-mail",
"Settings saved" : "Zapisano ustawienia",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "Przejdź do %s",
"Install Client" : "Zainstaluj klienta",
"Logged in user must be a subadmin" : "Zalogowany użytkownik musi być współadminem",
- "Apps" : "Aplikacje",
"Settings" : "Ustawienia",
"Personal" : "Osobiste",
"Administration" : "Administracja",
diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json
index 34eda24c9a0..68b50400ff4 100644
--- a/apps/settings/l10n/pl.json
+++ b/apps/settings/l10n/pl.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Zdalne czyszczenie zostało uruchomione w %1$s",
"Remote wipe has finished on %1$s" : "Zdalne czyszczenie zakończyło się w %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Twoje <strong>hasło</strong> lub <strong>e-mail</strong> został zmieniony",
+ "Apps" : "Aplikacje",
"Could not remove app." : "Usuwanie aplikacji nie powiodło się.",
"Could not update app." : "Nie można uaktualnić aplikacji.",
"Wrong password" : "Złe hasło",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "E-mail nie został wysłany. Sprawdź logi swojego serwera poczty",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Wystąpił problem podczas wysyłania wiadomości e-mail. Zmień ustawienia. (Błąd: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Musisz ustawić swój adres e-mail użytkownika, zanim będziesz mógł wysyłać e-maile testowe. Przejdź do %s.",
+ "Users" : "Użytkownicy",
"Invalid user" : "Nieprawidłowy użytkownik",
"Invalid mail address" : "Nieprawidłowy adres e-mail",
"Settings saved" : "Zapisano ustawienia",
@@ -112,7 +114,6 @@
"Go to %s" : "Przejdź do %s",
"Install Client" : "Zainstaluj klienta",
"Logged in user must be a subadmin" : "Zalogowany użytkownik musi być współadminem",
- "Apps" : "Aplikacje",
"Settings" : "Ustawienia",
"Personal" : "Osobiste",
"Administration" : "Administracja",
diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js
index ad1f206386e..b551481eeec 100644
--- a/apps/settings/l10n/pt_BR.js
+++ b/apps/settings/l10n/pt_BR.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Limpeza remota iniciou em %1$s",
"Remote wipe has finished on %1$s" : "Limpeza remota terminou em %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Sua <strong>senha</strong> ou <strong>e-mail</strong> foram alterados",
+ "Apps" : "Aplicativos",
"Could not remove app." : "Não foi possível remover o app.",
"Could not update app." : "Não foi possível atualizar o app.",
"Wrong password" : "Senha incorreta",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "O e-mail não pôde ser enviado. Verifique o log do servidor de e-mail",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o e-mail. Por favor, revise suas configurações. (Erro: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Você precisa definir seu e-mail de usuário antes de poder enviar e-mails de teste. Vá a %s para isso.",
+ "Users" : "Usuários",
"Invalid user" : "Usuário inválido",
"Invalid mail address" : "Endereço de e-mail inválido",
"Settings saved" : "Configurações salvas",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "Ir para %s",
"Install Client" : "Instalar Cliente",
"Logged in user must be a subadmin" : "Usuário logado deve ser um subadministrador",
- "Apps" : "Aplicativos",
"Settings" : "Configurações",
"Personal" : "Pessoal",
"Administration" : "Administração",
diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json
index 1cb1c7a11cf..5860732b2b2 100644
--- a/apps/settings/l10n/pt_BR.json
+++ b/apps/settings/l10n/pt_BR.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Limpeza remota iniciou em %1$s",
"Remote wipe has finished on %1$s" : "Limpeza remota terminou em %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Sua <strong>senha</strong> ou <strong>e-mail</strong> foram alterados",
+ "Apps" : "Aplicativos",
"Could not remove app." : "Não foi possível remover o app.",
"Could not update app." : "Não foi possível atualizar o app.",
"Wrong password" : "Senha incorreta",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "O e-mail não pôde ser enviado. Verifique o log do servidor de e-mail",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o e-mail. Por favor, revise suas configurações. (Erro: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Você precisa definir seu e-mail de usuário antes de poder enviar e-mails de teste. Vá a %s para isso.",
+ "Users" : "Usuários",
"Invalid user" : "Usuário inválido",
"Invalid mail address" : "Endereço de e-mail inválido",
"Settings saved" : "Configurações salvas",
@@ -112,7 +114,6 @@
"Go to %s" : "Ir para %s",
"Install Client" : "Instalar Cliente",
"Logged in user must be a subadmin" : "Usuário logado deve ser um subadministrador",
- "Apps" : "Aplicativos",
"Settings" : "Configurações",
"Personal" : "Pessoal",
"Administration" : "Administração",
diff --git a/apps/settings/l10n/pt_PT.js b/apps/settings/l10n/pt_PT.js
index abf5da4ecd3..83e8f19664f 100644
--- a/apps/settings/l10n/pt_PT.js
+++ b/apps/settings/l10n/pt_PT.js
@@ -28,6 +28,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Autenticado com sucesso utilizando autenticação de dois factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Tentativa falhada de autenticação utilizando dois factores (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "A <strong>password</strong> ou <strong>email</strong> foram modificados",
+ "Apps" : "Apps",
"Wrong password" : "Palavra-passe errada",
"Saved" : "Guardado",
"No user supplied" : "Nenhum utilizador especificado",
@@ -43,6 +44,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Se recebeu este email, a configuração do serviço de email deverá estar correcta.",
"Email could not be sent. Check your mail server log" : "O email não pode ser enviado. Por favor verifique os logs do seu servidor de e-mail.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o e-mail. Por favor verifique as suas definições. (Erro: %s)",
+ "Users" : "Utilizadores",
"Invalid user" : "Utilizador inválido",
"Invalid mail address" : "Endereço de correio eletrónico inválido",
"Settings saved" : "Definições guardadas",
@@ -69,7 +71,6 @@ OC.L10N.register(
"Set your password" : "Escolher senha",
"Go to %s" : "Ir para %s",
"Install Client" : "Instalar cliente",
- "Apps" : "Apps",
"Settings" : "Configurações",
"Personal" : "Pessoal",
"Administration" : "Administração",
diff --git a/apps/settings/l10n/pt_PT.json b/apps/settings/l10n/pt_PT.json
index f1d5995a016..6aa3f838bac 100644
--- a/apps/settings/l10n/pt_PT.json
+++ b/apps/settings/l10n/pt_PT.json
@@ -26,6 +26,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Autenticado com sucesso utilizando autenticação de dois factores (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Tentativa falhada de autenticação utilizando dois factores (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "A <strong>password</strong> ou <strong>email</strong> foram modificados",
+ "Apps" : "Apps",
"Wrong password" : "Palavra-passe errada",
"Saved" : "Guardado",
"No user supplied" : "Nenhum utilizador especificado",
@@ -41,6 +42,7 @@
"If you received this email, the email configuration seems to be correct." : "Se recebeu este email, a configuração do serviço de email deverá estar correcta.",
"Email could not be sent. Check your mail server log" : "O email não pode ser enviado. Por favor verifique os logs do seu servidor de e-mail.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o e-mail. Por favor verifique as suas definições. (Erro: %s)",
+ "Users" : "Utilizadores",
"Invalid user" : "Utilizador inválido",
"Invalid mail address" : "Endereço de correio eletrónico inválido",
"Settings saved" : "Definições guardadas",
@@ -67,7 +69,6 @@
"Set your password" : "Escolher senha",
"Go to %s" : "Ir para %s",
"Install Client" : "Instalar cliente",
- "Apps" : "Apps",
"Settings" : "Configurações",
"Personal" : "Pessoal",
"Administration" : "Administração",
diff --git a/apps/settings/l10n/ro.js b/apps/settings/l10n/ro.js
index 02f6c0c2630..bce9c50ff99 100644
--- a/apps/settings/l10n/ro.js
+++ b/apps/settings/l10n/ro.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Ștergerea de la distanță a fost pornită pe %1$s",
"Remote wipe has finished on %1$s" : "Ștergerea de la distanță s-a încheiat pe %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Parola </strong> sau <strong>mailul </strong>a fost modificat",
+ "Apps" : "Aplicații",
"Wrong password" : "Parolă greșită",
"Unable to change personal password" : "Nu se poate schimba parola personală",
"Saved" : "Salvat",
@@ -67,6 +68,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Daca primești acest mail, configurările de email au fost efectuate corect.",
"Email could not be sent. Check your mail server log" : "Mesajul nu a putut fi trimis. Verifică logul serverului de mail.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : " A apărut o problemă la trimiterea emailului. Verifică-ți setărie. (Eroare: %s)",
+ "Users" : "Utilizatori",
"Invalid user" : "Utilizator invalid",
"Invalid mail address" : "Adresa mail invalidă",
"Settings saved" : "Setările au fost salvate",
@@ -92,7 +94,6 @@ OC.L10N.register(
"Set your password" : "Setează parola",
"Install Client" : "Instalează client",
"Logged in user must be a subadmin" : "Utilizatorul logat trebuie să fie un subadmin",
- "Apps" : "Aplicații",
"Settings" : "Setări",
"Personal" : "Personal",
"Administration" : "Administrare",
diff --git a/apps/settings/l10n/ro.json b/apps/settings/l10n/ro.json
index c724036e381..996b3439904 100644
--- a/apps/settings/l10n/ro.json
+++ b/apps/settings/l10n/ro.json
@@ -46,6 +46,7 @@
"Remote wipe was started on %1$s" : "Ștergerea de la distanță a fost pornită pe %1$s",
"Remote wipe has finished on %1$s" : "Ștergerea de la distanță s-a încheiat pe %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Parola </strong> sau <strong>mailul </strong>a fost modificat",
+ "Apps" : "Aplicații",
"Wrong password" : "Parolă greșită",
"Unable to change personal password" : "Nu se poate schimba parola personală",
"Saved" : "Salvat",
@@ -65,6 +66,7 @@
"If you received this email, the email configuration seems to be correct." : "Daca primești acest mail, configurările de email au fost efectuate corect.",
"Email could not be sent. Check your mail server log" : "Mesajul nu a putut fi trimis. Verifică logul serverului de mail.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : " A apărut o problemă la trimiterea emailului. Verifică-ți setărie. (Eroare: %s)",
+ "Users" : "Utilizatori",
"Invalid user" : "Utilizator invalid",
"Invalid mail address" : "Adresa mail invalidă",
"Settings saved" : "Setările au fost salvate",
@@ -90,7 +92,6 @@
"Set your password" : "Setează parola",
"Install Client" : "Instalează client",
"Logged in user must be a subadmin" : "Utilizatorul logat trebuie să fie un subadmin",
- "Apps" : "Aplicații",
"Settings" : "Setări",
"Personal" : "Personal",
"Administration" : "Administrare",
diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js
index 3e6ab0f5881..dc944ee7b71 100644
--- a/apps/settings/l10n/ru.js
+++ b/apps/settings/l10n/ru.js
@@ -48,6 +48,7 @@ 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> были изменены",
+ "Apps" : "Приложения",
"Could not remove app." : "Не удалось удалить приложение.",
"Could not update app." : "Не удалось обновить приложение.",
"Wrong password" : "Неверный пароль",
@@ -80,6 +81,7 @@ OC.L10N.register(
"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.",
+ "Users" : "Пользователи",
"Invalid user" : "Неверный пользователь",
"Invalid mail address" : "Недопустимый адрес электронной почты",
"Settings saved" : "Настройки сохранены",
@@ -111,7 +113,6 @@ OC.L10N.register(
"Go to %s" : "Перейти к %s",
"Install Client" : "Установить программу-клиент",
"Logged in user must be a subadmin" : "Вошедший в систему пользователь должен обладать правами суб-администратора",
- "Apps" : "Приложения",
"Settings" : "Настройки",
"Personal" : "Параметры пользователя",
"Administration" : "Параметры сервера",
diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json
index aaa1f1daa7f..d18bd218d12 100644
--- a/apps/settings/l10n/ru.json
+++ b/apps/settings/l10n/ru.json
@@ -46,6 +46,7 @@
"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> были изменены",
+ "Apps" : "Приложения",
"Could not remove app." : "Не удалось удалить приложение.",
"Could not update app." : "Не удалось обновить приложение.",
"Wrong password" : "Неверный пароль",
@@ -78,6 +79,7 @@
"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.",
+ "Users" : "Пользователи",
"Invalid user" : "Неверный пользователь",
"Invalid mail address" : "Недопустимый адрес электронной почты",
"Settings saved" : "Настройки сохранены",
@@ -109,7 +111,6 @@
"Go to %s" : "Перейти к %s",
"Install Client" : "Установить программу-клиент",
"Logged in user must be a subadmin" : "Вошедший в систему пользователь должен обладать правами суб-администратора",
- "Apps" : "Приложения",
"Settings" : "Настройки",
"Personal" : "Параметры пользователя",
"Administration" : "Параметры сервера",
diff --git a/apps/settings/l10n/sc.js b/apps/settings/l10n/sc.js
index 71622af8933..704507f0faf 100644
--- a/apps/settings/l10n/sc.js
+++ b/apps/settings/l10n/sc.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Cantzelladura remota aviada in %1$s",
"Remote wipe has finished on %1$s" : "Cantzelladura remota acabbada in %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "S'at modificadu sa <strong>crae</strong> o s'<strong>indiritzu de posta</strong> tuo",
+ "Apps" : "Aplicatziones",
"Wrong password" : "Crae isballiada",
"Saved" : "Sarvadu",
"No user supplied" : "Peruna utèntzia frunida",
@@ -65,6 +66,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Si as retzidu custu messàgiu de posta, sa cunfiguratzione de sa posta eletrònica est andada bene.",
"Email could not be sent. Check your mail server log" : "Impossìbile a imbiare su messàgiu. Controlla s'informe de su serbidore tuo de posta",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ddoe at àpidu unu problema in s'imbiu de su messàgiu. Controlla is impostatziones. (Errore: %s)",
+ "Users" : "Utentes",
"Invalid user" : "Utèntzia non bàlida",
"Invalid mail address" : "Indiritzu de posta non bàlidu",
"Settings saved" : "Impostatziones sarvadas",
@@ -96,7 +98,6 @@ OC.L10N.register(
"Go to %s" : "Bae a %s",
"Install Client" : "Installa aplicatzione",
"Logged in user must be a subadmin" : "S'utente devet essere de sa suta-amministratzione ",
- "Apps" : "Aplicatziones",
"Settings" : "Impostatziones",
"Personal" : "Personale",
"Administration" : "Amministratzione",
diff --git a/apps/settings/l10n/sc.json b/apps/settings/l10n/sc.json
index 03ad8984ac3..54a0f4156c2 100644
--- a/apps/settings/l10n/sc.json
+++ b/apps/settings/l10n/sc.json
@@ -46,6 +46,7 @@
"Remote wipe was started on %1$s" : "Cantzelladura remota aviada in %1$s",
"Remote wipe has finished on %1$s" : "Cantzelladura remota acabbada in %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "S'at modificadu sa <strong>crae</strong> o s'<strong>indiritzu de posta</strong> tuo",
+ "Apps" : "Aplicatziones",
"Wrong password" : "Crae isballiada",
"Saved" : "Sarvadu",
"No user supplied" : "Peruna utèntzia frunida",
@@ -63,6 +64,7 @@
"If you received this email, the email configuration seems to be correct." : "Si as retzidu custu messàgiu de posta, sa cunfiguratzione de sa posta eletrònica est andada bene.",
"Email could not be sent. Check your mail server log" : "Impossìbile a imbiare su messàgiu. Controlla s'informe de su serbidore tuo de posta",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ddoe at àpidu unu problema in s'imbiu de su messàgiu. Controlla is impostatziones. (Errore: %s)",
+ "Users" : "Utentes",
"Invalid user" : "Utèntzia non bàlida",
"Invalid mail address" : "Indiritzu de posta non bàlidu",
"Settings saved" : "Impostatziones sarvadas",
@@ -94,7 +96,6 @@
"Go to %s" : "Bae a %s",
"Install Client" : "Installa aplicatzione",
"Logged in user must be a subadmin" : "S'utente devet essere de sa suta-amministratzione ",
- "Apps" : "Aplicatziones",
"Settings" : "Impostatziones",
"Personal" : "Personale",
"Administration" : "Amministratzione",
diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js
index 26848711c61..4eb1254bff2 100644
--- a/apps/settings/l10n/sk.js
+++ b/apps/settings/l10n/sk.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Vymazanie na diaľku sa začalo na %1$s",
"Remote wipe has finished on %1$s" : "Vymazanie na diaľku sa skončilo na %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Vaše <strong>heslo</strong> alebo <strong>email</strong> bolo zmenené",
+ "Apps" : "Apky",
"Could not remove app." : "Aplikáciu nie je možné zmazať.",
"Could not update app." : "Nepodarilo sa aktualizovať aplikáciu.",
"Wrong password" : "Nesprávne heslo",
@@ -80,6 +81,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "Nepodarilo sa odoslať email. Skontrolujte log Vášho mail servera",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Vyskytol sa problém pri odosielaní emailu. Prosím, znovu skontrolujte svoje nastavenia. (Chyba: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Musíte nastaviť svoj ​​užívateľský email, než budete môcť odoslať testovací email. Aby ste tak urobili choďte na %s.",
+ "Users" : "Užívatelia",
"Invalid user" : "Neplatný užívateľ",
"Invalid mail address" : "Neplatná emailová adresa",
"Settings saved" : "Nastavenia uložené",
@@ -111,7 +113,6 @@ OC.L10N.register(
"Go to %s" : "Prejsť na %s",
"Install Client" : "Inštalácia klienta",
"Logged in user must be a subadmin" : "Prihlásený používateľ musí byť sub-správca",
- "Apps" : "Apky",
"Settings" : "Nastavenia",
"Personal" : "Osobné",
"Administration" : "Administrácia",
diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json
index 20b6b830940..e39df6fbb92 100644
--- a/apps/settings/l10n/sk.json
+++ b/apps/settings/l10n/sk.json
@@ -46,6 +46,7 @@
"Remote wipe was started on %1$s" : "Vymazanie na diaľku sa začalo na %1$s",
"Remote wipe has finished on %1$s" : "Vymazanie na diaľku sa skončilo na %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Vaše <strong>heslo</strong> alebo <strong>email</strong> bolo zmenené",
+ "Apps" : "Apky",
"Could not remove app." : "Aplikáciu nie je možné zmazať.",
"Could not update app." : "Nepodarilo sa aktualizovať aplikáciu.",
"Wrong password" : "Nesprávne heslo",
@@ -78,6 +79,7 @@
"Email could not be sent. Check your mail server log" : "Nepodarilo sa odoslať email. Skontrolujte log Vášho mail servera",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Vyskytol sa problém pri odosielaní emailu. Prosím, znovu skontrolujte svoje nastavenia. (Chyba: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Musíte nastaviť svoj ​​užívateľský email, než budete môcť odoslať testovací email. Aby ste tak urobili choďte na %s.",
+ "Users" : "Užívatelia",
"Invalid user" : "Neplatný užívateľ",
"Invalid mail address" : "Neplatná emailová adresa",
"Settings saved" : "Nastavenia uložené",
@@ -109,7 +111,6 @@
"Go to %s" : "Prejsť na %s",
"Install Client" : "Inštalácia klienta",
"Logged in user must be a subadmin" : "Prihlásený používateľ musí byť sub-správca",
- "Apps" : "Apky",
"Settings" : "Nastavenia",
"Personal" : "Osobné",
"Administration" : "Administrácia",
diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js
index 4c5aefb6a5c..cd6e9d17a61 100644
--- a/apps/settings/l10n/sl.js
+++ b/apps/settings/l10n/sl.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Oddaljeno varnostno brisanje je bilo začeto na %1$s.",
"Remote wipe has finished on %1$s" : "Oddaljeno varnostno brisanje je bilo končano na %1$s.",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Spremenjeno je bilo <strong>geslo</strong> oziroma <strong>elektronski naslov</strong>",
+ "Apps" : "Programi",
"Could not remove app." : "Programa ni mogoče odstraniti.",
"Could not update app." : "Programa ni mogoče posodobiti.",
"Wrong password" : "Napačno geslo",
@@ -67,6 +68,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Če ste to sporočilo prejeli, potem nastavitev pošte deluje pravilno.",
"Email could not be sent. Check your mail server log" : "Elektronskega sporočila ni bilo mogoče poslati. Preverite dnevnik poštnega strežnika.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Med pošiljanjem sporočila se je prišlo do napake. Preverite nastavitve (napaka: %s).",
+ "Users" : "Uporabniki",
"Invalid user" : "Neveljavni podatki uporabnika",
"Invalid mail address" : "Neveljaven elektronski naslov",
"Settings saved" : "Nastavitve so shranjene.",
@@ -98,7 +100,6 @@ OC.L10N.register(
"Go to %s" : "Odpri oblak %s",
"Install Client" : "Namesti odjemalca",
"Logged in user must be a subadmin" : "Prijavljen uporabnik mora imeti dovoljenja podpornega skrbnika",
- "Apps" : "Programi",
"Settings" : "Nastavitve",
"Personal" : "Osebno",
"Administration" : "Skrbništvo",
diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json
index e1dbad727ca..c4442547d77 100644
--- a/apps/settings/l10n/sl.json
+++ b/apps/settings/l10n/sl.json
@@ -46,6 +46,7 @@
"Remote wipe was started on %1$s" : "Oddaljeno varnostno brisanje je bilo začeto na %1$s.",
"Remote wipe has finished on %1$s" : "Oddaljeno varnostno brisanje je bilo končano na %1$s.",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Spremenjeno je bilo <strong>geslo</strong> oziroma <strong>elektronski naslov</strong>",
+ "Apps" : "Programi",
"Could not remove app." : "Programa ni mogoče odstraniti.",
"Could not update app." : "Programa ni mogoče posodobiti.",
"Wrong password" : "Napačno geslo",
@@ -65,6 +66,7 @@
"If you received this email, the email configuration seems to be correct." : "Če ste to sporočilo prejeli, potem nastavitev pošte deluje pravilno.",
"Email could not be sent. Check your mail server log" : "Elektronskega sporočila ni bilo mogoče poslati. Preverite dnevnik poštnega strežnika.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Med pošiljanjem sporočila se je prišlo do napake. Preverite nastavitve (napaka: %s).",
+ "Users" : "Uporabniki",
"Invalid user" : "Neveljavni podatki uporabnika",
"Invalid mail address" : "Neveljaven elektronski naslov",
"Settings saved" : "Nastavitve so shranjene.",
@@ -96,7 +98,6 @@
"Go to %s" : "Odpri oblak %s",
"Install Client" : "Namesti odjemalca",
"Logged in user must be a subadmin" : "Prijavljen uporabnik mora imeti dovoljenja podpornega skrbnika",
- "Apps" : "Programi",
"Settings" : "Nastavitve",
"Personal" : "Osebno",
"Administration" : "Skrbništvo",
diff --git a/apps/settings/l10n/sq.js b/apps/settings/l10n/sq.js
index e522729129b..596c6798024 100644
--- a/apps/settings/l10n/sq.js
+++ b/apps/settings/l10n/sq.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You successfully logged in using two-factor authentication (%1$s)" : "Ju keni hyrë me sukses duke përdorur autentifikimin me dy faktorë ( %1$s )",
"A login attempt using two-factor authentication failed (%1$s)" : "Një përpjekje e identifikimit me anë të autentifikimit me dy faktorë dështoi ( %1$s )",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>fjalëkalimi</strong> ose <strong>emaili</strong> juaj është modifikuar",
+ "Apps" : "Aplikacione",
"Wrong password" : "Fjalëkalim i gabuar",
"Saved" : "U ruajt",
"No user supplied" : "S’u dha përdorues",
@@ -38,6 +39,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Nëse keni marrë këtë email, konfigurimi i email-it duket të jetë i saktë.",
"Email could not be sent. Check your mail server log" : "Email nuk mund të dërgohej. Kontrolloni logun e serverit tuaj të postës",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)",
+ "Users" : "Përdoruesit",
"Invalid user" : "Përdorues i pavlefshëm",
"Invalid mail address" : "Adresë email e pavlefshme",
"Settings saved" : "Konfigurimet u ruajtën",
@@ -63,7 +65,6 @@ OC.L10N.register(
"Set your password" : "Vendos fjalëkalimin tënd",
"Go to %s" : "Shko tek %s",
"Install Client" : "Instalo Klient",
- "Apps" : "Aplikacione",
"Settings" : "Rregullimet",
"Personal" : "Personale",
"Additional settings" : "Konfigurime shtesë",
diff --git a/apps/settings/l10n/sq.json b/apps/settings/l10n/sq.json
index 1159c8e260c..6f83053390c 100644
--- a/apps/settings/l10n/sq.json
+++ b/apps/settings/l10n/sq.json
@@ -21,6 +21,7 @@
"You successfully logged in using two-factor authentication (%1$s)" : "Ju keni hyrë me sukses duke përdorur autentifikimin me dy faktorë ( %1$s )",
"A login attempt using two-factor authentication failed (%1$s)" : "Një përpjekje e identifikimit me anë të autentifikimit me dy faktorë dështoi ( %1$s )",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>fjalëkalimi</strong> ose <strong>emaili</strong> juaj është modifikuar",
+ "Apps" : "Aplikacione",
"Wrong password" : "Fjalëkalim i gabuar",
"Saved" : "U ruajt",
"No user supplied" : "S’u dha përdorues",
@@ -36,6 +37,7 @@
"If you received this email, the email configuration seems to be correct." : "Nëse keni marrë këtë email, konfigurimi i email-it duket të jetë i saktë.",
"Email could not be sent. Check your mail server log" : "Email nuk mund të dërgohej. Kontrolloni logun e serverit tuaj të postës",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)",
+ "Users" : "Përdoruesit",
"Invalid user" : "Përdorues i pavlefshëm",
"Invalid mail address" : "Adresë email e pavlefshme",
"Settings saved" : "Konfigurimet u ruajtën",
@@ -61,7 +63,6 @@
"Set your password" : "Vendos fjalëkalimin tënd",
"Go to %s" : "Shko tek %s",
"Install Client" : "Instalo Klient",
- "Apps" : "Aplikacione",
"Settings" : "Rregullimet",
"Personal" : "Personale",
"Additional settings" : "Konfigurime shtesë",
diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js
index ff0ef6aa848..00bf72301c8 100644
--- a/apps/settings/l10n/sr.js
+++ b/apps/settings/l10n/sr.js
@@ -50,6 +50,7 @@ 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> је измењена",
+ "Apps" : "Апликације",
"Could not remove app." : "Апликација не може да се уклони.",
"Could not update app." : "Апликација не може да се ажурира.",
"Wrong password" : "Погрешна лозинка",
@@ -83,6 +84,7 @@ OC.L10N.register(
"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 и поставите је.",
+ "Users" : "Корисници",
"Invalid user" : "Неисправан корисник",
"Invalid mail address" : "Неисправна е-адреса",
"Settings saved" : "Подешавања сачувана",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "Иди на %s",
"Install Client" : "Инсталирајте клијенте",
"Logged in user must be a subadmin" : "Пријављени корисник мора бити подадминистратор",
- "Apps" : "Апликације",
"Settings" : "Поставке",
"Personal" : "Лично",
"Administration" : "Администрација",
diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json
index aa02a4f150f..9beb8053d35 100644
--- a/apps/settings/l10n/sr.json
+++ b/apps/settings/l10n/sr.json
@@ -48,6 +48,7 @@
"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> је измењена",
+ "Apps" : "Апликације",
"Could not remove app." : "Апликација не може да се уклони.",
"Could not update app." : "Апликација не може да се ажурира.",
"Wrong password" : "Погрешна лозинка",
@@ -81,6 +82,7 @@
"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 и поставите је.",
+ "Users" : "Корисници",
"Invalid user" : "Неисправан корисник",
"Invalid mail address" : "Неисправна е-адреса",
"Settings saved" : "Подешавања сачувана",
@@ -112,7 +114,6 @@
"Go to %s" : "Иди на %s",
"Install Client" : "Инсталирајте клијенте",
"Logged in user must be a subadmin" : "Пријављени корисник мора бити подадминистратор",
- "Apps" : "Апликације",
"Settings" : "Поставке",
"Personal" : "Лично",
"Administration" : "Администрација",
diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js
index 01a9c552da7..953d1cd4360 100644
--- a/apps/settings/l10n/sv.js
+++ b/apps/settings/l10n/sv.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Fjärrensning startades på %1$s",
"Remote wipe has finished on %1$s" : "Fjärrensning slutfördes på %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ditt <strong>lösenord</strong> eller <strong>e-postadress</strong> har ändrats",
+ "Apps" : "Appar",
"Could not remove app." : "Kunde inte ta bort app.",
"Could not update app." : "Kunde inte uppdatera app.",
"Wrong password" : "Fel lösenord",
@@ -82,6 +83,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "E-post kunde inte skickas. Titta i din e-postserverlogg",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ett problem uppstod när e-post försökte skickas. Kontrollera dina inställningar. (Fel: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Du måste ställa in din användarmailadress innan du kan skicka testmail. Gå till %s för att göra det.",
+ "Users" : "Användare",
"Invalid user" : "Ogiltig användare",
"Invalid mail address" : "Ogiltig e-postadress",
"Settings saved" : "Inställningar sparade",
@@ -113,7 +115,6 @@ OC.L10N.register(
"Go to %s" : "Gå till %s",
"Install Client" : "Installera Klient",
"Logged in user must be a subadmin" : "Inloggad användare måste vara en del-administratör",
- "Apps" : "Appar",
"Settings" : "Inställningar",
"Personal" : "Privat",
"Administration" : "Administration",
diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json
index f2b2afa3891..1540a4ab42b 100644
--- a/apps/settings/l10n/sv.json
+++ b/apps/settings/l10n/sv.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Fjärrensning startades på %1$s",
"Remote wipe has finished on %1$s" : "Fjärrensning slutfördes på %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ditt <strong>lösenord</strong> eller <strong>e-postadress</strong> har ändrats",
+ "Apps" : "Appar",
"Could not remove app." : "Kunde inte ta bort app.",
"Could not update app." : "Kunde inte uppdatera app.",
"Wrong password" : "Fel lösenord",
@@ -80,6 +81,7 @@
"Email could not be sent. Check your mail server log" : "E-post kunde inte skickas. Titta i din e-postserverlogg",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ett problem uppstod när e-post försökte skickas. Kontrollera dina inställningar. (Fel: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Du måste ställa in din användarmailadress innan du kan skicka testmail. Gå till %s för att göra det.",
+ "Users" : "Användare",
"Invalid user" : "Ogiltig användare",
"Invalid mail address" : "Ogiltig e-postadress",
"Settings saved" : "Inställningar sparade",
@@ -111,7 +113,6 @@
"Go to %s" : "Gå till %s",
"Install Client" : "Installera Klient",
"Logged in user must be a subadmin" : "Inloggad användare måste vara en del-administratör",
- "Apps" : "Appar",
"Settings" : "Inställningar",
"Personal" : "Privat",
"Administration" : "Administration",
diff --git a/apps/settings/l10n/th.js b/apps/settings/l10n/th.js
index 4dc48b52282..fbc4a2ffe92 100644
--- a/apps/settings/l10n/th.js
+++ b/apps/settings/l10n/th.js
@@ -40,6 +40,7 @@ OC.L10N.register(
"You deleted app password \"{token}\"" : "คุณลบรหัสผ่านแอป \"{token}\" แล้ว",
"Security" : "ความปลอดภัย",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "มีการเปลี่ยนแปลง<strong>รหัสผ่าน</strong>หรือ<strong>อีเมล</strong>ของคุณ",
+ "Apps" : "แอป",
"Wrong password" : "รหัสผ่านไม่ถูกต้อง",
"Saved" : "บันทึกแล้ว",
"No user supplied" : "ไม่ได้ระบุผู้ใช้",
@@ -53,6 +54,7 @@ OC.L10N.register(
"Email setting test" : "ทดสอบการตั้งค่าอีเมล",
"Well done, %s!" : "เยี่ยมยอด คุณ %s!",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "เกิดปัญหาขณะส่งอีเมล กรุณาแก้ไขการตั้งค่าของคุณ (ข้อผิดพลาด: %s)",
+ "Users" : "ผู้ใช้",
"Invalid user" : "ผู้ใช้ไม่ถูกต้อง",
"Invalid mail address" : "ที่อยู่อีเมลไม่ถูกต้อง",
"Settings saved" : "บันทึกการตั้งค่าแล้ว",
@@ -63,7 +65,6 @@ OC.L10N.register(
"Set your password" : "ตั้งรหัสผ่านของคุณ",
"Go to %s" : "ไปที่ %s",
"Install Client" : "ติดตั้งไคลเอ็นต์",
- "Apps" : "แอป",
"Settings" : "การตั้งค่า",
"Personal" : "ส่วนตัว",
"Additional settings" : "การตั้งค่าเพิ่มเติม",
diff --git a/apps/settings/l10n/th.json b/apps/settings/l10n/th.json
index 809fdf743d5..3f99803b70b 100644
--- a/apps/settings/l10n/th.json
+++ b/apps/settings/l10n/th.json
@@ -38,6 +38,7 @@
"You deleted app password \"{token}\"" : "คุณลบรหัสผ่านแอป \"{token}\" แล้ว",
"Security" : "ความปลอดภัย",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "มีการเปลี่ยนแปลง<strong>รหัสผ่าน</strong>หรือ<strong>อีเมล</strong>ของคุณ",
+ "Apps" : "แอป",
"Wrong password" : "รหัสผ่านไม่ถูกต้อง",
"Saved" : "บันทึกแล้ว",
"No user supplied" : "ไม่ได้ระบุผู้ใช้",
@@ -51,6 +52,7 @@
"Email setting test" : "ทดสอบการตั้งค่าอีเมล",
"Well done, %s!" : "เยี่ยมยอด คุณ %s!",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "เกิดปัญหาขณะส่งอีเมล กรุณาแก้ไขการตั้งค่าของคุณ (ข้อผิดพลาด: %s)",
+ "Users" : "ผู้ใช้",
"Invalid user" : "ผู้ใช้ไม่ถูกต้อง",
"Invalid mail address" : "ที่อยู่อีเมลไม่ถูกต้อง",
"Settings saved" : "บันทึกการตั้งค่าแล้ว",
@@ -61,7 +63,6 @@
"Set your password" : "ตั้งรหัสผ่านของคุณ",
"Go to %s" : "ไปที่ %s",
"Install Client" : "ติดตั้งไคลเอ็นต์",
- "Apps" : "แอป",
"Settings" : "การตั้งค่า",
"Personal" : "ส่วนตัว",
"Additional settings" : "การตั้งค่าเพิ่มเติม",
diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js
index 12ff2434c88..d884a0ab342 100644
--- a/apps/settings/l10n/tr.js
+++ b/apps/settings/l10n/tr.js
@@ -50,6 +50,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Uzaktan silme işlemi %1$s zamanında başlatıldı",
"Remote wipe has finished on %1$s" : "Uzaktan silme işlemi %1$s zamanında tamamlandı",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Parolanız</strong> ya da <strong>e-posta adresiniz</strong> değiştirildi",
+ "Apps" : "Uygulamalar",
"Could not remove app." : "Uygulama kaldırılamadı.",
"Could not update app." : "Uygulama güncellenemedi.",
"Wrong password" : "Parola yanlış",
@@ -83,6 +84,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "E-posta gönderilemedi. E-posta sunucunuzun günlüklerine bakın",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "E-posta gönderilirken bir sorun çıktı. Lütfen ayarlarınızı gözden geçirin. (Hata: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Sınama e-postaları göndermeden önce kullanıcı e-postanızı ayarlamalısınız. Bunun için %s bölümüne gidin.",
+ "Users" : "Kullanıcılar",
"Invalid user" : "Kullanıcı geçersiz",
"Invalid mail address" : "E-posta adresi geçersiz",
"Settings saved" : "Ayarlar kaydedildi",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "%s sayfasına gidin",
"Install Client" : "İstemciyi kurun",
"Logged in user must be a subadmin" : "Oturum açmış kullanıcı bir alt yönetici olmalıdır",
- "Apps" : "Uygulamalar",
"Settings" : "Ayarlar",
"Personal" : "Kişisel",
"Administration" : "Yönetim",
diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json
index f4fa7faf8fc..1ead6706753 100644
--- a/apps/settings/l10n/tr.json
+++ b/apps/settings/l10n/tr.json
@@ -48,6 +48,7 @@
"Remote wipe was started on %1$s" : "Uzaktan silme işlemi %1$s zamanında başlatıldı",
"Remote wipe has finished on %1$s" : "Uzaktan silme işlemi %1$s zamanında tamamlandı",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Parolanız</strong> ya da <strong>e-posta adresiniz</strong> değiştirildi",
+ "Apps" : "Uygulamalar",
"Could not remove app." : "Uygulama kaldırılamadı.",
"Could not update app." : "Uygulama güncellenemedi.",
"Wrong password" : "Parola yanlış",
@@ -81,6 +82,7 @@
"Email could not be sent. Check your mail server log" : "E-posta gönderilemedi. E-posta sunucunuzun günlüklerine bakın",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "E-posta gönderilirken bir sorun çıktı. Lütfen ayarlarınızı gözden geçirin. (Hata: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Sınama e-postaları göndermeden önce kullanıcı e-postanızı ayarlamalısınız. Bunun için %s bölümüne gidin.",
+ "Users" : "Kullanıcılar",
"Invalid user" : "Kullanıcı geçersiz",
"Invalid mail address" : "E-posta adresi geçersiz",
"Settings saved" : "Ayarlar kaydedildi",
@@ -112,7 +114,6 @@
"Go to %s" : "%s sayfasına gidin",
"Install Client" : "İstemciyi kurun",
"Logged in user must be a subadmin" : "Oturum açmış kullanıcı bir alt yönetici olmalıdır",
- "Apps" : "Uygulamalar",
"Settings" : "Ayarlar",
"Personal" : "Kişisel",
"Administration" : "Yönetim",
diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js
index 366d12f46e6..a6002abbd6b 100644
--- a/apps/settings/l10n/uk.js
+++ b/apps/settings/l10n/uk.js
@@ -50,6 +50,7 @@ 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> було змінено",
+ "Apps" : "Застосунки",
"Could not remove app." : "Не вдалося вилучити застосунок.",
"Could not update app." : "Не вдалося оновити програму.",
"Wrong password" : "Неправильний пароль",
@@ -82,6 +83,7 @@ OC.L10N.register(
"Email could not be sent. Check your mail server log" : "Не вдалося надіслати електронну пошту. Перевірте журнал поштового сервера",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Під час надсилання email сталася помилка. Будь ласка перевірте налаштування. (Помилка: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Перш ніж надсилати тестові електронні листи, вам потрібно встановити електронну адресу користувача. Ідіть %s для цього.",
+ "Users" : "Користувачі",
"Invalid user" : "Неправильний користувач",
"Invalid mail address" : "Неправильна email адреса",
"Settings saved" : "Налаштування збережено",
@@ -113,7 +115,6 @@ OC.L10N.register(
"Go to %s" : "Перейти до %s",
"Install Client" : "Встановити Клієнт",
"Logged in user must be a subadmin" : "Користувач, який увійшов, має бути одним з адміністраторів",
- "Apps" : "Застосунки",
"Settings" : "Налаштування",
"Personal" : "Особисте",
"Administration" : "Адміністрування",
diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json
index 928f4a19623..995a341c579 100644
--- a/apps/settings/l10n/uk.json
+++ b/apps/settings/l10n/uk.json
@@ -48,6 +48,7 @@
"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> було змінено",
+ "Apps" : "Застосунки",
"Could not remove app." : "Не вдалося вилучити застосунок.",
"Could not update app." : "Не вдалося оновити програму.",
"Wrong password" : "Неправильний пароль",
@@ -80,6 +81,7 @@
"Email could not be sent. Check your mail server log" : "Не вдалося надіслати електронну пошту. Перевірте журнал поштового сервера",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Під час надсилання email сталася помилка. Будь ласка перевірте налаштування. (Помилка: %s)",
"You need to set your user email before being able to send test emails. Go to %s for that." : "Перш ніж надсилати тестові електронні листи, вам потрібно встановити електронну адресу користувача. Ідіть %s для цього.",
+ "Users" : "Користувачі",
"Invalid user" : "Неправильний користувач",
"Invalid mail address" : "Неправильна email адреса",
"Settings saved" : "Налаштування збережено",
@@ -111,7 +113,6 @@
"Go to %s" : "Перейти до %s",
"Install Client" : "Встановити Клієнт",
"Logged in user must be a subadmin" : "Користувач, який увійшов, має бути одним з адміністраторів",
- "Apps" : "Застосунки",
"Settings" : "Налаштування",
"Personal" : "Особисте",
"Administration" : "Адміністрування",
diff --git a/apps/settings/l10n/vi.js b/apps/settings/l10n/vi.js
index d0bf0c01245..f03ec1a06be 100644
--- a/apps/settings/l10n/vi.js
+++ b/apps/settings/l10n/vi.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Xóa từ xa đã được bắt đầu vào %1$s",
"Remote wipe has finished on %1$s" : "Xóa từ xa đã kết thúc vào %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>mật khẩu</strong> hoặc <strong>email</strong> đã được sửa đổi",
+ "Apps" : "Ứng dụng",
"Wrong password" : "Mật khẩu không chính xác",
"Saved" : "Đã lưu",
"No user supplied" : "Không có người dùng cung cấp",
@@ -57,6 +58,7 @@ OC.L10N.register(
"If you received this email, the email configuration seems to be correct." : "Nếu bạn nhận được email này, cấu hình email có vẻ đúng.",
"Email could not be sent. Check your mail server log" : "Email không thể gửi được. Kiểm tra nhật ký máy chủ email của bạn",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Một vấn đề xảy ra trong khi gửi email. Vui lòng sửa lại cài đặt của bạn. (Lỗi: %s)",
+ "Users" : "Người dùng",
"Invalid mail address" : "Địa chỉ email không hợp lệ",
"Settings saved" : "Cấu hình đã được lưu",
"Unable to change full name" : "Họ và tên không thể thay đổi ",
@@ -83,7 +85,6 @@ OC.L10N.register(
"Go to %s" : "Đi tới %s",
"Install Client" : "Cài đặt máy khách",
"Logged in user must be a subadmin" : "Người dùng đã đăng nhập phải là một subadmin",
- "Apps" : "Ứng dụng",
"Settings" : "Cài đặt",
"Personal" : "Cá nhân",
"Additional settings" : "Cài đặt bổ sung",
diff --git a/apps/settings/l10n/vi.json b/apps/settings/l10n/vi.json
index 40efb3fc29a..40267d249ca 100644
--- a/apps/settings/l10n/vi.json
+++ b/apps/settings/l10n/vi.json
@@ -39,6 +39,7 @@
"Remote wipe was started on %1$s" : "Xóa từ xa đã được bắt đầu vào %1$s",
"Remote wipe has finished on %1$s" : "Xóa từ xa đã kết thúc vào %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>mật khẩu</strong> hoặc <strong>email</strong> đã được sửa đổi",
+ "Apps" : "Ứng dụng",
"Wrong password" : "Mật khẩu không chính xác",
"Saved" : "Đã lưu",
"No user supplied" : "Không có người dùng cung cấp",
@@ -55,6 +56,7 @@
"If you received this email, the email configuration seems to be correct." : "Nếu bạn nhận được email này, cấu hình email có vẻ đúng.",
"Email could not be sent. Check your mail server log" : "Email không thể gửi được. Kiểm tra nhật ký máy chủ email của bạn",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Một vấn đề xảy ra trong khi gửi email. Vui lòng sửa lại cài đặt của bạn. (Lỗi: %s)",
+ "Users" : "Người dùng",
"Invalid mail address" : "Địa chỉ email không hợp lệ",
"Settings saved" : "Cấu hình đã được lưu",
"Unable to change full name" : "Họ và tên không thể thay đổi ",
@@ -81,7 +83,6 @@
"Go to %s" : "Đi tới %s",
"Install Client" : "Cài đặt máy khách",
"Logged in user must be a subadmin" : "Người dùng đã đăng nhập phải là một subadmin",
- "Apps" : "Ứng dụng",
"Settings" : "Cài đặt",
"Personal" : "Cá nhân",
"Additional settings" : "Cài đặt bổ sung",
diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js
index 0c3c361013f..c1ce56e55c6 100644
--- a/apps/settings/l10n/zh_CN.js
+++ b/apps/settings/l10n/zh_CN.js
@@ -48,6 +48,7 @@ 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> 已被更改",
+ "Apps" : "应用",
"Could not remove app." : "无法移除应用。",
"Could not update app." : "无法更新应用。",
"Wrong password" : "密码错误",
@@ -80,6 +81,7 @@ OC.L10N.register(
"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设置电子邮箱,才能发送测试邮件。",
+ "Users" : "用户",
"Invalid user" : "无效用户",
"Invalid mail address" : "无效的电子邮件地址",
"Settings saved" : "设置已保存",
@@ -111,7 +113,6 @@ OC.L10N.register(
"Go to %s" : "访问 %s",
"Install Client" : "安装客户端",
"Logged in user must be a subadmin" : "当前登录用户必须为子管理员",
- "Apps" : "应用",
"Settings" : "设置",
"Personal" : "个人",
"Administration" : "管理",
diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json
index e8caa58782e..6d4ffe5c851 100644
--- a/apps/settings/l10n/zh_CN.json
+++ b/apps/settings/l10n/zh_CN.json
@@ -46,6 +46,7 @@
"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> 已被更改",
+ "Apps" : "应用",
"Could not remove app." : "无法移除应用。",
"Could not update app." : "无法更新应用。",
"Wrong password" : "密码错误",
@@ -78,6 +79,7 @@
"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设置电子邮箱,才能发送测试邮件。",
+ "Users" : "用户",
"Invalid user" : "无效用户",
"Invalid mail address" : "无效的电子邮件地址",
"Settings saved" : "设置已保存",
@@ -109,7 +111,6 @@
"Go to %s" : "访问 %s",
"Install Client" : "安装客户端",
"Logged in user must be a subadmin" : "当前登录用户必须为子管理员",
- "Apps" : "应用",
"Settings" : "设置",
"Personal" : "个人",
"Administration" : "管理",
diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js
index 8b670fb9c23..a0defcc5368 100644
--- a/apps/settings/l10n/zh_HK.js
+++ b/apps/settings/l10n/zh_HK.js
@@ -50,6 +50,7 @@ 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>已修改",
+ "Apps" : "應用程式",
"Could not remove app." : "無法移除應用程式。",
"Could not update app." : "無法更新應用程式。",
"Wrong password" : "密碼錯誤",
@@ -83,6 +84,7 @@ OC.L10N.register(
"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 進行設置。",
+ "Users" : "用戶",
"Invalid user" : "用戶無效",
"Invalid mail address" : "無效的電郵地址",
"Settings saved" : "設定已儲存",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "前往 %s",
"Install Client" : "安裝客戶端程式",
"Logged in user must be a subadmin" : "登入用戶必須為副管理員",
- "Apps" : "應用程式",
"Settings" : "設定",
"Personal" : "個人",
"Administration" : "管理",
diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json
index 11a32e39180..5e4bccf364c 100644
--- a/apps/settings/l10n/zh_HK.json
+++ b/apps/settings/l10n/zh_HK.json
@@ -48,6 +48,7 @@
"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>已修改",
+ "Apps" : "應用程式",
"Could not remove app." : "無法移除應用程式。",
"Could not update app." : "無法更新應用程式。",
"Wrong password" : "密碼錯誤",
@@ -81,6 +82,7 @@
"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 進行設置。",
+ "Users" : "用戶",
"Invalid user" : "用戶無效",
"Invalid mail address" : "無效的電郵地址",
"Settings saved" : "設定已儲存",
@@ -112,7 +114,6 @@
"Go to %s" : "前往 %s",
"Install Client" : "安裝客戶端程式",
"Logged in user must be a subadmin" : "登入用戶必須為副管理員",
- "Apps" : "應用程式",
"Settings" : "設定",
"Personal" : "個人",
"Administration" : "管理",
diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js
index 5d7a983b669..21dbd23a1f5 100644
--- a/apps/settings/l10n/zh_TW.js
+++ b/apps/settings/l10n/zh_TW.js
@@ -50,6 +50,7 @@ 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>已修改",
+ "Apps" : "應用程式",
"Could not remove app." : "無法移除應用程式。",
"Could not update app." : "無法更新應用程式。",
"Wrong password" : "密碼錯誤",
@@ -83,6 +84,7 @@ OC.L10N.register(
"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 進行設定。",
+ "Users" : "使用者",
"Invalid user" : "無效的使用者",
"Invalid mail address" : "無效的電子郵件地址",
"Settings saved" : "設定已儲存",
@@ -114,7 +116,6 @@ OC.L10N.register(
"Go to %s" : "前往 %s",
"Install Client" : "安裝客戶端程式",
"Logged in user must be a subadmin" : "登入使用者必須為子管理員",
- "Apps" : "應用程式",
"Settings" : "設定",
"Personal" : "個人",
"Administration" : "管理",
diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json
index c6ee9808197..46cd923e691 100644
--- a/apps/settings/l10n/zh_TW.json
+++ b/apps/settings/l10n/zh_TW.json
@@ -48,6 +48,7 @@
"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>已修改",
+ "Apps" : "應用程式",
"Could not remove app." : "無法移除應用程式。",
"Could not update app." : "無法更新應用程式。",
"Wrong password" : "密碼錯誤",
@@ -81,6 +82,7 @@
"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 進行設定。",
+ "Users" : "使用者",
"Invalid user" : "無效的使用者",
"Invalid mail address" : "無效的電子郵件地址",
"Settings saved" : "設定已儲存",
@@ -112,7 +114,6 @@
"Go to %s" : "前往 %s",
"Install Client" : "安裝客戶端程式",
"Logged in user must be a subadmin" : "登入使用者必須為子管理員",
- "Apps" : "應用程式",
"Settings" : "設定",
"Personal" : "個人",
"Administration" : "管理",
diff --git a/apps/theming/l10n/es.js b/apps/theming/l10n/es.js
index 06c0d0f5460..92300a1db4a 100644
--- a/apps/theming/l10n/es.js
+++ b/apps/theming/l10n/es.js
@@ -79,6 +79,7 @@ OC.L10N.register(
"Custom background" : "Fondo personalizado",
"Default background" : "Fondo por defecto",
"Change color" : "Cambiar color",
+ "No background" : "Sin imagen de fondo",
"Select a background from your files" : "Seleccionar un fondo desde tus archivos",
"Theme selection is enforced" : "La selección del tema es forzada",
"Select a custom color" : "Seleccionar un color personalizado",
diff --git a/apps/theming/l10n/es.json b/apps/theming/l10n/es.json
index 3d37f0c3a86..97f140e0b90 100644
--- a/apps/theming/l10n/es.json
+++ b/apps/theming/l10n/es.json
@@ -77,6 +77,7 @@
"Custom background" : "Fondo personalizado",
"Default background" : "Fondo por defecto",
"Change color" : "Cambiar color",
+ "No background" : "Sin imagen de fondo",
"Select a background from your files" : "Seleccionar un fondo desde tus archivos",
"Theme selection is enforced" : "La selección del tema es forzada",
"Select a custom color" : "Seleccionar un color personalizado",
diff --git a/apps/theming/l10n/uk.js b/apps/theming/l10n/uk.js
index f9dbac6537d..2700c223089 100644
--- a/apps/theming/l10n/uk.js
+++ b/apps/theming/l10n/uk.js
@@ -23,7 +23,7 @@ OC.L10N.register(
"No file uploaded" : "Файл не завантажено",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Ви уже використовуєте власну тему. Таким чином налаштування застосунку Оформлення може бути перезаписано.",
"Theming" : "Оформлення",
- "Appearance and accessibility" : "Вигляд та доступність",
+ "Appearance and accessibility" : "Тема та вигляд",
"Dark theme with high contrast mode" : "Темна тема з режимом високої контрастності",
"Enable dark high contrast mode" : "Увімкніть темний режим високої контрастності",
"Similar to the high contrast mode, but with dark colours." : "Подібно до режиму високої контрастності, але з темними кольорами.",
diff --git a/apps/theming/l10n/uk.json b/apps/theming/l10n/uk.json
index 981bd310453..080eb5cf9d7 100644
--- a/apps/theming/l10n/uk.json
+++ b/apps/theming/l10n/uk.json
@@ -21,7 +21,7 @@
"No file uploaded" : "Файл не завантажено",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Ви уже використовуєте власну тему. Таким чином налаштування застосунку Оформлення може бути перезаписано.",
"Theming" : "Оформлення",
- "Appearance and accessibility" : "Вигляд та доступність",
+ "Appearance and accessibility" : "Тема та вигляд",
"Dark theme with high contrast mode" : "Темна тема з режимом високої контрастності",
"Enable dark high contrast mode" : "Увімкніть темний режим високої контрастності",
"Similar to the high contrast mode, but with dark colours." : "Подібно до режиму високої контрастності, але з темними кольорами.",
diff --git a/apps/updatenotification/l10n/ru.js b/apps/updatenotification/l10n/ru.js
index 7030a5981de..e0cfaca69c5 100644
--- a/apps/updatenotification/l10n/ru.js
+++ b/apps/updatenotification/l10n/ru.js
@@ -8,6 +8,7 @@ OC.L10N.register(
"The update server could not be reached since %d days to check for new updates." : "Сервер обновлений недоступен для проверки наличия обновлений дней: %d.",
"Please check the Nextcloud and server log files for errors." : "Проверьте наличие ошибок в файлах журналов Nextcloud и сервера.",
"Update to %1$s is available." : "Доступно обновление до версии %1$s.",
+ "Update to {serverAndVersion} is available." : "Доступно обновление до версии {serverAndVersion}.",
"Update for {app} to version %s is available." : "Для приложения {app} доступно обновление до версии %s.",
"Update notification" : "Уведомление об обновлении",
"Displays update notifications for Nextcloud and provides the SSO for the updater." : "Показывает уведомления об обновлениях для Nextcloud и обеспечивает систему обновления технологией единого входа (SSO).",
diff --git a/apps/updatenotification/l10n/ru.json b/apps/updatenotification/l10n/ru.json
index a83a0a3a746..9796c57c67a 100644
--- a/apps/updatenotification/l10n/ru.json
+++ b/apps/updatenotification/l10n/ru.json
@@ -6,6 +6,7 @@
"The update server could not be reached since %d days to check for new updates." : "Сервер обновлений недоступен для проверки наличия обновлений дней: %d.",
"Please check the Nextcloud and server log files for errors." : "Проверьте наличие ошибок в файлах журналов Nextcloud и сервера.",
"Update to %1$s is available." : "Доступно обновление до версии %1$s.",
+ "Update to {serverAndVersion} is available." : "Доступно обновление до версии {serverAndVersion}.",
"Update for {app} to version %s is available." : "Для приложения {app} доступно обновление до версии %s.",
"Update notification" : "Уведомление об обновлении",
"Displays update notifications for Nextcloud and provides the SSO for the updater." : "Показывает уведомления об обновлениях для Nextcloud и обеспечивает систему обновления технологией единого входа (SSO).",
diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js
index c1cc7d3c1ae..d3cd31d10ff 100644
--- a/apps/user_ldap/l10n/ru.js
+++ b/apps/user_ldap/l10n/ru.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"No action specified" : "Действие не указано",
"No configuration specified" : "Конфигурация не указана",
"No data specified" : "Нет данных",
+ "Invalid data specified" : "Указаны некорректные данные",
" Could not set configuration %s" : "Невозможно создать конфигурацию %s",
"Action does not exist" : "Действие не существует",
"Renewing …" : "Обновление…",
@@ -60,6 +61,10 @@ OC.L10N.register(
"Your password will expire today." : "Сегодня истекает срок действия пароля.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Срок действия пароля истекает через %n день.","Срок действия пароля истекает через %n дня.","Срок действия пароля истекает через %n дней.","Срок действия пароля истекает через %n день."],
"LDAP/AD integration" : "LDAP/AD интеграция",
+ "_%n group found_::_%n groups found_" : ["Найдена %n группа","Найдено %n группы","Найдено %n групп","Найдено %n группы"],
+ "> 1000 groups found" : "Найдено более 1000 групп",
+ "> 1000 users found" : "Найдено более 1000 пользователей",
+ "_%n user found_::_%n users found_" : ["Найден %n пользователь","Найдено %n пользователя","Найдено %n пользователей","Найдено %n пользователя"],
"Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не удалось автоматически определить атрибут, содержащий отображаемое имя пользователя. Зайдите в расширенные настройки LDAP и укажите его вручную.",
"Could not find the desired feature" : "Не удается найти требуемую функциональность",
"Invalid Host" : "Недопустимый адрес сервера",
diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json
index 2dfb1917227..cae3ff63594 100644
--- a/apps/user_ldap/l10n/ru.json
+++ b/apps/user_ldap/l10n/ru.json
@@ -8,6 +8,7 @@
"No action specified" : "Действие не указано",
"No configuration specified" : "Конфигурация не указана",
"No data specified" : "Нет данных",
+ "Invalid data specified" : "Указаны некорректные данные",
" Could not set configuration %s" : "Невозможно создать конфигурацию %s",
"Action does not exist" : "Действие не существует",
"Renewing …" : "Обновление…",
@@ -58,6 +59,10 @@
"Your password will expire today." : "Сегодня истекает срок действия пароля.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Срок действия пароля истекает через %n день.","Срок действия пароля истекает через %n дня.","Срок действия пароля истекает через %n дней.","Срок действия пароля истекает через %n день."],
"LDAP/AD integration" : "LDAP/AD интеграция",
+ "_%n group found_::_%n groups found_" : ["Найдена %n группа","Найдено %n группы","Найдено %n групп","Найдено %n группы"],
+ "> 1000 groups found" : "Найдено более 1000 групп",
+ "> 1000 users found" : "Найдено более 1000 пользователей",
+ "_%n user found_::_%n users found_" : ["Найден %n пользователь","Найдено %n пользователя","Найдено %n пользователей","Найдено %n пользователя"],
"Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не удалось автоматически определить атрибут, содержащий отображаемое имя пользователя. Зайдите в расширенные настройки LDAP и укажите его вручную.",
"Could not find the desired feature" : "Не удается найти требуемую функциональность",
"Invalid Host" : "Недопустимый адрес сервера",
diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml
index c376a1b895f..f45c5cf89eb 100644
--- a/build/psalm-baseline.xml
+++ b/build/psalm-baseline.xml
@@ -2696,14 +2696,11 @@
</InvalidReturnType>
</file>
<file src="lib/private/Files/View.php">
- <InvalidNullableReturnType occurrences="1">
- <code>string</code>
- </InvalidNullableReturnType>
<InvalidScalarArgument occurrences="2">
<code>$fileId</code>
<code>$mtime</code>
</InvalidScalarArgument>
- <NullableReturnStatement occurrences="4">
+ <NullableReturnStatement occurrences="3">
<code>null</code>
<code>null</code>
<code>null</code>
diff --git a/core/l10n/bg.js b/core/l10n/bg.js
index f823a793e7e..444ce3ee027 100644
--- a/core/l10n/bg.js
+++ b/core/l10n/bg.js
@@ -354,7 +354,6 @@ OC.L10N.register(
"Get your own free account" : "Вземете свой собствен безплатен профил",
"%s homepage" : "%s начална страница",
"Confirm your password" : "Потвърдете паролата си",
- "%s's homepage" : "%s's начална страница",
"Connect to your account" : "Свързване към вашия профил",
"Please log in before granting %1$s access to your %2$s account." : "Необходимо е да се впишете, преди да дадете достъп на %1$s до вашия %2$s профил.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ако не се опитвате да настроите ново устройство или приложение, някой се опитва да ви подмами, за да му предоставите достъп до вашите данни. В този случай не продължавайте и вместо това се свържете със системния си администратор.",
@@ -423,6 +422,7 @@ OC.L10N.register(
"Contacts" : "Контакти",
"Contacts menu" : "Контакти",
"Setup two-factor authentication" : "Свържи двустепенно удостоверяване",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Изглежда, че използвате 32-битова PHP версия. Приложението Nextcloud се нуждае от 64 бита, за да работи добре. Моля, надстройте вашата операционна система и PHP до 64 бита! За повече подробности прочетете {linkstart}страницата с документация за това ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Изглежда, че използвате 32-битова PHP версия. Приложението Nextcloud се нуждае от 64 бита, за да работи добре. Моля, надстройте вашата операционна система и PHP до 64 бита! За повече подробности прочетете {linkstart}страницата с документация за това ↗{linkend}.",
+ "%s's homepage" : "%s's начална страница"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/bg.json b/core/l10n/bg.json
index c8b853e25aa..699f357d8d8 100644
--- a/core/l10n/bg.json
+++ b/core/l10n/bg.json
@@ -352,7 +352,6 @@
"Get your own free account" : "Вземете свой собствен безплатен профил",
"%s homepage" : "%s начална страница",
"Confirm your password" : "Потвърдете паролата си",
- "%s's homepage" : "%s's начална страница",
"Connect to your account" : "Свързване към вашия профил",
"Please log in before granting %1$s access to your %2$s account." : "Необходимо е да се впишете, преди да дадете достъп на %1$s до вашия %2$s профил.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ако не се опитвате да настроите ново устройство или приложение, някой се опитва да ви подмами, за да му предоставите достъп до вашите данни. В този случай не продължавайте и вместо това се свържете със системния си администратор.",
@@ -421,6 +420,7 @@
"Contacts" : "Контакти",
"Contacts menu" : "Контакти",
"Setup two-factor authentication" : "Свържи двустепенно удостоверяване",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Изглежда, че използвате 32-битова PHP версия. Приложението Nextcloud се нуждае от 64 бита, за да работи добре. Моля, надстройте вашата операционна система и PHP до 64 бита! За повече подробности прочетете {linkstart}страницата с документация за това ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Изглежда, че използвате 32-битова PHP версия. Приложението Nextcloud се нуждае от 64 бита, за да работи добре. Моля, надстройте вашата операционна система и PHP до 64 бита! За повече подробности прочетете {linkstart}страницата с документация за това ↗{linkend}.",
+ "%s's homepage" : "%s's начална страница"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index 87da2e40c83..40ad809a216 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -357,7 +357,6 @@ OC.L10N.register(
"Get your own free account" : "Obtingueu el vostre propi compte gratuït",
"%s homepage" : "pàgina d'inici de %s",
"Confirm your password" : "Confirmeu la vostra contrasenya",
- "%s's homepage" : "Pàgina d'inici de %s",
"Connect to your account" : "Connecta al vostre compte",
"Please log in before granting %1$s access to your %2$s account." : "Si us plau inicieu la sessió abans de concedir %1$s accés al vostre compte %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si no intenteu configurar un dispositiu o una aplicació nous, algú intenta enganyar-vos per concedir-lis accés a les vostres dades. En aquest cas, no procediu i, en canvi, poseu-vos en contacte amb l'administrador del sistema.",
@@ -426,6 +425,7 @@ OC.L10N.register(
"Contacts" : "Contactes",
"Contacts menu" : "Menú de contactes",
"Setup two-factor authentication" : "Configura l'autenticació de doble factor",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Sembla que esteu executant una versió PHP de 32 bits. Nextcloud necessita 64 bits per funcionar bé. Si us plau, actualitzeu el vostre sistema operatiu i PHP a 64 bits! Per obtenir més detalls, llegiu {linkstart}la pàgina de documentació sobre això ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Sembla que esteu executant una versió PHP de 32 bits. Nextcloud necessita 64 bits per funcionar bé. Si us plau, actualitzeu el vostre sistema operatiu i PHP a 64 bits! Per obtenir més detalls, llegiu {linkstart}la pàgina de documentació sobre això ↗{linkend}.",
+ "%s's homepage" : "Pàgina d'inici de %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index 1b0040bc8bd..f9eaaa201df 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -355,7 +355,6 @@
"Get your own free account" : "Obtingueu el vostre propi compte gratuït",
"%s homepage" : "pàgina d'inici de %s",
"Confirm your password" : "Confirmeu la vostra contrasenya",
- "%s's homepage" : "Pàgina d'inici de %s",
"Connect to your account" : "Connecta al vostre compte",
"Please log in before granting %1$s access to your %2$s account." : "Si us plau inicieu la sessió abans de concedir %1$s accés al vostre compte %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si no intenteu configurar un dispositiu o una aplicació nous, algú intenta enganyar-vos per concedir-lis accés a les vostres dades. En aquest cas, no procediu i, en canvi, poseu-vos en contacte amb l'administrador del sistema.",
@@ -424,6 +423,7 @@
"Contacts" : "Contactes",
"Contacts menu" : "Menú de contactes",
"Setup two-factor authentication" : "Configura l'autenticació de doble factor",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Sembla que esteu executant una versió PHP de 32 bits. Nextcloud necessita 64 bits per funcionar bé. Si us plau, actualitzeu el vostre sistema operatiu i PHP a 64 bits! Per obtenir més detalls, llegiu {linkstart}la pàgina de documentació sobre això ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Sembla que esteu executant una versió PHP de 32 bits. Nextcloud necessita 64 bits per funcionar bé. Si us plau, actualitzeu el vostre sistema operatiu i PHP a 64 bits! Per obtenir més detalls, llegiu {linkstart}la pàgina de documentació sobre això ↗{linkend}.",
+ "%s's homepage" : "Pàgina d'inici de %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/cs.js b/core/l10n/cs.js
index 349ca52ca80..43ed7033cd9 100644
--- a/core/l10n/cs.js
+++ b/core/l10n/cs.js
@@ -357,7 +357,6 @@ OC.L10N.register(
"Get your own free account" : "Získejte svůj vlastní účet zdarma",
"%s homepage" : "Domovská stránka %s",
"Confirm your password" : "Potvrdit heslo",
- "%s's homepage" : "Domovská stránka uživatele %s",
"Connect to your account" : "Propojit s vaším účtem",
"Please log in before granting %1$s access to your %2$s account." : "Přihlaste se abyste mohli %1$s udělit přístup k vašemu %2$s účtu.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Pokud se nepokoušíte nastavit nové zařízení či aplikaci, někdo se pokouší vás ošálit a získat tak přístup k vašim datům. V takovém případě nepokračujte a obraťte se na svého správce systémů.",
@@ -426,6 +425,7 @@ OC.L10N.register(
"Contacts" : "Kontakty",
"Contacts menu" : "Nabídka kontaktů",
"Setup two-factor authentication" : "Nastavit dvoufázové ověřování",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Zdá se, že provozujete 32bitovou verzi PHP. Aby správně fungoval, potřebuje Nextcloud 64bit. Přejděte na 64bit instalaci operačního systému a PHP! Bližší podrobnosti naleznete {linkstart}na stránce v dokumentaci ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Zdá se, že provozujete 32bitovou verzi PHP. Aby správně fungoval, potřebuje Nextcloud 64bit. Přejděte na 64bit instalaci operačního systému a PHP! Bližší podrobnosti naleznete {linkstart}na stránce v dokumentaci ↗{linkend}.",
+ "%s's homepage" : "Domovská stránka uživatele %s"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/core/l10n/cs.json b/core/l10n/cs.json
index e3062e8849d..edf60d5ec04 100644
--- a/core/l10n/cs.json
+++ b/core/l10n/cs.json
@@ -355,7 +355,6 @@
"Get your own free account" : "Získejte svůj vlastní účet zdarma",
"%s homepage" : "Domovská stránka %s",
"Confirm your password" : "Potvrdit heslo",
- "%s's homepage" : "Domovská stránka uživatele %s",
"Connect to your account" : "Propojit s vaším účtem",
"Please log in before granting %1$s access to your %2$s account." : "Přihlaste se abyste mohli %1$s udělit přístup k vašemu %2$s účtu.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Pokud se nepokoušíte nastavit nové zařízení či aplikaci, někdo se pokouší vás ošálit a získat tak přístup k vašim datům. V takovém případě nepokračujte a obraťte se na svého správce systémů.",
@@ -424,6 +423,7 @@
"Contacts" : "Kontakty",
"Contacts menu" : "Nabídka kontaktů",
"Setup two-factor authentication" : "Nastavit dvoufázové ověřování",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Zdá se, že provozujete 32bitovou verzi PHP. Aby správně fungoval, potřebuje Nextcloud 64bit. Přejděte na 64bit instalaci operačního systému a PHP! Bližší podrobnosti naleznete {linkstart}na stránce v dokumentaci ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Zdá se, že provozujete 32bitovou verzi PHP. Aby správně fungoval, potřebuje Nextcloud 64bit. Přejděte na 64bit instalaci operačního systému a PHP! Bližší podrobnosti naleznete {linkstart}na stránce v dokumentaci ↗{linkend}.",
+ "%s's homepage" : "Domovská stránka uživatele %s"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/core/l10n/da.js b/core/l10n/da.js
index 240882baa79..d4cc829a600 100644
--- a/core/l10n/da.js
+++ b/core/l10n/da.js
@@ -350,7 +350,6 @@ OC.L10N.register(
"Skip to navigation of app" : "Skip til navigation af app",
"Get your own free account" : "Få din egen gratis konto",
"Confirm your password" : "Bekræft dit password",
- "%s's homepage" : "%s's hjemmeside",
"Connect to your account" : "Forbind til din konto",
"Please log in before granting %1$s access to your %2$s account." : "Log venligst ind for at tildele %1$s adgang til din %2$s konto.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Hvis du ikke er igang med at konfigurerer en ny enhed eller app, så er der nogen som forsøger at snyde dig til at give dem adgang til dine data. I dette filfælde skal du ikke forsætte, men istedet kontakte din system administrator.",
@@ -419,6 +418,7 @@ OC.L10N.register(
"Contacts" : "Kontakter",
"Contacts menu" : "Menuen kontakter",
"Setup two-factor authentication" : "Opsæt to-faktor godkendelse",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Det ser ud til, at du kører en 32-bit PHP-version. Nextcloud har brug for 64-bit for at køre godt. Opgrader venligst dit OS og PHP til 64-bit! For yderligere detaljer læs {linkstart}dokumentationssiden om dette ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Det ser ud til, at du kører en 32-bit PHP-version. Nextcloud har brug for 64-bit for at køre godt. Opgrader venligst dit OS og PHP til 64-bit! For yderligere detaljer læs {linkstart}dokumentationssiden om dette ↗{linkend}.",
+ "%s's homepage" : "%s's hjemmeside"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/da.json b/core/l10n/da.json
index 58bc64a7a3f..2c633738f23 100644
--- a/core/l10n/da.json
+++ b/core/l10n/da.json
@@ -348,7 +348,6 @@
"Skip to navigation of app" : "Skip til navigation af app",
"Get your own free account" : "Få din egen gratis konto",
"Confirm your password" : "Bekræft dit password",
- "%s's homepage" : "%s's hjemmeside",
"Connect to your account" : "Forbind til din konto",
"Please log in before granting %1$s access to your %2$s account." : "Log venligst ind for at tildele %1$s adgang til din %2$s konto.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Hvis du ikke er igang med at konfigurerer en ny enhed eller app, så er der nogen som forsøger at snyde dig til at give dem adgang til dine data. I dette filfælde skal du ikke forsætte, men istedet kontakte din system administrator.",
@@ -417,6 +416,7 @@
"Contacts" : "Kontakter",
"Contacts menu" : "Menuen kontakter",
"Setup two-factor authentication" : "Opsæt to-faktor godkendelse",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Det ser ud til, at du kører en 32-bit PHP-version. Nextcloud har brug for 64-bit for at køre godt. Opgrader venligst dit OS og PHP til 64-bit! For yderligere detaljer læs {linkstart}dokumentationssiden om dette ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Det ser ud til, at du kører en 32-bit PHP-version. Nextcloud har brug for 64-bit for at køre godt. Opgrader venligst dit OS og PHP til 64-bit! For yderligere detaljer læs {linkstart}dokumentationssiden om dette ↗{linkend}.",
+ "%s's homepage" : "%s's hjemmeside"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 2c9a07275eb..ccdf3d7540c 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -356,7 +356,6 @@ OC.L10N.register(
"Get your own free account" : "Hole dir dein eigenes kostenloses Konto",
"%s homepage" : "%s Internetseite",
"Confirm your password" : "Bestätige dein Passwort",
- "%s's homepage" : "Homepage von %s",
"Connect to your account" : "Verbinde dich mit deinem Konto",
"Please log in before granting %1$s access to your %2$s account." : "Bitte melde dich an, bevor du %1$s Zugriff auf dein %2$s-Konto gewährst.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Solltest du aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, das jemand versucht, dich dazu zu bewegen, ihm Zugriff auf deine Daten zu gewähren. Fahre in diesem Fall nicht fort, sondern wende dich an deinen Administrator.",
@@ -425,6 +424,7 @@ OC.L10N.register(
"Contacts" : "Kontakte",
"Contacts menu" : "Kontakte-Menü",
"Setup two-factor authentication" : "Zwei-Faktor-Authentifizierung konfigurieren",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Anscheinend führst du eine 32-Bit-PHP-Version aus. Nextcloud benötigt 64bit, um gut zu laufen. Bitte aktualisiere dein Betriebssystem und PHP auf 64bit! Für weitere Details lese bitte die {linkstart}diesbezügliche Dokumentationsseite ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Anscheinend führst du eine 32-Bit-PHP-Version aus. Nextcloud benötigt 64bit, um gut zu laufen. Bitte aktualisiere dein Betriebssystem und PHP auf 64bit! Für weitere Details lese bitte die {linkstart}diesbezügliche Dokumentationsseite ↗{linkend}.",
+ "%s's homepage" : "Homepage von %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/de.json b/core/l10n/de.json
index 2da95f6327b..d307af925e1 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -354,7 +354,6 @@
"Get your own free account" : "Hole dir dein eigenes kostenloses Konto",
"%s homepage" : "%s Internetseite",
"Confirm your password" : "Bestätige dein Passwort",
- "%s's homepage" : "Homepage von %s",
"Connect to your account" : "Verbinde dich mit deinem Konto",
"Please log in before granting %1$s access to your %2$s account." : "Bitte melde dich an, bevor du %1$s Zugriff auf dein %2$s-Konto gewährst.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Solltest du aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, das jemand versucht, dich dazu zu bewegen, ihm Zugriff auf deine Daten zu gewähren. Fahre in diesem Fall nicht fort, sondern wende dich an deinen Administrator.",
@@ -423,6 +422,7 @@
"Contacts" : "Kontakte",
"Contacts menu" : "Kontakte-Menü",
"Setup two-factor authentication" : "Zwei-Faktor-Authentifizierung konfigurieren",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Anscheinend führst du eine 32-Bit-PHP-Version aus. Nextcloud benötigt 64bit, um gut zu laufen. Bitte aktualisiere dein Betriebssystem und PHP auf 64bit! Für weitere Details lese bitte die {linkstart}diesbezügliche Dokumentationsseite ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Anscheinend führst du eine 32-Bit-PHP-Version aus. Nextcloud benötigt 64bit, um gut zu laufen. Bitte aktualisiere dein Betriebssystem und PHP auf 64bit! Für weitere Details lese bitte die {linkstart}diesbezügliche Dokumentationsseite ↗{linkend}.",
+ "%s's homepage" : "Homepage von %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index a763f7f6d71..a67cd94fe19 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -358,7 +358,6 @@ OC.L10N.register(
"Get your own free account" : "Holen Sie sich Ihr eigenes kostenloses Konto",
"%s homepage" : "%s Internetseite",
"Confirm your password" : "Bestätigen Sie Ihr Passwort",
- "%s's homepage" : "Homepage von %s",
"Connect to your account" : "Verbinden Sie sich mit Ihrem Konto",
"Please log in before granting %1$s access to your %2$s account." : "Bitte anmelden, bevor Sie %1$s Zugriff auf Ihr %2$s-Konto gewähren.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Sollten Sie aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, dass aktuell jemand versucht, Sie dazu zu bewegen, ihm Zugriff auf Ihre Daten zu gewähren. Fahren Sie in diesem Fall nicht fort, sondern wenden Sie sich an Ihren Administrator.",
@@ -427,6 +426,7 @@ OC.L10N.register(
"Contacts" : "Kontakte",
"Contacts menu" : "Kontakte-Menü",
"Setup two-factor authentication" : "Zwei-Faktor-Authentifizierung einrichten",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Sie scheinen eine 32-Bit PHP-Version auszuführen. Nextcloud benötigt 64-Bit, um gut zu laufen. Bitte aktualisieren Sie Ihr Betriebssystem und PHP auf 64-Bit! Für weitere Details lesen Sie die {linkstart}diesbezügliche Dokumentationsseite ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Sie scheinen eine 32-Bit PHP-Version auszuführen. Nextcloud benötigt 64-Bit, um gut zu laufen. Bitte aktualisieren Sie Ihr Betriebssystem und PHP auf 64-Bit! Für weitere Details lesen Sie die {linkstart}diesbezügliche Dokumentationsseite ↗{linkend}.",
+ "%s's homepage" : "Homepage von %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index 2354d06007b..71554a176ba 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -356,7 +356,6 @@
"Get your own free account" : "Holen Sie sich Ihr eigenes kostenloses Konto",
"%s homepage" : "%s Internetseite",
"Confirm your password" : "Bestätigen Sie Ihr Passwort",
- "%s's homepage" : "Homepage von %s",
"Connect to your account" : "Verbinden Sie sich mit Ihrem Konto",
"Please log in before granting %1$s access to your %2$s account." : "Bitte anmelden, bevor Sie %1$s Zugriff auf Ihr %2$s-Konto gewähren.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Sollten Sie aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, dass aktuell jemand versucht, Sie dazu zu bewegen, ihm Zugriff auf Ihre Daten zu gewähren. Fahren Sie in diesem Fall nicht fort, sondern wenden Sie sich an Ihren Administrator.",
@@ -425,6 +424,7 @@
"Contacts" : "Kontakte",
"Contacts menu" : "Kontakte-Menü",
"Setup two-factor authentication" : "Zwei-Faktor-Authentifizierung einrichten",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Sie scheinen eine 32-Bit PHP-Version auszuführen. Nextcloud benötigt 64-Bit, um gut zu laufen. Bitte aktualisieren Sie Ihr Betriebssystem und PHP auf 64-Bit! Für weitere Details lesen Sie die {linkstart}diesbezügliche Dokumentationsseite ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Sie scheinen eine 32-Bit PHP-Version auszuführen. Nextcloud benötigt 64-Bit, um gut zu laufen. Bitte aktualisieren Sie Ihr Betriebssystem und PHP auf 64-Bit! Für weitere Details lesen Sie die {linkstart}diesbezügliche Dokumentationsseite ↗{linkend}.",
+ "%s's homepage" : "Homepage von %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js
index 4dcf70133a6..df9fb65a362 100644
--- a/core/l10n/en_GB.js
+++ b/core/l10n/en_GB.js
@@ -358,7 +358,6 @@ OC.L10N.register(
"Get your own free account" : "Get your own free account",
"%s homepage" : "%s homepage",
"Confirm your password" : "Confirm your password",
- "%s's homepage" : "%s's homepage",
"Connect to your account" : "Connect to your account",
"Please log in before granting %1$s access to your %2$s account." : "Please log in before granting %1$s access to your %2$s account.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator.",
@@ -427,6 +426,7 @@ OC.L10N.register(
"Contacts" : "Contacts",
"Contacts menu" : "Contacts menu",
"Setup two-factor authentication" : "Setup two-factor authentication",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}.",
+ "%s's homepage" : "%s's homepage"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json
index a6c1009acb0..298dcab0b30 100644
--- a/core/l10n/en_GB.json
+++ b/core/l10n/en_GB.json
@@ -356,7 +356,6 @@
"Get your own free account" : "Get your own free account",
"%s homepage" : "%s homepage",
"Confirm your password" : "Confirm your password",
- "%s's homepage" : "%s's homepage",
"Connect to your account" : "Connect to your account",
"Please log in before granting %1$s access to your %2$s account." : "Please log in before granting %1$s access to your %2$s account.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator.",
@@ -425,6 +424,7 @@
"Contacts" : "Contacts",
"Contacts menu" : "Contacts menu",
"Setup two-factor authentication" : "Setup two-factor authentication",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}.",
+ "%s's homepage" : "%s's homepage"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/eo.js b/core/l10n/eo.js
index 4ea249696c6..01405124778 100644
--- a/core/l10n/eo.js
+++ b/core/l10n/eo.js
@@ -287,7 +287,6 @@ OC.L10N.register(
"Skip to navigation of app" : "Iru al la aplikaĵa navigado",
"Get your own free account" : "Ekhavu vian propran senpagan konton",
"Confirm your password" : "Konfirmu vian pasvorton",
- "%s's homepage" : "Ĉefpaĝo de %s",
"Connect to your account" : "Konekti al via konto",
"Please log in before granting %1$s access to your %2$s account." : "Bv. unue ensaluti por doni al %1$s aliron al via konto %2$s.",
"App token" : "Aplikaĵa ĵetono",
@@ -345,6 +344,7 @@ OC.L10N.register(
"More apps menu" : "Menuo „Pli da aplikaĵoj“",
"Contacts" : "Kontaktoj",
"Contacts menu" : "Menuo de kontaktoj",
- "Setup two-factor authentication" : "Agordi dufazan aŭtentigon"
+ "Setup two-factor authentication" : "Agordi dufazan aŭtentigon",
+ "%s's homepage" : "Ĉefpaĝo de %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/eo.json b/core/l10n/eo.json
index 1831a78b61a..aa530632210 100644
--- a/core/l10n/eo.json
+++ b/core/l10n/eo.json
@@ -285,7 +285,6 @@
"Skip to navigation of app" : "Iru al la aplikaĵa navigado",
"Get your own free account" : "Ekhavu vian propran senpagan konton",
"Confirm your password" : "Konfirmu vian pasvorton",
- "%s's homepage" : "Ĉefpaĝo de %s",
"Connect to your account" : "Konekti al via konto",
"Please log in before granting %1$s access to your %2$s account." : "Bv. unue ensaluti por doni al %1$s aliron al via konto %2$s.",
"App token" : "Aplikaĵa ĵetono",
@@ -343,6 +342,7 @@
"More apps menu" : "Menuo „Pli da aplikaĵoj“",
"Contacts" : "Kontaktoj",
"Contacts menu" : "Menuo de kontaktoj",
- "Setup two-factor authentication" : "Agordi dufazan aŭtentigon"
+ "Setup two-factor authentication" : "Agordi dufazan aŭtentigon",
+ "%s's homepage" : "Ĉefpaĝo de %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/es.js b/core/l10n/es.js
index 5f6b27c6954..d8d3b4ee476 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -51,6 +51,7 @@ OC.L10N.register(
"Repair info:" : "Información de reparación:",
"Repair warning:" : "Advertencia de reparación:",
"Repair error:" : "Error que reparar:",
+ "Please use the command line updater because updating via the browser is disabled in your config.php." : "Por favor use el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.",
"Turned on maintenance mode" : "Modo mantenimiento activado",
"Turned off maintenance mode" : "Modo mantenimiento desactivado",
"Maintenance mode is kept active" : "El modo mantenimiento aún está activo.",
@@ -183,6 +184,7 @@ OC.L10N.register(
"Simple email app nicely integrated with Files, Contacts and Calendar." : "Simple email app se integra bien con Archivos, Contactos y Calendario.",
"Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Mensajes, videollamadas, compartir pantalla, reuniones online y conferencias web – en tu navegador y con apps móviles.",
"Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Documentos colaborativos, hojas de cálculo y presentaciones, basadas en Collabora Online.",
+ "Distraction free note taking app." : "App de de notas y escritura libre de distracciones.",
"Search contacts" : "Buscar contactos",
"Forgot password?" : "¿Contraseña olvidada?",
"Log in with a device" : "Iniciar sesión con dispositivo",
@@ -214,6 +216,7 @@ OC.L10N.register(
"Settings menu" : "Menú de configuraciones",
"Search {types} …" : "Buscar {types}…",
"Settings" : "Configuraciones",
+ "Avatar of {fullName}" : "Avatar de {fullName}",
"Could not load your contacts" : "No se han podido cargar los contactos",
"Search contacts …" : "Buscar contactos...",
"No contacts found" : "No se han encontrado contactos",
@@ -284,6 +287,7 @@ OC.L10N.register(
"Strong password" : "Contraseña muy buena",
"No action available" : "No hay acciones disponibles",
"Error fetching contact actions" : "Error recuperando las acciones de los contactos",
+ "Close \"{dialogTitle}\" dialog" : "Cerrar diálogo \"{dialogTitle}\"",
"Non-existing tag #{tag}" : "Categoría #{tag} no existente",
"Restricted" : "Restringido",
"Invisible" : "Invisible",
@@ -354,7 +358,6 @@ OC.L10N.register(
"Get your own free account" : "Consigue tu propia cuenta gratuita",
"%s homepage" : "Página de inicio de %s",
"Confirm your password" : "Confirme su contraseña",
- "%s's homepage" : "%s página de inicio",
"Connect to your account" : "Conectar a cuenta",
"Please log in before granting %1$s access to your %2$s account." : "Por favor, inicia sesión antes de conceder a %1$s acceso a tu cuenta %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si no estás intentando añadir un nuevo dispositivo o una nueva app, alguien está intentando engañarte para que proporciones acceso a tus datos. En este caso, no prosigas y en su lugar avisa a tu administrador de sistemas.",
@@ -423,6 +426,7 @@ OC.L10N.register(
"Contacts" : "Contactos",
"Contacts menu" : "Menú de contactos",
"Setup two-factor authentication" : "Configurar autenticación de dos factores",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que está ejecutando una versión de PHP de 32 bits. Nextcloud necesita 64 bits para su correcto funcionamiento. ¡Por favor, actualice su sistema operativo y PHP a 64 bits! Puede leer más detalles en {linkstart}la página de documentación correspondiente ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que está ejecutando una versión de PHP de 32 bits. Nextcloud necesita 64 bits para su correcto funcionamiento. ¡Por favor, actualice su sistema operativo y PHP a 64 bits! Puede leer más detalles en {linkstart}la página de documentación correspondiente ↗{linkend}.",
+ "%s's homepage" : "%s página de inicio"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/core/l10n/es.json b/core/l10n/es.json
index f148cb5316c..05eb58fd2b9 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -49,6 +49,7 @@
"Repair info:" : "Información de reparación:",
"Repair warning:" : "Advertencia de reparación:",
"Repair error:" : "Error que reparar:",
+ "Please use the command line updater because updating via the browser is disabled in your config.php." : "Por favor use el actualizador de línea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.",
"Turned on maintenance mode" : "Modo mantenimiento activado",
"Turned off maintenance mode" : "Modo mantenimiento desactivado",
"Maintenance mode is kept active" : "El modo mantenimiento aún está activo.",
@@ -181,6 +182,7 @@
"Simple email app nicely integrated with Files, Contacts and Calendar." : "Simple email app se integra bien con Archivos, Contactos y Calendario.",
"Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Mensajes, videollamadas, compartir pantalla, reuniones online y conferencias web – en tu navegador y con apps móviles.",
"Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Documentos colaborativos, hojas de cálculo y presentaciones, basadas en Collabora Online.",
+ "Distraction free note taking app." : "App de de notas y escritura libre de distracciones.",
"Search contacts" : "Buscar contactos",
"Forgot password?" : "¿Contraseña olvidada?",
"Log in with a device" : "Iniciar sesión con dispositivo",
@@ -212,6 +214,7 @@
"Settings menu" : "Menú de configuraciones",
"Search {types} …" : "Buscar {types}…",
"Settings" : "Configuraciones",
+ "Avatar of {fullName}" : "Avatar de {fullName}",
"Could not load your contacts" : "No se han podido cargar los contactos",
"Search contacts …" : "Buscar contactos...",
"No contacts found" : "No se han encontrado contactos",
@@ -282,6 +285,7 @@
"Strong password" : "Contraseña muy buena",
"No action available" : "No hay acciones disponibles",
"Error fetching contact actions" : "Error recuperando las acciones de los contactos",
+ "Close \"{dialogTitle}\" dialog" : "Cerrar diálogo \"{dialogTitle}\"",
"Non-existing tag #{tag}" : "Categoría #{tag} no existente",
"Restricted" : "Restringido",
"Invisible" : "Invisible",
@@ -352,7 +356,6 @@
"Get your own free account" : "Consigue tu propia cuenta gratuita",
"%s homepage" : "Página de inicio de %s",
"Confirm your password" : "Confirme su contraseña",
- "%s's homepage" : "%s página de inicio",
"Connect to your account" : "Conectar a cuenta",
"Please log in before granting %1$s access to your %2$s account." : "Por favor, inicia sesión antes de conceder a %1$s acceso a tu cuenta %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si no estás intentando añadir un nuevo dispositivo o una nueva app, alguien está intentando engañarte para que proporciones acceso a tus datos. En este caso, no prosigas y en su lugar avisa a tu administrador de sistemas.",
@@ -421,6 +424,7 @@
"Contacts" : "Contactos",
"Contacts menu" : "Menú de contactos",
"Setup two-factor authentication" : "Configurar autenticación de dos factores",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que está ejecutando una versión de PHP de 32 bits. Nextcloud necesita 64 bits para su correcto funcionamiento. ¡Por favor, actualice su sistema operativo y PHP a 64 bits! Puede leer más detalles en {linkstart}la página de documentación correspondiente ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que está ejecutando una versión de PHP de 32 bits. Nextcloud necesita 64 bits para su correcto funcionamiento. ¡Por favor, actualice su sistema operativo y PHP a 64 bits! Puede leer más detalles en {linkstart}la página de documentación correspondiente ↗{linkend}.",
+ "%s's homepage" : "%s página de inicio"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/core/l10n/eu.js b/core/l10n/eu.js
index 04b079d91b8..3f3fde0fa42 100644
--- a/core/l10n/eu.js
+++ b/core/l10n/eu.js
@@ -353,7 +353,6 @@ OC.L10N.register(
"Skip to navigation of app" : "Salto aplikazioaren nabigaziora",
"Get your own free account" : "Eskuratu zure kontu propioa doan",
"Confirm your password" : "Berretsi pasahitza",
- "%s's homepage" : "%s-(r)en hasiera orria",
"Connect to your account" : "Konektatu zure kontura",
"Please log in before granting %1$s access to your %2$s account." : "Hasi saioa %1$s-(r)i zure %2$s kontura sarbidea eman aurretik.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Gailu edo aplikazio berri bat konfiguratzen saiatzen ari ez bazara, norbait zu engainatzen saiatzen ari da zure datuetarako sarbidea eman diezaiozun. Kasu horretan, jarraitu ordez jarri harremanetan sistemaren administratzailearekin.",
@@ -422,6 +421,7 @@ OC.L10N.register(
"Contacts" : "Kontaktuak",
"Contacts menu" : "Kontaktuen menua",
"Setup two-factor authentication" : "Konfiguratu bi faktoreko autentifikazioa",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Badirudi 32-bit-eko PHP bertsioa exekutatzen ari zarela. Nextcloudek 64-bit behar ditu ondo funtzionatzeko. Eguneratu zure SE eta PHP 64-bit-etara! Xehetasun gehiagorako irakurri {linkstart}honi buruzko dokumentazioa ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Badirudi 32-bit-eko PHP bertsioa exekutatzen ari zarela. Nextcloudek 64-bit behar ditu ondo funtzionatzeko. Eguneratu zure SE eta PHP 64-bit-etara! Xehetasun gehiagorako irakurri {linkstart}honi buruzko dokumentazioa ↗{linkend}.",
+ "%s's homepage" : "%s-(r)en hasiera orria"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/eu.json b/core/l10n/eu.json
index 50825dd2e25..f8999fe0c78 100644
--- a/core/l10n/eu.json
+++ b/core/l10n/eu.json
@@ -351,7 +351,6 @@
"Skip to navigation of app" : "Salto aplikazioaren nabigaziora",
"Get your own free account" : "Eskuratu zure kontu propioa doan",
"Confirm your password" : "Berretsi pasahitza",
- "%s's homepage" : "%s-(r)en hasiera orria",
"Connect to your account" : "Konektatu zure kontura",
"Please log in before granting %1$s access to your %2$s account." : "Hasi saioa %1$s-(r)i zure %2$s kontura sarbidea eman aurretik.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Gailu edo aplikazio berri bat konfiguratzen saiatzen ari ez bazara, norbait zu engainatzen saiatzen ari da zure datuetarako sarbidea eman diezaiozun. Kasu horretan, jarraitu ordez jarri harremanetan sistemaren administratzailearekin.",
@@ -420,6 +419,7 @@
"Contacts" : "Kontaktuak",
"Contacts menu" : "Kontaktuen menua",
"Setup two-factor authentication" : "Konfiguratu bi faktoreko autentifikazioa",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Badirudi 32-bit-eko PHP bertsioa exekutatzen ari zarela. Nextcloudek 64-bit behar ditu ondo funtzionatzeko. Eguneratu zure SE eta PHP 64-bit-etara! Xehetasun gehiagorako irakurri {linkstart}honi buruzko dokumentazioa ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Badirudi 32-bit-eko PHP bertsioa exekutatzen ari zarela. Nextcloudek 64-bit behar ditu ondo funtzionatzeko. Eguneratu zure SE eta PHP 64-bit-etara! Xehetasun gehiagorako irakurri {linkstart}honi buruzko dokumentazioa ↗{linkend}.",
+ "%s's homepage" : "%s-(r)en hasiera orria"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/fi.js b/core/l10n/fi.js
index 618a54c7bc3..a3ff701ce64 100644
--- a/core/l10n/fi.js
+++ b/core/l10n/fi.js
@@ -317,7 +317,6 @@ OC.L10N.register(
"Skip to navigation of app" : "Hyppää sovelluksen navigointiin.",
"Get your own free account" : "Hanki ilmainen tili itsellesi",
"Confirm your password" : "Vahvista salasanasi",
- "%s's homepage" : "Käyttäjän %s kotisivu",
"Connect to your account" : "Yhdistä tiliisi",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Jos et ole asentamassa uutta laitetta tai sovellusta, joku yrittää huijata sinut antamaan käyttöoikeudet tietoihisi. Tässä tapauksessa älä jatka, ota yhteys järjestelmänvalvojaan.",
"App token" : "Sovellusvaltuutus",
@@ -379,6 +378,7 @@ OC.L10N.register(
"More apps menu" : "Lisäsovellusvalikko",
"Contacts" : "Yhteystiedot",
"Contacts menu" : "Yhteystietovalikko",
- "Setup two-factor authentication" : "Määritä kaksivaiheinen tunnistautuminen"
+ "Setup two-factor authentication" : "Määritä kaksivaiheinen tunnistautuminen",
+ "%s's homepage" : "Käyttäjän %s kotisivu"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/fi.json b/core/l10n/fi.json
index 1319b4960bc..e4483263ad7 100644
--- a/core/l10n/fi.json
+++ b/core/l10n/fi.json
@@ -315,7 +315,6 @@
"Skip to navigation of app" : "Hyppää sovelluksen navigointiin.",
"Get your own free account" : "Hanki ilmainen tili itsellesi",
"Confirm your password" : "Vahvista salasanasi",
- "%s's homepage" : "Käyttäjän %s kotisivu",
"Connect to your account" : "Yhdistä tiliisi",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Jos et ole asentamassa uutta laitetta tai sovellusta, joku yrittää huijata sinut antamaan käyttöoikeudet tietoihisi. Tässä tapauksessa älä jatka, ota yhteys järjestelmänvalvojaan.",
"App token" : "Sovellusvaltuutus",
@@ -377,6 +376,7 @@
"More apps menu" : "Lisäsovellusvalikko",
"Contacts" : "Yhteystiedot",
"Contacts menu" : "Yhteystietovalikko",
- "Setup two-factor authentication" : "Määritä kaksivaiheinen tunnistautuminen"
+ "Setup two-factor authentication" : "Määritä kaksivaiheinen tunnistautuminen",
+ "%s's homepage" : "Käyttäjän %s kotisivu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index ae68e24dfe4..585516901d8 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -358,7 +358,6 @@ OC.L10N.register(
"Get your own free account" : "Obtenez votre compte personnel gratuit",
"%s homepage" : "Page d'accueil de %s",
"Confirm your password" : "Confirmer votre mot de passe",
- "%s's homepage" : "Page personnelle de %s",
"Connect to your account" : "Connectez vous à votre compte",
"Please log in before granting %1$s access to your %2$s account." : "Veuillez vous connecter avant d'autoriser %1$s à accéder à votre compte %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si vous n'essayez pas d'ajouter un nouveau périphérique ou une nouvelle application, quelqu'un fait une tentative d'accès à vos données. Dans ce cas, ne continuez pas et contactez votre administrateur système.",
@@ -427,6 +426,7 @@ OC.L10N.register(
"Contacts" : "Contacts",
"Contacts menu" : "Menu des contacts",
"Setup two-factor authentication" : "Paramétrer l'authentification à double facteur",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Il semble que vous utilisez une version 32-bits de PHP. Nextcloud nécessite une version 64-bits pour bien fonctionner. Merci de mettre à niveau votre système d'exploitation et PHP en 64-bits. Pour plus de détails consultez {linkstart}the documentation page about this ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Il semble que vous utilisez une version 32-bits de PHP. Nextcloud nécessite une version 64-bits pour bien fonctionner. Merci de mettre à niveau votre système d'exploitation et PHP en 64-bits. Pour plus de détails consultez {linkstart}the documentation page about this ↗{linkend}.",
+ "%s's homepage" : "Page personnelle de %s"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index 154678aa0dc..31c8653a3dd 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -356,7 +356,6 @@
"Get your own free account" : "Obtenez votre compte personnel gratuit",
"%s homepage" : "Page d'accueil de %s",
"Confirm your password" : "Confirmer votre mot de passe",
- "%s's homepage" : "Page personnelle de %s",
"Connect to your account" : "Connectez vous à votre compte",
"Please log in before granting %1$s access to your %2$s account." : "Veuillez vous connecter avant d'autoriser %1$s à accéder à votre compte %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si vous n'essayez pas d'ajouter un nouveau périphérique ou une nouvelle application, quelqu'un fait une tentative d'accès à vos données. Dans ce cas, ne continuez pas et contactez votre administrateur système.",
@@ -425,6 +424,7 @@
"Contacts" : "Contacts",
"Contacts menu" : "Menu des contacts",
"Setup two-factor authentication" : "Paramétrer l'authentification à double facteur",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Il semble que vous utilisez une version 32-bits de PHP. Nextcloud nécessite une version 64-bits pour bien fonctionner. Merci de mettre à niveau votre système d'exploitation et PHP en 64-bits. Pour plus de détails consultez {linkstart}the documentation page about this ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Il semble que vous utilisez une version 32-bits de PHP. Nextcloud nécessite une version 64-bits pour bien fonctionner. Merci de mettre à niveau votre système d'exploitation et PHP en 64-bits. Pour plus de détails consultez {linkstart}the documentation page about this ↗{linkend}.",
+ "%s's homepage" : "Page personnelle de %s"
},"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/core/l10n/gl.js b/core/l10n/gl.js
index 5d8ab33bc89..1f5c9ab5b6d 100644
--- a/core/l10n/gl.js
+++ b/core/l10n/gl.js
@@ -354,7 +354,6 @@ OC.L10N.register(
"Get your own free account" : "Obteña a súa propia conta de balde",
"%s homepage" : "%s páxina de inicio",
"Confirm your password" : "Confirme o seu contrasinal",
- "%s's homepage" : "Páxina principal de %s",
"Connect to your account" : "Conectar á sua conta",
"Please log in before granting %1$s access to your %2$s account." : "Inicie sesión antes de concederlle a %1$s acceso á súa conta %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Se non está a configurar un dispositivo ou aplicación nova, alguén está tentando enganalo para que lle permita o acceso aos seus datos. Neste caso non continúe e póñase en contacto co administrador do sistema.",
@@ -423,6 +422,7 @@ OC.L10N.register(
"Contacts" : "Contactos",
"Contacts menu" : "Menú de contactos",
"Setup two-factor authentication" : "Estabelecer a autenticación de dous factores",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que está a executar unha versión de PHP de 32 bits. Nextcloud necesita 64 bits para funcionar ben. Actualiza o teu sistema operativo e PHP a 64 bits. Para obter máis detalles, le {linkstart}a páxina de documentación sobre isto ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que está a executar unha versión de PHP de 32 bits. Nextcloud necesita 64 bits para funcionar ben. Actualiza o teu sistema operativo e PHP a 64 bits. Para obter máis detalles, le {linkstart}a páxina de documentación sobre isto ↗{linkend}.",
+ "%s's homepage" : "Páxina principal de %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/gl.json b/core/l10n/gl.json
index 0d5c117202b..6dfbd85fe18 100644
--- a/core/l10n/gl.json
+++ b/core/l10n/gl.json
@@ -352,7 +352,6 @@
"Get your own free account" : "Obteña a súa propia conta de balde",
"%s homepage" : "%s páxina de inicio",
"Confirm your password" : "Confirme o seu contrasinal",
- "%s's homepage" : "Páxina principal de %s",
"Connect to your account" : "Conectar á sua conta",
"Please log in before granting %1$s access to your %2$s account." : "Inicie sesión antes de concederlle a %1$s acceso á súa conta %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Se non está a configurar un dispositivo ou aplicación nova, alguén está tentando enganalo para que lle permita o acceso aos seus datos. Neste caso non continúe e póñase en contacto co administrador do sistema.",
@@ -421,6 +420,7 @@
"Contacts" : "Contactos",
"Contacts menu" : "Menú de contactos",
"Setup two-factor authentication" : "Estabelecer a autenticación de dous factores",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que está a executar unha versión de PHP de 32 bits. Nextcloud necesita 64 bits para funcionar ben. Actualiza o teu sistema operativo e PHP a 64 bits. Para obter máis detalles, le {linkstart}a páxina de documentación sobre isto ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que está a executar unha versión de PHP de 32 bits. Nextcloud necesita 64 bits para funcionar ben. Actualiza o teu sistema operativo e PHP a 64 bits. Para obter máis detalles, le {linkstart}a páxina de documentación sobre isto ↗{linkend}.",
+ "%s's homepage" : "Páxina principal de %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/hu.js b/core/l10n/hu.js
index d3eff67fc7d..a5fa77c6c1a 100644
--- a/core/l10n/hu.js
+++ b/core/l10n/hu.js
@@ -353,7 +353,6 @@ OC.L10N.register(
"Skip to navigation of app" : "Ugrás az alkalmazás navigációjához",
"Get your own free account" : "Szerezzen saját ingyenes fiókot",
"Confirm your password" : "Erősítse meg a jelszavát:",
- "%s's homepage" : "%s honlapja",
"Connect to your account" : "Kapcsolódás a fiókjához",
"Please log in before granting %1$s access to your %2$s account." : "Lépjen be mielőtthozzáférést biztosít a(z) %1$s kliensnek a(z) %2$s fiókjához.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ha nem új eszközt vagy alkalmazást próbál beállítani, akkor valaki megpróbálja becsapni, hogy hozzáférést biztosítson számára az adatokhoz. Ebben az esetben ne folytassa, hanem lépjen kapcsolatba a rendszergazdával.",
@@ -422,6 +421,7 @@ OC.L10N.register(
"Contacts" : "Névjegyek",
"Contacts menu" : "Névjegyek menü",
"Setup two-factor authentication" : "Kétfaktoros hitelesítés beállítása",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Úgy tűnik, hogy 32 bites PHP verziót használ. A Nextcloud megfelelő futtatásához 64 bites szükséges. Frissítse 64 bitesre az operációs rendszerét és a PHP-ját. További részletekért olvassa el az {linkstart}erről szóló dokumentációs oldalt ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Úgy tűnik, hogy 32 bites PHP verziót használ. A Nextcloud megfelelő futtatásához 64 bites szükséges. Frissítse 64 bitesre az operációs rendszerét és a PHP-ját. További részletekért olvassa el az {linkstart}erről szóló dokumentációs oldalt ↗{linkend}.",
+ "%s's homepage" : "%s honlapja"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/hu.json b/core/l10n/hu.json
index ded26138a70..97d6b5944c7 100644
--- a/core/l10n/hu.json
+++ b/core/l10n/hu.json
@@ -351,7 +351,6 @@
"Skip to navigation of app" : "Ugrás az alkalmazás navigációjához",
"Get your own free account" : "Szerezzen saját ingyenes fiókot",
"Confirm your password" : "Erősítse meg a jelszavát:",
- "%s's homepage" : "%s honlapja",
"Connect to your account" : "Kapcsolódás a fiókjához",
"Please log in before granting %1$s access to your %2$s account." : "Lépjen be mielőtthozzáférést biztosít a(z) %1$s kliensnek a(z) %2$s fiókjához.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ha nem új eszközt vagy alkalmazást próbál beállítani, akkor valaki megpróbálja becsapni, hogy hozzáférést biztosítson számára az adatokhoz. Ebben az esetben ne folytassa, hanem lépjen kapcsolatba a rendszergazdával.",
@@ -420,6 +419,7 @@
"Contacts" : "Névjegyek",
"Contacts menu" : "Névjegyek menü",
"Setup two-factor authentication" : "Kétfaktoros hitelesítés beállítása",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Úgy tűnik, hogy 32 bites PHP verziót használ. A Nextcloud megfelelő futtatásához 64 bites szükséges. Frissítse 64 bitesre az operációs rendszerét és a PHP-ját. További részletekért olvassa el az {linkstart}erről szóló dokumentációs oldalt ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Úgy tűnik, hogy 32 bites PHP verziót használ. A Nextcloud megfelelő futtatásához 64 bites szükséges. Frissítse 64 bitesre az operációs rendszerét és a PHP-ját. További részletekért olvassa el az {linkstart}erről szóló dokumentációs oldalt ↗{linkend}.",
+ "%s's homepage" : "%s honlapja"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/is.js b/core/l10n/is.js
index 2c9259e51de..8c4df50b256 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -315,7 +315,6 @@ OC.L10N.register(
"Skip to navigation of app" : "Hlaupa yfir í flakk innan forrits",
"Get your own free account" : "Fáðu þér eigin ókeypis aðgang",
"Confirm your password" : "Staðfestu lykilorðið þitt",
- "%s's homepage" : "Heimasíða %s",
"Connect to your account" : "Tengdu við notandaaðganginn þinn",
"Please log in before granting %1$s access to your %2$s account." : "Skráðu þig inn áður en þú leyfir %1$s aðgang að %2$s notandaaðgangnum þínum.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ef þú ert ekki að reyna að setja upp nýtt tæki eða forrit, þá er einhver annar að reyna að gabba þig til að gefa þeim aðgang að gögnunum þínum. Ef svo er, skaltu ekki halda áfram í þessu ferli og hafa strax samband við kerfisstjórann þinn.",
@@ -381,6 +380,7 @@ OC.L10N.register(
"More apps menu" : "Valmynd með fleiri forrit",
"Contacts" : "Tengiliðir",
"Contacts menu" : "Tengiliðavalmynd",
- "Setup two-factor authentication" : "Setja upp tveggja-þátta auðkenningu"
+ "Setup two-factor authentication" : "Setja upp tveggja-þátta auðkenningu",
+ "%s's homepage" : "Heimasíða %s"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/core/l10n/is.json b/core/l10n/is.json
index b6f32138f59..bd13ffc9a23 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -313,7 +313,6 @@
"Skip to navigation of app" : "Hlaupa yfir í flakk innan forrits",
"Get your own free account" : "Fáðu þér eigin ókeypis aðgang",
"Confirm your password" : "Staðfestu lykilorðið þitt",
- "%s's homepage" : "Heimasíða %s",
"Connect to your account" : "Tengdu við notandaaðganginn þinn",
"Please log in before granting %1$s access to your %2$s account." : "Skráðu þig inn áður en þú leyfir %1$s aðgang að %2$s notandaaðgangnum þínum.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ef þú ert ekki að reyna að setja upp nýtt tæki eða forrit, þá er einhver annar að reyna að gabba þig til að gefa þeim aðgang að gögnunum þínum. Ef svo er, skaltu ekki halda áfram í þessu ferli og hafa strax samband við kerfisstjórann þinn.",
@@ -379,6 +378,7 @@
"More apps menu" : "Valmynd með fleiri forrit",
"Contacts" : "Tengiliðir",
"Contacts menu" : "Tengiliðavalmynd",
- "Setup two-factor authentication" : "Setja upp tveggja-þátta auðkenningu"
+ "Setup two-factor authentication" : "Setja upp tveggja-þátta auðkenningu",
+ "%s's homepage" : "Heimasíða %s"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/core/l10n/it.js b/core/l10n/it.js
index bc0d740eb33..7b13cada794 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -345,7 +345,6 @@ OC.L10N.register(
"Skip to navigation of app" : "Passa alla navigazione dell'applicazione",
"Get your own free account" : "Ottieni il tuo account gratuito",
"Confirm your password" : "Conferma la tua password",
- "%s's homepage" : "%s's homepage",
"Connect to your account" : "Connetti il tuo account",
"Please log in before granting %1$s access to your %2$s account." : "Accedi prima di accordare a %1$s l'accesso al tuo account %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Se non stai tentando di configurare un nuovo dispositivo o applicazione, qualcuno sta provando a ingannarti per ottenere l'accesso ai tuoi dati. In questo caso non procedere e contatta l'amministratore di sistema.",
@@ -413,6 +412,7 @@ OC.L10N.register(
"More apps menu" : "Menu delle altre applicazioni",
"Contacts" : "Contatti",
"Contacts menu" : "Menu dei contatti",
- "Setup two-factor authentication" : "Configura l'autenticazione a due fattori"
+ "Setup two-factor authentication" : "Configura l'autenticazione a due fattori",
+ "%s's homepage" : "%s's homepage"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/core/l10n/it.json b/core/l10n/it.json
index 7c341a50c6e..aab9e5b093d 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -343,7 +343,6 @@
"Skip to navigation of app" : "Passa alla navigazione dell'applicazione",
"Get your own free account" : "Ottieni il tuo account gratuito",
"Confirm your password" : "Conferma la tua password",
- "%s's homepage" : "%s's homepage",
"Connect to your account" : "Connetti il tuo account",
"Please log in before granting %1$s access to your %2$s account." : "Accedi prima di accordare a %1$s l'accesso al tuo account %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Se non stai tentando di configurare un nuovo dispositivo o applicazione, qualcuno sta provando a ingannarti per ottenere l'accesso ai tuoi dati. In questo caso non procedere e contatta l'amministratore di sistema.",
@@ -411,6 +410,7 @@
"More apps menu" : "Menu delle altre applicazioni",
"Contacts" : "Contatti",
"Contacts menu" : "Menu dei contatti",
- "Setup two-factor authentication" : "Configura l'autenticazione a due fattori"
+ "Setup two-factor authentication" : "Configura l'autenticazione a due fattori",
+ "%s's homepage" : "%s's homepage"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index b1eca749575..ccad3235144 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -357,7 +357,6 @@ OC.L10N.register(
"Get your own free account" : "無料でアカウントを作成",
"%s homepage" : "%s ホームページ",
"Confirm your password" : "パスワードを確認",
- "%s's homepage" : "%sのホームページ",
"Connect to your account" : "あなたのアカウントに接続する",
"Please log in before granting %1$s access to your %2$s account." : "あなたの %2$s アカウントに %1$s アクセスを許可する前にログインしてください。",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "新しいデバイスやアプリを設定しようとしていないのに、今この画面が表示された場合、誰かがあなたを騙してデータへのアクセス権を奪取しようとしています。その場合は、ここで止めてシステム管理者に連絡してください。",
@@ -426,6 +425,7 @@ OC.L10N.register(
"Contacts" : "連絡先",
"Contacts menu" : "連絡先メニュー",
"Setup two-factor authentication" : "二要素認証を設定",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "このシステムは32ビット版のPHPで動いているようです。Nextcloudを正常に動かすには64ビット版が必要です。OSとPHPを64ビット版にアップグレードしてください!詳細は{linkstart}こちらのドキュメント ↗{linkend}をご覧ください。"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "このシステムは32ビット版のPHPで動いているようです。Nextcloudを正常に動かすには64ビット版が必要です。OSとPHPを64ビット版にアップグレードしてください!詳細は{linkstart}こちらのドキュメント ↗{linkend}をご覧ください。",
+ "%s's homepage" : "%sのホームページ"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index 461bb635e26..c693d8adb90 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -355,7 +355,6 @@
"Get your own free account" : "無料でアカウントを作成",
"%s homepage" : "%s ホームページ",
"Confirm your password" : "パスワードを確認",
- "%s's homepage" : "%sのホームページ",
"Connect to your account" : "あなたのアカウントに接続する",
"Please log in before granting %1$s access to your %2$s account." : "あなたの %2$s アカウントに %1$s アクセスを許可する前にログインしてください。",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "新しいデバイスやアプリを設定しようとしていないのに、今この画面が表示された場合、誰かがあなたを騙してデータへのアクセス権を奪取しようとしています。その場合は、ここで止めてシステム管理者に連絡してください。",
@@ -424,6 +423,7 @@
"Contacts" : "連絡先",
"Contacts menu" : "連絡先メニュー",
"Setup two-factor authentication" : "二要素認証を設定",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "このシステムは32ビット版のPHPで動いているようです。Nextcloudを正常に動かすには64ビット版が必要です。OSとPHPを64ビット版にアップグレードしてください!詳細は{linkstart}こちらのドキュメント ↗{linkend}をご覧ください。"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "このシステムは32ビット版のPHPで動いているようです。Nextcloudを正常に動かすには64ビット版が必要です。OSとPHPを64ビット版にアップグレードしてください!詳細は{linkstart}こちらのドキュメント ↗{linkend}をご覧ください。",
+ "%s's homepage" : "%sのホームページ"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index 35b9c5bea34..49f2385bcb3 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -325,7 +325,6 @@ OC.L10N.register(
"Skip to navigation of app" : "앱 탐색으로 이동",
"Get your own free account" : "무료 계정 등록",
"Confirm your password" : "암호 확인",
- "%s's homepage" : "%s의 홈페이지",
"Connect to your account" : "내 계정에 연결",
"Please log in before granting %1$s access to your %2$s account." : "%1$s에서 내 %2$s 계정에 접근하는 것을 허용하려면 로그인해야 합니다.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "새 기기나 앱을 설정하지 않고 있다면, 누군가 당신을 속여 데이터 접근 권한을 얻으려 하는 것일 수도 있습니다. 이러한 경우 절대 허가하지 말고 시스템 관리자에게 문의하십시오.",
@@ -393,6 +392,7 @@ OC.L10N.register(
"More apps menu" : "더 많은 앱 메뉴",
"Contacts" : "연락처",
"Contacts menu" : "연락처 메뉴",
- "Setup two-factor authentication" : "2단계 인증 설정"
+ "Setup two-factor authentication" : "2단계 인증 설정",
+ "%s's homepage" : "%s의 홈페이지"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index 2cf64b47f2e..1d62c2842eb 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -323,7 +323,6 @@
"Skip to navigation of app" : "앱 탐색으로 이동",
"Get your own free account" : "무료 계정 등록",
"Confirm your password" : "암호 확인",
- "%s's homepage" : "%s의 홈페이지",
"Connect to your account" : "내 계정에 연결",
"Please log in before granting %1$s access to your %2$s account." : "%1$s에서 내 %2$s 계정에 접근하는 것을 허용하려면 로그인해야 합니다.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "새 기기나 앱을 설정하지 않고 있다면, 누군가 당신을 속여 데이터 접근 권한을 얻으려 하는 것일 수도 있습니다. 이러한 경우 절대 허가하지 말고 시스템 관리자에게 문의하십시오.",
@@ -391,6 +390,7 @@
"More apps menu" : "더 많은 앱 메뉴",
"Contacts" : "연락처",
"Contacts menu" : "연락처 메뉴",
- "Setup two-factor authentication" : "2단계 인증 설정"
+ "Setup two-factor authentication" : "2단계 인증 설정",
+ "%s's homepage" : "%s의 홈페이지"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/core/l10n/mk.js b/core/l10n/mk.js
index e23bbe41614..5d00a43dda9 100644
--- a/core/l10n/mk.js
+++ b/core/l10n/mk.js
@@ -330,7 +330,6 @@ OC.L10N.register(
"Get your own free account" : "Креирајте ваша сметка",
"%s homepage" : "Страната на %s",
"Confirm your password" : "Потврдете ја вашата лозинка",
- "%s's homepage" : "Страната на %s",
"Connect to your account" : "Поврзани со вашата сметка",
"Please log in before granting %1$s access to your %2$s account." : "Ве молиме најавете се пред да доделите пристап на %1$s во вашата %2$s сметка.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Доколку не се обидувате да додадете нов уред, некој се обидува да ве надитри и да обезбеди пристап до вашите податоци. Во тој случај не продолжувајте понатаму и веднаш контактирајте го администраторот.",
@@ -395,6 +394,7 @@ OC.L10N.register(
"More apps menu" : "Мени за повеќе апликации",
"Contacts" : "Контакти",
"Contacts menu" : "Мени за контакти",
- "Setup two-factor authentication" : "Постави двофакторна автентикација"
+ "Setup two-factor authentication" : "Постави двофакторна автентикација",
+ "%s's homepage" : "Страната на %s"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/core/l10n/mk.json b/core/l10n/mk.json
index eca9da90bac..f7f9412a265 100644
--- a/core/l10n/mk.json
+++ b/core/l10n/mk.json
@@ -328,7 +328,6 @@
"Get your own free account" : "Креирајте ваша сметка",
"%s homepage" : "Страната на %s",
"Confirm your password" : "Потврдете ја вашата лозинка",
- "%s's homepage" : "Страната на %s",
"Connect to your account" : "Поврзани со вашата сметка",
"Please log in before granting %1$s access to your %2$s account." : "Ве молиме најавете се пред да доделите пристап на %1$s во вашата %2$s сметка.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Доколку не се обидувате да додадете нов уред, некој се обидува да ве надитри и да обезбеди пристап до вашите податоци. Во тој случај не продолжувајте понатаму и веднаш контактирајте го администраторот.",
@@ -393,6 +392,7 @@
"More apps menu" : "Мени за повеќе апликации",
"Contacts" : "Контакти",
"Contacts menu" : "Мени за контакти",
- "Setup two-factor authentication" : "Постави двофакторна автентикација"
+ "Setup two-factor authentication" : "Постави двофакторна автентикација",
+ "%s's homepage" : "Страната на %s"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/core/l10n/nb.js b/core/l10n/nb.js
index 4210af9830a..96f16853d07 100644
--- a/core/l10n/nb.js
+++ b/core/l10n/nb.js
@@ -354,7 +354,6 @@ OC.L10N.register(
"Get your own free account" : "Få din egen gratis konto",
"%s homepage" : "%s hjemmeside",
"Confirm your password" : "Bekreft ditt passord",
- "%s's homepage" : "%s sin hjemmeside",
"Connect to your account" : "Koble til kontoen din",
"Please log in before granting %1$s access to your %2$s account." : "Logg inn før du tildeler %1$stilgang til din %2$skonto.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Hvis du ikke prøver å sette opp en ny enhet eller app, så er det noen som nå prøver å lure deg til å gi de tilgang til dine data. Stopp i så fall øyeblikkelig og kontakt din systemadministrator.",
@@ -423,6 +422,7 @@ OC.L10N.register(
"Contacts" : "Kontakter",
"Contacts menu" : "Kontakter meny",
"Setup two-factor authentication" : "Opprett totrinns bekreftelse",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Det virker som du kjører en 32-bit PHP-versjon. Nextcloud trenger 64-bit for å fungere bra. Vennligst oppgrader OS og PHP til 64-bit! For ytterligere detaljer, les {linkstart}dokumentasjonssiden om dette ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Det virker som du kjører en 32-bit PHP-versjon. Nextcloud trenger 64-bit for å fungere bra. Vennligst oppgrader OS og PHP til 64-bit! For ytterligere detaljer, les {linkstart}dokumentasjonssiden om dette ↗{linkend}.",
+ "%s's homepage" : "%s sin hjemmeside"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/nb.json b/core/l10n/nb.json
index d3049aa8b41..c9fe5116ce2 100644
--- a/core/l10n/nb.json
+++ b/core/l10n/nb.json
@@ -352,7 +352,6 @@
"Get your own free account" : "Få din egen gratis konto",
"%s homepage" : "%s hjemmeside",
"Confirm your password" : "Bekreft ditt passord",
- "%s's homepage" : "%s sin hjemmeside",
"Connect to your account" : "Koble til kontoen din",
"Please log in before granting %1$s access to your %2$s account." : "Logg inn før du tildeler %1$stilgang til din %2$skonto.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Hvis du ikke prøver å sette opp en ny enhet eller app, så er det noen som nå prøver å lure deg til å gi de tilgang til dine data. Stopp i så fall øyeblikkelig og kontakt din systemadministrator.",
@@ -421,6 +420,7 @@
"Contacts" : "Kontakter",
"Contacts menu" : "Kontakter meny",
"Setup two-factor authentication" : "Opprett totrinns bekreftelse",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Det virker som du kjører en 32-bit PHP-versjon. Nextcloud trenger 64-bit for å fungere bra. Vennligst oppgrader OS og PHP til 64-bit! For ytterligere detaljer, les {linkstart}dokumentasjonssiden om dette ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Det virker som du kjører en 32-bit PHP-versjon. Nextcloud trenger 64-bit for å fungere bra. Vennligst oppgrader OS og PHP til 64-bit! For ytterligere detaljer, les {linkstart}dokumentasjonssiden om dette ↗{linkend}.",
+ "%s's homepage" : "%s sin hjemmeside"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/nl.js b/core/l10n/nl.js
index f3732b777e3..a16abd027c8 100644
--- a/core/l10n/nl.js
+++ b/core/l10n/nl.js
@@ -354,7 +354,6 @@ OC.L10N.register(
"Get your own free account" : "Maak je eigen gratis account",
"%s homepage" : "%shomepagina",
"Confirm your password" : "Bevestig je wachtwoord",
- "%s's homepage" : "%s's homepage",
"Connect to your account" : "Verbind jouw account",
"Please log in before granting %1$s access to your %2$s account." : "Eerst inloggen voordat je %1$s toegang geeft tot je %2$s account.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Als u geen nieuw apparaat of nieuwe app probeert in te stellen, probeert iemand je te misleiden om hem toegang tot je gegevens te verlenen. Ga in dat geval niet verder en neem in plaats daarvan contact op met je systeembeheerder.",
@@ -423,6 +422,7 @@ OC.L10N.register(
"Contacts" : "Contactpersonen",
"Contacts menu" : "Contacten menu",
"Setup two-factor authentication" : "Instellen tweefactor authenticatie",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Het lijkt erop dat er een 32-bits versie van PHP word gebruikt. Nextcloud heeft de 64-bits versie nodig om goed te draaien. Upgrade a.u.b uw systeem en PHP naar de 64-bits versie! Meer informatie vind u op de {linkstart}documentatiepagina{linkend}"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Het lijkt erop dat er een 32-bits versie van PHP word gebruikt. Nextcloud heeft de 64-bits versie nodig om goed te draaien. Upgrade a.u.b uw systeem en PHP naar de 64-bits versie! Meer informatie vind u op de {linkstart}documentatiepagina{linkend}",
+ "%s's homepage" : "%s's homepage"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/nl.json b/core/l10n/nl.json
index c00a6b4cbe6..f41d4fca1a6 100644
--- a/core/l10n/nl.json
+++ b/core/l10n/nl.json
@@ -352,7 +352,6 @@
"Get your own free account" : "Maak je eigen gratis account",
"%s homepage" : "%shomepagina",
"Confirm your password" : "Bevestig je wachtwoord",
- "%s's homepage" : "%s's homepage",
"Connect to your account" : "Verbind jouw account",
"Please log in before granting %1$s access to your %2$s account." : "Eerst inloggen voordat je %1$s toegang geeft tot je %2$s account.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Als u geen nieuw apparaat of nieuwe app probeert in te stellen, probeert iemand je te misleiden om hem toegang tot je gegevens te verlenen. Ga in dat geval niet verder en neem in plaats daarvan contact op met je systeembeheerder.",
@@ -421,6 +420,7 @@
"Contacts" : "Contactpersonen",
"Contacts menu" : "Contacten menu",
"Setup two-factor authentication" : "Instellen tweefactor authenticatie",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Het lijkt erop dat er een 32-bits versie van PHP word gebruikt. Nextcloud heeft de 64-bits versie nodig om goed te draaien. Upgrade a.u.b uw systeem en PHP naar de 64-bits versie! Meer informatie vind u op de {linkstart}documentatiepagina{linkend}"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Het lijkt erop dat er een 32-bits versie van PHP word gebruikt. Nextcloud heeft de 64-bits versie nodig om goed te draaien. Upgrade a.u.b uw systeem en PHP naar de 64-bits versie! Meer informatie vind u op de {linkstart}documentatiepagina{linkend}",
+ "%s's homepage" : "%s's homepage"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index dd3ad59f502..35bc4c6142a 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -358,7 +358,6 @@ OC.L10N.register(
"Get your own free account" : "Załóż własne bezpłatne konto",
"%s homepage" : "Strona główna %s",
"Confirm your password" : "Potwierdź hasło",
- "%s's homepage" : "Strona główna %s",
"Connect to your account" : "Połącz z kontem",
"Please log in before granting %1$s access to your %2$s account." : "Zaloguj się przed udzieleniem dostępu %1$s do swojego konta %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Jeśli nie konfigurujesz nowego urządzenia lub aplikacji, to wynika z tego, że ktoś próbuje, abyś udzielił dostępu do Twoich danych. W takim przypadku nie kontynuuj, tylko skontaktuj się z administratorem systemu.",
@@ -427,6 +426,7 @@ OC.L10N.register(
"Contacts" : "Kontakty",
"Contacts menu" : "Menu kontaktów",
"Setup two-factor authentication" : "Ustaw uwierzytelnianie dwuskładnikowe",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Wygląda na to, że korzystasz z 32-bitowej wersji PHP. Nextcloud do poprawnego działania potrzebuje 64-bitowej. Zaktualizuj swój system operacyjny i PHP do wersji 64-bitowej! Więcej informacji na ten temat przeczytasz na {linkstart}stronie dokumentacji ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Wygląda na to, że korzystasz z 32-bitowej wersji PHP. Nextcloud do poprawnego działania potrzebuje 64-bitowej. Zaktualizuj swój system operacyjny i PHP do wersji 64-bitowej! Więcej informacji na ten temat przeczytasz na {linkstart}stronie dokumentacji ↗{linkend}.",
+ "%s's homepage" : "Strona główna %s"
},
"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/core/l10n/pl.json b/core/l10n/pl.json
index 280b85a787a..e2ae0d1f12d 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -356,7 +356,6 @@
"Get your own free account" : "Załóż własne bezpłatne konto",
"%s homepage" : "Strona główna %s",
"Confirm your password" : "Potwierdź hasło",
- "%s's homepage" : "Strona główna %s",
"Connect to your account" : "Połącz z kontem",
"Please log in before granting %1$s access to your %2$s account." : "Zaloguj się przed udzieleniem dostępu %1$s do swojego konta %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Jeśli nie konfigurujesz nowego urządzenia lub aplikacji, to wynika z tego, że ktoś próbuje, abyś udzielił dostępu do Twoich danych. W takim przypadku nie kontynuuj, tylko skontaktuj się z administratorem systemu.",
@@ -425,6 +424,7 @@
"Contacts" : "Kontakty",
"Contacts menu" : "Menu kontaktów",
"Setup two-factor authentication" : "Ustaw uwierzytelnianie dwuskładnikowe",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Wygląda na to, że korzystasz z 32-bitowej wersji PHP. Nextcloud do poprawnego działania potrzebuje 64-bitowej. Zaktualizuj swój system operacyjny i PHP do wersji 64-bitowej! Więcej informacji na ten temat przeczytasz na {linkstart}stronie dokumentacji ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Wygląda na to, że korzystasz z 32-bitowej wersji PHP. Nextcloud do poprawnego działania potrzebuje 64-bitowej. Zaktualizuj swój system operacyjny i PHP do wersji 64-bitowej! Więcej informacji na ten temat przeczytasz na {linkstart}stronie dokumentacji ↗{linkend}.",
+ "%s's homepage" : "Strona główna %s"
},"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/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 816e44f0785..8bac4744118 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -354,7 +354,6 @@ OC.L10N.register(
"Get your own free account" : "Obtenha uma conta grátis",
"%s homepage" : "%s homepage",
"Confirm your password" : "Confirme sua senha",
- "%s's homepage" : "Página inicial de%s",
"Connect to your account" : "Conectar à sua conta",
"Please log in before granting %1$s access to your %2$s account." : "Logue-se antes de conceder acesso %1$s à sua conta %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Se você não está tentando configurar um novo dispositivo ou aplicativo, alguém está tentando induzi-lo a conceder acesso a seus dados. Nesse caso, não prossiga e entre em contato com o administrador do sistema.",
@@ -423,6 +422,7 @@ OC.L10N.register(
"Contacts" : "Contatos",
"Contacts menu" : "Menu de contatos",
"Setup two-factor authentication" : "Configurar autenticação de dois fatores",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que você está executando uma versão PHP de 32 bits. Nextcloud precisa de 64 bits para funcionar bem. Por favor, atualize seu sistema operacional e PHP para 64 bits! Para mais detalhes, leia {linkstart}a página de documentação sobre este ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que você está executando uma versão PHP de 32 bits. Nextcloud precisa de 64 bits para funcionar bem. Por favor, atualize seu sistema operacional e PHP para 64 bits! Para mais detalhes, leia {linkstart}a página de documentação sobre este ↗{linkend}.",
+ "%s's homepage" : "Página inicial de%s"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index 1ecbdabeb94..4e52f1408ab 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -352,7 +352,6 @@
"Get your own free account" : "Obtenha uma conta grátis",
"%s homepage" : "%s homepage",
"Confirm your password" : "Confirme sua senha",
- "%s's homepage" : "Página inicial de%s",
"Connect to your account" : "Conectar à sua conta",
"Please log in before granting %1$s access to your %2$s account." : "Logue-se antes de conceder acesso %1$s à sua conta %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Se você não está tentando configurar um novo dispositivo ou aplicativo, alguém está tentando induzi-lo a conceder acesso a seus dados. Nesse caso, não prossiga e entre em contato com o administrador do sistema.",
@@ -421,6 +420,7 @@
"Contacts" : "Contatos",
"Contacts menu" : "Menu de contatos",
"Setup two-factor authentication" : "Configurar autenticação de dois fatores",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que você está executando uma versão PHP de 32 bits. Nextcloud precisa de 64 bits para funcionar bem. Por favor, atualize seu sistema operacional e PHP para 64 bits! Para mais detalhes, leia {linkstart}a página de documentação sobre este ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Parece que você está executando uma versão PHP de 32 bits. Nextcloud precisa de 64 bits para funcionar bem. Por favor, atualize seu sistema operacional e PHP para 64 bits! Para mais detalhes, leia {linkstart}a página de documentação sobre este ↗{linkend}.",
+ "%s's homepage" : "Página inicial de%s"
},"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/core/l10n/ru.js b/core/l10n/ru.js
index 341fdb19d63..5c16cfdbb74 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -358,7 +358,6 @@ OC.L10N.register(
"Get your own free account" : "Создайте свою бесплатную учётную запись",
"%s homepage" : "Домашняя страница %s",
"Confirm your password" : "Подтвердите свой пароль",
- "%s's homepage" : "Домашняя страница %s",
"Connect to your account" : "Вход в систему",
"Please log in before granting %1$s access to your %2$s account." : "Для предоставления %1$s доступа к учётной записи %2$s необходимо войти в систему.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Если вы не пытались настроить новое устройство или приложение, значит, кто-то пытается получить доступ к вашим данным. В этом случае свяжитесь с администратором системы.",
@@ -427,6 +426,7 @@ OC.L10N.register(
"Contacts" : "Контакты",
"Contacts menu" : "Меню контактов",
"Setup two-factor authentication" : "Установка двухфакторной аутентификации",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Похоже что вы используете 32-битную версию PHP. Для нормальной работы Nextcloud требуется 64-битная версия. Пожалуйста обновите вашу операционную систему и PHP до 64-битных версий. Для дополнительной информации {linkstart}обратитесь к документации.{linkend}"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Похоже что вы используете 32-битную версию PHP. Для нормальной работы Nextcloud требуется 64-битная версия. Пожалуйста обновите вашу операционную систему и PHP до 64-битных версий. Для дополнительной информации {linkstart}обратитесь к документации.{linkend}",
+ "%s's homepage" : "Домашняя страница %s"
},
"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/core/l10n/ru.json b/core/l10n/ru.json
index cbc07c0eb7c..87172525382 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -356,7 +356,6 @@
"Get your own free account" : "Создайте свою бесплатную учётную запись",
"%s homepage" : "Домашняя страница %s",
"Confirm your password" : "Подтвердите свой пароль",
- "%s's homepage" : "Домашняя страница %s",
"Connect to your account" : "Вход в систему",
"Please log in before granting %1$s access to your %2$s account." : "Для предоставления %1$s доступа к учётной записи %2$s необходимо войти в систему.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Если вы не пытались настроить новое устройство или приложение, значит, кто-то пытается получить доступ к вашим данным. В этом случае свяжитесь с администратором системы.",
@@ -425,6 +424,7 @@
"Contacts" : "Контакты",
"Contacts menu" : "Меню контактов",
"Setup two-factor authentication" : "Установка двухфакторной аутентификации",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Похоже что вы используете 32-битную версию PHP. Для нормальной работы Nextcloud требуется 64-битная версия. Пожалуйста обновите вашу операционную систему и PHP до 64-битных версий. Для дополнительной информации {linkstart}обратитесь к документации.{linkend}"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Похоже что вы используете 32-битную версию PHP. Для нормальной работы Nextcloud требуется 64-битная версия. Пожалуйста обновите вашу операционную систему и PHP до 64-битных версий. Для дополнительной информации {linkstart}обратитесь к документации.{linkend}",
+ "%s's homepage" : "Домашняя страница %s"
},"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/core/l10n/sk.js b/core/l10n/sk.js
index 99d3fe9c8be..7abf3a718dc 100644
--- a/core/l10n/sk.js
+++ b/core/l10n/sk.js
@@ -347,7 +347,6 @@ OC.L10N.register(
"Skip to navigation of app" : "Preskočiť do navigácie apky",
"Get your own free account" : "Získajte zdarma svoj vlastný účet",
"Confirm your password" : "Potvrďte svoje heslo",
- "%s's homepage" : "Domovská stránka užívateľa %s",
"Connect to your account" : "Pripojte sa k svojmu účtu",
"Please log in before granting %1$s access to your %2$s account." : "Skôr než udelíte prístup pre %1$s do vášho účtu %2$s je potrebné sa prihlásiť.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ak sa nesnažíte nastaviť nové zariadenie alebo aplikáciu, niekto sa vás pokúša oklamať, aby ste im poskytli prístup k vašim údajom. V takom prípade nepokračujte a obráťte sa na správcu systému.",
@@ -416,6 +415,7 @@ OC.L10N.register(
"Contacts" : "Kontakty",
"Contacts menu" : "Menu kontaktov",
"Setup two-factor authentication" : "Nastaviť dvojzložkové overovanie",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Zdá sa, že používate 32-bitovú verziu PHP. Nextcloud potrebuje 64-bit, aby fungoval dobre. Inovujte svoj OS a PHP na 64-bitové! Ďalšie podrobnosti nájdete na {linkstart}stránke dokumentácie↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Zdá sa, že používate 32-bitovú verziu PHP. Nextcloud potrebuje 64-bit, aby fungoval dobre. Inovujte svoj OS a PHP na 64-bitové! Ďalšie podrobnosti nájdete na {linkstart}stránke dokumentácie↗{linkend}.",
+ "%s's homepage" : "Domovská stránka užívateľa %s"
},
"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/core/l10n/sk.json b/core/l10n/sk.json
index 365701aca17..16c3c847d54 100644
--- a/core/l10n/sk.json
+++ b/core/l10n/sk.json
@@ -345,7 +345,6 @@
"Skip to navigation of app" : "Preskočiť do navigácie apky",
"Get your own free account" : "Získajte zdarma svoj vlastný účet",
"Confirm your password" : "Potvrďte svoje heslo",
- "%s's homepage" : "Domovská stránka užívateľa %s",
"Connect to your account" : "Pripojte sa k svojmu účtu",
"Please log in before granting %1$s access to your %2$s account." : "Skôr než udelíte prístup pre %1$s do vášho účtu %2$s je potrebné sa prihlásiť.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ak sa nesnažíte nastaviť nové zariadenie alebo aplikáciu, niekto sa vás pokúša oklamať, aby ste im poskytli prístup k vašim údajom. V takom prípade nepokračujte a obráťte sa na správcu systému.",
@@ -414,6 +413,7 @@
"Contacts" : "Kontakty",
"Contacts menu" : "Menu kontaktov",
"Setup two-factor authentication" : "Nastaviť dvojzložkové overovanie",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Zdá sa, že používate 32-bitovú verziu PHP. Nextcloud potrebuje 64-bit, aby fungoval dobre. Inovujte svoj OS a PHP na 64-bitové! Ďalšie podrobnosti nájdete na {linkstart}stránke dokumentácie↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Zdá sa, že používate 32-bitovú verziu PHP. Nextcloud potrebuje 64-bit, aby fungoval dobre. Inovujte svoj OS a PHP na 64-bitové! Ďalšie podrobnosti nájdete na {linkstart}stránke dokumentácie↗{linkend}.",
+ "%s's homepage" : "Domovská stránka užívateľa %s"
},"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/core/l10n/sl.js b/core/l10n/sl.js
index 9fbd74fc97d..b50d8992e02 100644
--- a/core/l10n/sl.js
+++ b/core/l10n/sl.js
@@ -354,7 +354,6 @@ OC.L10N.register(
"Get your own free account" : "Pridobite brezplačni račun",
"%s homepage" : "Spletna stran %s",
"Confirm your password" : "Potrdite geslo",
- "%s's homepage" : "Spletna stran osebe %s",
"Connect to your account" : "Povežite z računom",
"Please log in before granting %1$s access to your %2$s account." : "Pred %1$s odobritvijo dostopa %2$s do računa se je treba prijaviti.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Če ne poskušate dodati naprave ali programa, vas poskuša nekdo pretentati v odobritev dostopa do vaših podatkov. Če se vam zdi, da je tako, ne nadaljujte s potrjevanjem, ampak stopite v stik s skrbnikom sistema.",
@@ -423,6 +422,7 @@ OC.L10N.register(
"Contacts" : "Stiki",
"Contacts menu" : "Meni Stikov",
"Setup two-factor authentication" : "Nastavite dvostopenjsko overitev",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Kaže, da uporabljate 32-bitno različico PHP. Oblak Nextcloud zahteva za optimalno delovanje 64-bitno različico, zato je operacijski sistem in PHP priporočljivo nadgraditi! Več podrobnosti je na na voljo na straneh {linkstart}dokumentacije{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Kaže, da uporabljate 32-bitno različico PHP. Oblak Nextcloud zahteva za optimalno delovanje 64-bitno različico, zato je operacijski sistem in PHP priporočljivo nadgraditi! Več podrobnosti je na na voljo na straneh {linkstart}dokumentacije{linkend}.",
+ "%s's homepage" : "Spletna stran osebe %s"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/core/l10n/sl.json b/core/l10n/sl.json
index 62bfefeb78f..a2365b1ebd1 100644
--- a/core/l10n/sl.json
+++ b/core/l10n/sl.json
@@ -352,7 +352,6 @@
"Get your own free account" : "Pridobite brezplačni račun",
"%s homepage" : "Spletna stran %s",
"Confirm your password" : "Potrdite geslo",
- "%s's homepage" : "Spletna stran osebe %s",
"Connect to your account" : "Povežite z računom",
"Please log in before granting %1$s access to your %2$s account." : "Pred %1$s odobritvijo dostopa %2$s do računa se je treba prijaviti.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Če ne poskušate dodati naprave ali programa, vas poskuša nekdo pretentati v odobritev dostopa do vaših podatkov. Če se vam zdi, da je tako, ne nadaljujte s potrjevanjem, ampak stopite v stik s skrbnikom sistema.",
@@ -421,6 +420,7 @@
"Contacts" : "Stiki",
"Contacts menu" : "Meni Stikov",
"Setup two-factor authentication" : "Nastavite dvostopenjsko overitev",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Kaže, da uporabljate 32-bitno različico PHP. Oblak Nextcloud zahteva za optimalno delovanje 64-bitno različico, zato je operacijski sistem in PHP priporočljivo nadgraditi! Več podrobnosti je na na voljo na straneh {linkstart}dokumentacije{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Kaže, da uporabljate 32-bitno različico PHP. Oblak Nextcloud zahteva za optimalno delovanje 64-bitno različico, zato je operacijski sistem in PHP priporočljivo nadgraditi! Več podrobnosti je na na voljo na straneh {linkstart}dokumentacije{linkend}.",
+ "%s's homepage" : "Spletna stran osebe %s"
},"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/core/l10n/sr.js b/core/l10n/sr.js
index b18fb0f6cdd..1a5b15b749b 100644
--- a/core/l10n/sr.js
+++ b/core/l10n/sr.js
@@ -51,6 +51,7 @@ OC.L10N.register(
"Repair info:" : "Инфо о поправци:",
"Repair warning:" : "Упозорење о поправци:",
"Repair error:" : "Грешка поправке:",
+ "Please use the command line updater because updating via the browser is disabled in your config.php." : "Молимо вас да користите алат за ажурирање из командне линије јер је ажурирање из прегледача искључено у вашем config.php.",
"Turned on maintenance mode" : "Режим одржавања укључен",
"Turned off maintenance mode" : "Режим одржавања искључен",
"Maintenance mode is kept active" : "Режим одржавања се држи активним",
@@ -183,6 +184,7 @@ OC.L10N.register(
"Simple email app nicely integrated with Files, Contacts and Calendar." : "Једноставна е-мејл апликација која се лепо интегрише са Фајловима, Контактима и Календаром.",
"Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Ћаскање, видео позиви, дељење екрана, састанци на интернету & веб конференције – на десктоп рачунару и преко мобилних апликација.",
"Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Заједнички документи, табеле и презентације, изграђени на Collabora Online.",
+ "Distraction free note taking app." : "Апликација за вођење бележака без ометања.",
"Search contacts" : "Претрага контакта",
"Forgot password?" : "Заборавили сте лозинку?",
"Log in with a device" : "Пријава са уређајем",
@@ -214,6 +216,7 @@ OC.L10N.register(
"Settings menu" : "Мени подешавања",
"Search {types} …" : "Претражи {types}…",
"Settings" : "Поставке",
+ "Avatar of {fullName}" : "Аватар корисника {fullName}",
"Could not load your contacts" : "Не могу да учитам Ваше контакте",
"Search contacts …" : "Претражи контакте ...",
"No contacts found" : "Контакти нису нађени",
@@ -284,6 +287,7 @@ OC.L10N.register(
"Strong password" : "Јака лозинка",
"No action available" : "Нема доступне радње",
"Error fetching contact actions" : "Грешка приликом дохватања акција над контактима",
+ "Close \"{dialogTitle}\" dialog" : "Затвори дијалог „{dialogTitle}”",
"Non-existing tag #{tag}" : "Непостојећа ознака #{tag}",
"Restricted" : "Ограничена",
"Invisible" : "Невидљива",
@@ -354,7 +358,6 @@ OC.L10N.register(
"Get your own free account" : "Узмите бесплатан налог",
"%s homepage" : "%s почетна страна",
"Confirm your password" : "Потврдите лозинку",
- "%s's homepage" : "Почетна страна корисника %s",
"Connect to your account" : "Повежите се на Ваш налог",
"Please log in before granting %1$s access to your %2$s account." : "Прво се пријавите пре него што одобрите привилегију %1$s приступ Вашем налогу %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ако не покушавате да подесите нови уређај или апликацију, неко покушава да Вас превари да му дате приступ Вашим подацима. У том случају, не настављајте и контактирајте администратора Вашег система.",
@@ -423,6 +426,7 @@ OC.L10N.register(
"Contacts" : "Контакти",
"Contacts menu" : "Мени контаката",
"Setup two-factor authentication" : "Подеси двофакторску проверу идентитета",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Изгледа да покрећете 32-битну PHP верзију. За правилно извршавање Nextcloud захтева 64-битну верзију. Молимо вас да ажурирате свој оперативни систем и PHP на 64-бита! За више детаља прочитајте {linkstart}страницу документације која се бави овим проблемом ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Изгледа да покрећете 32-битну PHP верзију. За правилно извршавање Nextcloud захтева 64-битну верзију. Молимо вас да ажурирате свој оперативни систем и PHP на 64-бита! За више детаља прочитајте {linkstart}страницу документације која се бави овим проблемом ↗{linkend}.",
+ "%s's homepage" : "Почетна страна корисника %s"
},
"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/core/l10n/sr.json b/core/l10n/sr.json
index a546dfc2a18..cbc96672f23 100644
--- a/core/l10n/sr.json
+++ b/core/l10n/sr.json
@@ -49,6 +49,7 @@
"Repair info:" : "Инфо о поправци:",
"Repair warning:" : "Упозорење о поправци:",
"Repair error:" : "Грешка поправке:",
+ "Please use the command line updater because updating via the browser is disabled in your config.php." : "Молимо вас да користите алат за ажурирање из командне линије јер је ажурирање из прегледача искључено у вашем config.php.",
"Turned on maintenance mode" : "Режим одржавања укључен",
"Turned off maintenance mode" : "Режим одржавања искључен",
"Maintenance mode is kept active" : "Режим одржавања се држи активним",
@@ -181,6 +182,7 @@
"Simple email app nicely integrated with Files, Contacts and Calendar." : "Једноставна е-мејл апликација која се лепо интегрише са Фајловима, Контактима и Календаром.",
"Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Ћаскање, видео позиви, дељење екрана, састанци на интернету & веб конференције – на десктоп рачунару и преко мобилних апликација.",
"Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Заједнички документи, табеле и презентације, изграђени на Collabora Online.",
+ "Distraction free note taking app." : "Апликација за вођење бележака без ометања.",
"Search contacts" : "Претрага контакта",
"Forgot password?" : "Заборавили сте лозинку?",
"Log in with a device" : "Пријава са уређајем",
@@ -212,6 +214,7 @@
"Settings menu" : "Мени подешавања",
"Search {types} …" : "Претражи {types}…",
"Settings" : "Поставке",
+ "Avatar of {fullName}" : "Аватар корисника {fullName}",
"Could not load your contacts" : "Не могу да учитам Ваше контакте",
"Search contacts …" : "Претражи контакте ...",
"No contacts found" : "Контакти нису нађени",
@@ -282,6 +285,7 @@
"Strong password" : "Јака лозинка",
"No action available" : "Нема доступне радње",
"Error fetching contact actions" : "Грешка приликом дохватања акција над контактима",
+ "Close \"{dialogTitle}\" dialog" : "Затвори дијалог „{dialogTitle}”",
"Non-existing tag #{tag}" : "Непостојећа ознака #{tag}",
"Restricted" : "Ограничена",
"Invisible" : "Невидљива",
@@ -352,7 +356,6 @@
"Get your own free account" : "Узмите бесплатан налог",
"%s homepage" : "%s почетна страна",
"Confirm your password" : "Потврдите лозинку",
- "%s's homepage" : "Почетна страна корисника %s",
"Connect to your account" : "Повежите се на Ваш налог",
"Please log in before granting %1$s access to your %2$s account." : "Прво се пријавите пре него што одобрите привилегију %1$s приступ Вашем налогу %2$s.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ако не покушавате да подесите нови уређај или апликацију, неко покушава да Вас превари да му дате приступ Вашим подацима. У том случају, не настављајте и контактирајте администратора Вашег система.",
@@ -421,6 +424,7 @@
"Contacts" : "Контакти",
"Contacts menu" : "Мени контаката",
"Setup two-factor authentication" : "Подеси двофакторску проверу идентитета",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Изгледа да покрећете 32-битну PHP верзију. За правилно извршавање Nextcloud захтева 64-битну верзију. Молимо вас да ажурирате свој оперативни систем и PHP на 64-бита! За више детаља прочитајте {linkstart}страницу документације која се бави овим проблемом ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Изгледа да покрећете 32-битну PHP верзију. За правилно извршавање Nextcloud захтева 64-битну верзију. Молимо вас да ажурирате свој оперативни систем и PHP на 64-бита! За више детаља прочитајте {linkstart}страницу документације која се бави овим проблемом ↗{linkend}.",
+ "%s's homepage" : "Почетна страна корисника %s"
},"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/core/l10n/sv.js b/core/l10n/sv.js
index e2b88c14c06..6845bfbb6f6 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -341,7 +341,6 @@ OC.L10N.register(
"Get your own free account" : "Skaffa ett eget gratiskonto",
"%s homepage" : "%s hemsida",
"Confirm your password" : "Bekräfta ditt lösenord",
- "%s's homepage" : "%s's hemsida",
"Connect to your account" : "Anslut ditt konto",
"Please log in before granting %1$s access to your %2$s account." : "Logga in innan du ger %1$s åtkomst till ditt %2$s konto.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Om du inte försöker konfigurera en ny enhet eller app, försöker någon lura dig att ge dem åtkomst till din data. Fortsätt i så fall inte, utan kontakta istället din systemadministratör.",
@@ -409,6 +408,7 @@ OC.L10N.register(
"More apps menu" : "Fler appar - meny",
"Contacts" : "Kontakter",
"Contacts menu" : "Kontaktmeny",
- "Setup two-factor authentication" : "Ställ in tvåfaktorsautentisering"
+ "Setup two-factor authentication" : "Ställ in tvåfaktorsautentisering",
+ "%s's homepage" : "%s's hemsida"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index dd87afc14ad..f753b99056c 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -339,7 +339,6 @@
"Get your own free account" : "Skaffa ett eget gratiskonto",
"%s homepage" : "%s hemsida",
"Confirm your password" : "Bekräfta ditt lösenord",
- "%s's homepage" : "%s's hemsida",
"Connect to your account" : "Anslut ditt konto",
"Please log in before granting %1$s access to your %2$s account." : "Logga in innan du ger %1$s åtkomst till ditt %2$s konto.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Om du inte försöker konfigurera en ny enhet eller app, försöker någon lura dig att ge dem åtkomst till din data. Fortsätt i så fall inte, utan kontakta istället din systemadministratör.",
@@ -407,6 +406,7 @@
"More apps menu" : "Fler appar - meny",
"Contacts" : "Kontakter",
"Contacts menu" : "Kontaktmeny",
- "Setup two-factor authentication" : "Ställ in tvåfaktorsautentisering"
+ "Setup two-factor authentication" : "Ställ in tvåfaktorsautentisering",
+ "%s's homepage" : "%s's hemsida"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/th.js b/core/l10n/th.js
index 0aac7cb7532..c8ad46782f7 100644
--- a/core/l10n/th.js
+++ b/core/l10n/th.js
@@ -294,7 +294,6 @@ OC.L10N.register(
"Skip to navigation of app" : "ข้ามไปที่การนำทางของแอป",
"Get your own free account" : "รับบัญชีฟรีของคุณ",
"Confirm your password" : "ยืนยันรหัสผ่านของคุณ",
- "%s's homepage" : "หน้าหลักของ %s",
"Connect to your account" : "เชื่อมต่อบัญชีของคุณ",
"Please log in before granting %1$s access to your %2$s account." : "กรุณาเข้าสู่ระบบก่อนอนุญาตให้ %1$s เข้าถึงบัญชี %2$s ของคุณ",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "หากคุณไม่ได้เป็นคนตั้งค่าอุปกรณ์หรือแอปใหม่ อาจมีบุคคลอื่นกำลังหลอกให้คุณอนุญาตให้พวกเขาเข้าถึงข้อมูลของคุณ ในกรณีนี้ห้ามดำเนินการต่อ ให้ติดต่อผู้ดูแลระบบของคุณ",
@@ -360,6 +359,7 @@ OC.L10N.register(
"More apps menu" : "เมนูแอปเพิ่มเติม",
"Contacts" : "รายชื่อผู้ติดต่อ",
"Contacts menu" : "เมนูรายชื่อผู้ติดต่อ",
- "Setup two-factor authentication" : "ตั้งค่าการยืนยันสองปัจจัย"
+ "Setup two-factor authentication" : "ตั้งค่าการยืนยันสองปัจจัย",
+ "%s's homepage" : "หน้าหลักของ %s"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/th.json b/core/l10n/th.json
index 522dbaa8de3..bbea58a7eab 100644
--- a/core/l10n/th.json
+++ b/core/l10n/th.json
@@ -292,7 +292,6 @@
"Skip to navigation of app" : "ข้ามไปที่การนำทางของแอป",
"Get your own free account" : "รับบัญชีฟรีของคุณ",
"Confirm your password" : "ยืนยันรหัสผ่านของคุณ",
- "%s's homepage" : "หน้าหลักของ %s",
"Connect to your account" : "เชื่อมต่อบัญชีของคุณ",
"Please log in before granting %1$s access to your %2$s account." : "กรุณาเข้าสู่ระบบก่อนอนุญาตให้ %1$s เข้าถึงบัญชี %2$s ของคุณ",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "หากคุณไม่ได้เป็นคนตั้งค่าอุปกรณ์หรือแอปใหม่ อาจมีบุคคลอื่นกำลังหลอกให้คุณอนุญาตให้พวกเขาเข้าถึงข้อมูลของคุณ ในกรณีนี้ห้ามดำเนินการต่อ ให้ติดต่อผู้ดูแลระบบของคุณ",
@@ -358,6 +357,7 @@
"More apps menu" : "เมนูแอปเพิ่มเติม",
"Contacts" : "รายชื่อผู้ติดต่อ",
"Contacts menu" : "เมนูรายชื่อผู้ติดต่อ",
- "Setup two-factor authentication" : "ตั้งค่าการยืนยันสองปัจจัย"
+ "Setup two-factor authentication" : "ตั้งค่าการยืนยันสองปัจจัย",
+ "%s's homepage" : "หน้าหลักของ %s"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index e80abdce451..8b62083268a 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -358,7 +358,6 @@ OC.L10N.register(
"Get your own free account" : "Ücretsiz hesabınızı açın",
"%s homepage" : "%s web sitesi",
"Confirm your password" : "Parolanızı onaylayın",
- "%s's homepage" : "%s web sitesi",
"Connect to your account" : "Hesabınızı bağlayın",
"Please log in before granting %1$s access to your %2$s account." : "Lütfen %1$s için %2$s hesabınıza erişim izni vermeden önce oturum açın.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Yeni bir aygıt ya da uygulama kurmaya çalışmıyorsanız, başka biri verilerinize erişmek için sizi kandırmaya çalışıyor. Durum buysa daha ileri gitmeyin ve sistem yöneticiniz ile görüşün.",
@@ -427,6 +426,7 @@ OC.L10N.register(
"Contacts" : "Kişiler",
"Contacts menu" : "Kişiler menüsü",
"Setup two-factor authentication" : "İki aşamalı kimlik doğrulama kurulumu",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "32 bit bir PHP sürümü çalıştırıyorsunuz gibi görünüyor. Nextcloud uygulamasının iyi çalışması için 64 bit bir PHP sürümü kullanılmalıdır. Lütfen işletim sisteminizi ve PHP sürümünüzü 64 bit olacak şekilde yükseltin! Ayrıntılı bilgi almak için {linkstart}ilgili sayfaya bakabilirsiniz ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "32 bit bir PHP sürümü çalıştırıyorsunuz gibi görünüyor. Nextcloud uygulamasının iyi çalışması için 64 bit bir PHP sürümü kullanılmalıdır. Lütfen işletim sisteminizi ve PHP sürümünüzü 64 bit olacak şekilde yükseltin! Ayrıntılı bilgi almak için {linkstart}ilgili sayfaya bakabilirsiniz ↗{linkend}.",
+ "%s's homepage" : "%s web sitesi"
},
"nplurals=2; plural=(n > 1);");
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index fd6309da4fc..09c4f0b81b9 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -356,7 +356,6 @@
"Get your own free account" : "Ücretsiz hesabınızı açın",
"%s homepage" : "%s web sitesi",
"Confirm your password" : "Parolanızı onaylayın",
- "%s's homepage" : "%s web sitesi",
"Connect to your account" : "Hesabınızı bağlayın",
"Please log in before granting %1$s access to your %2$s account." : "Lütfen %1$s için %2$s hesabınıza erişim izni vermeden önce oturum açın.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Yeni bir aygıt ya da uygulama kurmaya çalışmıyorsanız, başka biri verilerinize erişmek için sizi kandırmaya çalışıyor. Durum buysa daha ileri gitmeyin ve sistem yöneticiniz ile görüşün.",
@@ -425,6 +424,7 @@
"Contacts" : "Kişiler",
"Contacts menu" : "Kişiler menüsü",
"Setup two-factor authentication" : "İki aşamalı kimlik doğrulama kurulumu",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "32 bit bir PHP sürümü çalıştırıyorsunuz gibi görünüyor. Nextcloud uygulamasının iyi çalışması için 64 bit bir PHP sürümü kullanılmalıdır. Lütfen işletim sisteminizi ve PHP sürümünüzü 64 bit olacak şekilde yükseltin! Ayrıntılı bilgi almak için {linkstart}ilgili sayfaya bakabilirsiniz ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "32 bit bir PHP sürümü çalıştırıyorsunuz gibi görünüyor. Nextcloud uygulamasının iyi çalışması için 64 bit bir PHP sürümü kullanılmalıdır. Lütfen işletim sisteminizi ve PHP sürümünüzü 64 bit olacak şekilde yükseltin! Ayrıntılı bilgi almak için {linkstart}ilgili sayfaya bakabilirsiniz ↗{linkend}.",
+ "%s's homepage" : "%s web sitesi"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index 8148142fed4..06208076ec0 100644
--- a/core/l10n/uk.js
+++ b/core/l10n/uk.js
@@ -352,7 +352,6 @@ OC.L10N.register(
"Skip to navigation of app" : "Перейти до навігації застосунку",
"Get your own free account" : "Отримати безкоштовний обліковий запис",
"Confirm your password" : "Підтвердіть пароль",
- "%s's homepage" : "Домівка %s ",
"Connect to your account" : "Увійти до вашого облікового запису",
"Please log in before granting %1$s access to your %2$s account." : "Для надання %1$s доступу до облікового запису %2$s необхідно увійти в систему.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Якщо ви не намагаєтеся налаштувати новий пристрій або програму, хтось намагається обманом змусити вас надати доступ до ваших даних. У цьому випадку не продовжуйте, а зверніться до системного адміністратора.",
@@ -421,6 +420,7 @@ OC.L10N.register(
"Contacts" : "Контакти",
"Contacts menu" : "Меню контактів",
"Setup two-factor authentication" : "Налаштувати двофакторну автентифікацію",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Здається, ви використовуєте 32-розрядну версію PHP. Для нормальної роботи Nextcloud потрібна 64-розрядна версія. Будь ласка, оновіть свою ОС і PHP до 64-бітної! Для отримання додаткової інформації прочитайте {linkstart}сторінку документації про це ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Здається, ви використовуєте 32-розрядну версію PHP. Для нормальної роботи Nextcloud потрібна 64-розрядна версія. Будь ласка, оновіть свою ОС і PHP до 64-бітної! Для отримання додаткової інформації прочитайте {linkstart}сторінку документації про це ↗{linkend}.",
+ "%s's homepage" : "Домівка %s "
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index 871903df84a..3f9486f0a8b 100644
--- a/core/l10n/uk.json
+++ b/core/l10n/uk.json
@@ -350,7 +350,6 @@
"Skip to navigation of app" : "Перейти до навігації застосунку",
"Get your own free account" : "Отримати безкоштовний обліковий запис",
"Confirm your password" : "Підтвердіть пароль",
- "%s's homepage" : "Домівка %s ",
"Connect to your account" : "Увійти до вашого облікового запису",
"Please log in before granting %1$s access to your %2$s account." : "Для надання %1$s доступу до облікового запису %2$s необхідно увійти в систему.",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Якщо ви не намагаєтеся налаштувати новий пристрій або програму, хтось намагається обманом змусити вас надати доступ до ваших даних. У цьому випадку не продовжуйте, а зверніться до системного адміністратора.",
@@ -419,6 +418,7 @@
"Contacts" : "Контакти",
"Contacts menu" : "Меню контактів",
"Setup two-factor authentication" : "Налаштувати двофакторну автентифікацію",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Здається, ви використовуєте 32-розрядну версію PHP. Для нормальної роботи Nextcloud потрібна 64-розрядна версія. Будь ласка, оновіть свою ОС і PHP до 64-бітної! Для отримання додаткової інформації прочитайте {linkstart}сторінку документації про це ↗{linkend}."
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Здається, ви використовуєте 32-розрядну версію PHP. Для нормальної роботи Nextcloud потрібна 64-розрядна версія. Будь ласка, оновіть свою ОС і PHP до 64-бітної! Для отримання додаткової інформації прочитайте {linkstart}сторінку документації про це ↗{linkend}.",
+ "%s's homepage" : "Домівка %s "
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (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/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index 7fc1fcd153c..e0b020504ca 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -346,7 +346,6 @@ OC.L10N.register(
"Skip to navigation of app" : "跳过应用向导",
"Get your own free account" : "获取自己的免费账号",
"Confirm your password" : "确认您的密码",
- "%s's homepage" : "%s的主页",
"Connect to your account" : "连接到您的账号",
"Please log in before granting %1$s access to your %2$s account." : "在授权 %1$s 访问您的账号 %2$s 之前,请先登录。",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "如果您不打算设置新设备或应用程序,则有人试图欺骗您,以授予他们访问数据的权限。 在这种情况下,请勿继续操作,而应与系统管理员联系。",
@@ -415,6 +414,7 @@ OC.L10N.register(
"Contacts" : "联系人",
"Contacts menu" : "联系人菜单",
"Setup two-factor authentication" : "配置两步验证",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您似乎正在运行 32 位版本的 PHP 服务。 Nextcloud 需要 64 位以良好运作,请升级您的操作系统与 PHP 服务至 64 位版本!有关更多详细信息,请阅读{linkstart}有关的文档页面 ↗{linkend}。"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您似乎正在运行 32 位版本的 PHP 服务。 Nextcloud 需要 64 位以良好运作,请升级您的操作系统与 PHP 服务至 64 位版本!有关更多详细信息,请阅读{linkstart}有关的文档页面 ↗{linkend}。",
+ "%s's homepage" : "%s的主页"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index 8cd7cdd7b6d..99664647795 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -344,7 +344,6 @@
"Skip to navigation of app" : "跳过应用向导",
"Get your own free account" : "获取自己的免费账号",
"Confirm your password" : "确认您的密码",
- "%s's homepage" : "%s的主页",
"Connect to your account" : "连接到您的账号",
"Please log in before granting %1$s access to your %2$s account." : "在授权 %1$s 访问您的账号 %2$s 之前,请先登录。",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "如果您不打算设置新设备或应用程序,则有人试图欺骗您,以授予他们访问数据的权限。 在这种情况下,请勿继续操作,而应与系统管理员联系。",
@@ -413,6 +412,7 @@
"Contacts" : "联系人",
"Contacts menu" : "联系人菜单",
"Setup two-factor authentication" : "配置两步验证",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您似乎正在运行 32 位版本的 PHP 服务。 Nextcloud 需要 64 位以良好运作,请升级您的操作系统与 PHP 服务至 64 位版本!有关更多详细信息,请阅读{linkstart}有关的文档页面 ↗{linkend}。"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您似乎正在运行 32 位版本的 PHP 服务。 Nextcloud 需要 64 位以良好运作,请升级您的操作系统与 PHP 服务至 64 位版本!有关更多详细信息,请阅读{linkstart}有关的文档页面 ↗{linkend}。",
+ "%s's homepage" : "%s的主页"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/core/l10n/zh_HK.js b/core/l10n/zh_HK.js
index 7359ec7da0e..2de2ce2cef6 100644
--- a/core/l10n/zh_HK.js
+++ b/core/l10n/zh_HK.js
@@ -358,7 +358,6 @@ OC.L10N.register(
"Get your own free account" : "取得免費賬號",
"%s homepage" : "%s 的首頁",
"Confirm your password" : "確認密碼",
- "%s's homepage" : "%s 的主頁",
"Connect to your account" : "連結您的賬號",
"Please log in before granting %1$s access to your %2$s account." : "請登入後再授權「%1$s」存取您的 %2$s 賬號",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "若你並未嘗試在新的裝置登入你的賬戶,有什麼人證在嘗試登入你的賬戶並存取你的個人資料。大多數情況你並不用作任何應對,但也可通知你的系統管理員。",
@@ -427,6 +426,7 @@ OC.L10N.register(
"Contacts" : "聯絡人",
"Contacts menu" : "聯絡人選單",
"Setup two-factor authentication" : "設定雙重認證",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您好像正在運行 32 位 PHP 版本。Nextcloud 需要 64 位才能運行良好。請將您的操作系統和 PHP 升級到 64 位!有關更多詳細信息,請閱讀 {linkstart} 有關的說明書頁面 ↗{linkend}。"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您好像正在運行 32 位 PHP 版本。Nextcloud 需要 64 位才能運行良好。請將您的操作系統和 PHP 升級到 64 位!有關更多詳細信息,請閱讀 {linkstart} 有關的說明書頁面 ↗{linkend}。",
+ "%s's homepage" : "%s 的主頁"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/zh_HK.json b/core/l10n/zh_HK.json
index 2eb4983880b..e296fe27cdf 100644
--- a/core/l10n/zh_HK.json
+++ b/core/l10n/zh_HK.json
@@ -356,7 +356,6 @@
"Get your own free account" : "取得免費賬號",
"%s homepage" : "%s 的首頁",
"Confirm your password" : "確認密碼",
- "%s's homepage" : "%s 的主頁",
"Connect to your account" : "連結您的賬號",
"Please log in before granting %1$s access to your %2$s account." : "請登入後再授權「%1$s」存取您的 %2$s 賬號",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "若你並未嘗試在新的裝置登入你的賬戶,有什麼人證在嘗試登入你的賬戶並存取你的個人資料。大多數情況你並不用作任何應對,但也可通知你的系統管理員。",
@@ -425,6 +424,7 @@
"Contacts" : "聯絡人",
"Contacts menu" : "聯絡人選單",
"Setup two-factor authentication" : "設定雙重認證",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您好像正在運行 32 位 PHP 版本。Nextcloud 需要 64 位才能運行良好。請將您的操作系統和 PHP 升級到 64 位!有關更多詳細信息,請閱讀 {linkstart} 有關的說明書頁面 ↗{linkend}。"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您好像正在運行 32 位 PHP 版本。Nextcloud 需要 64 位才能運行良好。請將您的操作系統和 PHP 升級到 64 位!有關更多詳細信息,請閱讀 {linkstart} 有關的說明書頁面 ↗{linkend}。",
+ "%s's homepage" : "%s 的主頁"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index 32445a46308..188abfc221a 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -358,7 +358,6 @@ OC.L10N.register(
"Get your own free account" : "取得免費帳號",
"%s homepage" : "%s 的首頁",
"Confirm your password" : "確認密碼",
- "%s's homepage" : "%s 的首頁",
"Connect to your account" : "連結您的帳號",
"Please log in before granting %1$s access to your %2$s account." : "請登入後再授權「%1$s」存取您的 %2$s 帳號",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "若您並未嘗試設定新裝置或應用程式,那麼某人可能正在欺騙您讓他們存取您的資料。在這種情況下,請不要繼續,請聯絡您的系統管理員。",
@@ -427,6 +426,7 @@ OC.L10N.register(
"Contacts" : "聯絡人",
"Contacts menu" : "聯絡人選單",
"Setup two-factor authentication" : "設定雙因素驗證",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 需要 64 位元才能運作良好。請將您的作業系統與 PHP 升級至 64 位元!要取得更多詳細資訊,請閱讀{linkstart}關於此問題的文件 ↗{linkend}。"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 需要 64 位元才能運作良好。請將您的作業系統與 PHP 升級至 64 位元!要取得更多詳細資訊,請閱讀{linkstart}關於此問題的文件 ↗{linkend}。",
+ "%s's homepage" : "%s 的首頁"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index fc869f59bcd..b107c999b21 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -356,7 +356,6 @@
"Get your own free account" : "取得免費帳號",
"%s homepage" : "%s 的首頁",
"Confirm your password" : "確認密碼",
- "%s's homepage" : "%s 的首頁",
"Connect to your account" : "連結您的帳號",
"Please log in before granting %1$s access to your %2$s account." : "請登入後再授權「%1$s」存取您的 %2$s 帳號",
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "若您並未嘗試設定新裝置或應用程式,那麼某人可能正在欺騙您讓他們存取您的資料。在這種情況下,請不要繼續,請聯絡您的系統管理員。",
@@ -425,6 +424,7 @@
"Contacts" : "聯絡人",
"Contacts menu" : "聯絡人選單",
"Setup two-factor authentication" : "設定雙因素驗證",
- "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 需要 64 位元才能運作良好。請將您的作業系統與 PHP 升級至 64 位元!要取得更多詳細資訊,請閱讀{linkstart}關於此問題的文件 ↗{linkend}。"
+ "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 需要 64 位元才能運作良好。請將您的作業系統與 PHP 升級至 64 位元!要取得更多詳細資訊,請閱讀{linkstart}關於此問題的文件 ↗{linkend}。",
+ "%s's homepage" : "%s 的首頁"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/dist/files_sharing-additionalScripts.js b/dist/files_sharing-additionalScripts.js
index a1718bc3e8b..123ab3eea07 100644
--- a/dist/files_sharing-additionalScripts.js
+++ b/dist/files_sharing-additionalScripts.js
@@ -1,3 +1,3 @@
/*! For license information please see files_sharing-additionalScripts.js.LICENSE.txt */
-!function(){var e,a={5972:function(e,a,r){"use strict";var i,n=r(95573),s=r.n(n),o=r(41922),l=r(42515);_.extend(OC.Files.Client,{PROPERTY_SHARE_TYPES:"{"+OC.Files.Client.NS_OWNCLOUD+"}share-types",PROPERTY_OWNER_ID:"{"+OC.Files.Client.NS_OWNCLOUD+"}owner-id",PROPERTY_OWNER_DISPLAY_NAME:"{"+OC.Files.Client.NS_OWNCLOUD+"}owner-display-name"}),OCA.Sharing||(OCA.Sharing={}),OCA.Sharing.Util={_REMOTE_OWNER_REGEXP:new RegExp("^(([^@]*)@(([^@^/\\s]*)@)?)((https://)?[^[\\s/]*)([/](.*))?$"),attach:function(e){var a;if(null!==(a=(0,l.getCapabilities)().files_sharing)&&void 0!==a&&a.api_enabled&&"trashbin"!==e.id&&"files.public"!==e.id){var r=e.fileActions,i=e._createRow;e._createRow=function(e){var a=i.apply(this,arguments),t=OCA.Sharing.Util.getSharePermissions(e);return 0===e.permissions&&(delete r.actions.all.Comment,delete r.actions.all.Details,delete r.actions.all.Goto),_.isFunction(e.canDownload)&&!e.canDownload()&&(delete r.actions.all.Download,e.permissions&0===OC.PERMISSION_UPDATE&&delete r.actions.all.MoveCopy),a.attr("data-share-permissions",t),a.attr("data-share-attributes",JSON.stringify(e.shareAttributes)),e.shareOwner&&(a.attr("data-share-owner",e.shareOwner),a.attr("data-share-owner-id",e.shareOwnerId),"shared-root"===e.mountType&&a.attr("data-permissions",e.permissions|OC.PERMISSION_UPDATE)),e.recipientData&&!_.isEmpty(e.recipientData)&&a.attr("data-share-recipient-data",JSON.stringify(e.recipientData)),e.shareTypes&&a.attr("data-share-types",e.shareTypes.join(",")),a};var n=e.elementToFile;e.elementToFile=function(e){var a=n.apply(this,arguments);if(a.shareAttributes=JSON.parse(e.attr("data-share-attributes")||"[]"),a.sharePermissions=e.attr("data-share-permissions")||void 0,a.shareOwner=e.attr("data-share-owner")||void 0,a.shareOwnerId=e.attr("data-share-owner-id")||void 0,e.attr("data-share-types")&&(a.shareTypes=e.attr("data-share-types").split(",")),e.attr("data-expiration")){var t=parseInt(e.attr("data-expiration"));a.shares=[],a.shares.push({expiration:t})}return a};var s=e._getWebdavProperties;e._getWebdavProperties=function(){var e=s.apply(this,arguments);return e.push(OC.Files.Client.PROPERTY_OWNER_ID),e.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME),e.push(OC.Files.Client.PROPERTY_SHARE_TYPES),e},e.filesClient.addFileInfoParser((function(e){var a={},t=e.propStat[0].properties,r=t[OC.Files.Client.PROPERTY_PERMISSIONS];r&&r.indexOf("S")>=0&&(a.shareOwner=t[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME],a.shareOwnerId=t[OC.Files.Client.PROPERTY_OWNER_ID]);var i=t[OC.Files.Client.PROPERTY_SHARE_TYPES];return i&&(a.shareTypes=_.chain(i).filter((function(e){return e.namespaceURI===OC.Files.Client.NS_OWNCLOUD&&"share-type"===e.nodeName.split(":")[1]})).map((function(e){return parseInt(e.textContent||e.text,10)})).value()),a})),e.$el.on("fileActionsReady",(function(e){var a=e.$files;_.each(a,(function(e){var a=$(e),t=a.attr("data-share-types")||"",r=a.attr("data-share-owner");if(t||r){var i=!1,n=!1;_.each(t.split(",")||[],(function(e){var a=parseInt(e,10);a===o.D.SHARE_TYPE_LINK||a===o.D.SHARE_TYPE_EMAIL?i=!0:(a===o.D.SHARE_TYPE_USER||a===o.D.SHARE_TYPE_GROUP||a===o.D.SHARE_TYPE_REMOTE||a===o.D.SHARE_TYPE_REMOTE_GROUP||a===o.D.SHARE_TYPE_CIRCLE||a===o.D.SHARE_TYPE_ROOM||a===o.D.SHARE_TYPE_DECK)&&(n=!0)})),OCA.Sharing.Util._updateFileActionIcon(a,n,i)}}))})),e.$el.on("changeDirectory",(function(){OCA.Sharing.sharesLoaded=!1})),r.registerAction({name:"Share",displayName:function(e){if(e&&e.$file){var a=parseInt(e.$file.data("share-types"),10),r=e.$file.data("share-owner-id");if(a>=0||r)return t("files_sharing","Shared")}return t("files_sharing","Share")},altText:t("files_sharing","Share"),mime:"all",order:-150,permissions:OC.PERMISSION_ALL,iconClass:function(e,a){var t=parseInt(a.$file.data("share-types"),10);return t===o.D.SHARE_TYPE_EMAIL||t===o.D.SHARE_TYPE_LINK?"icon-public":"icon-shared"},icon:function(e,a){var t=a.$file.data("share-owner-id");if(t)return OC.generateUrl("/avatar/".concat(t,"/32"))},type:OCA.Files.FileActions.TYPE_INLINE,actionHandler:function(a,t){if(e._detailsView){var r=parseInt(t.$file.data("share-permissions"),10);(isNaN(r)||r>0)&&e.showDetailsView(a,"sharing")}},render:function(e,a,t){return 0!=(parseInt(t.$file.data("permissions"),10)&OC.PERMISSION_SHARE)||t.$file.attr("data-share-owner")?r._defaultRenderAction.call(r,e,a,t):null}});var d=new OCA.Sharing.ShareBreadCrumbView;e.registerBreadCrumbDetailView(d)}},_updateFileListDataAttributes:function(e,a,t){if("files"!==e.id)if(_.pluck(t.get("shares"),"share_with_displayname").length){var r=_.mapObject(t.get("shares"),(function(e){return{shareWith:e.share_with,shareWithDisplayName:e.share_with_displayname}}));a.attr("data-share-recipient-data",JSON.stringify(r))}else a.removeAttr("data-share-recipient-data")},_updateFileActionIcon:function(e,a,t){return!!(a||t||e.attr("data-share-recipient-data")||e.attr("data-share-owner"))&&(OCA.Sharing.Util._markFileAsShared(e,!0,t),!0)},_markFileAsShared:function(e,a,r){var i,n,s,o,l=e.find('.fileactions .action[data-action="Share"]'),d=e.data("type"),h=l.find(".icon"),c=e.attr("data-share-owner-id"),u=e.attr("data-share-owner"),p=e.attr("data-mounttype"),f="icon-shared";l.removeClass("shared-style");var m=e.attr("data-e2eencrypted");"dir"===d&&"true"===m?(o=OC.MimeType.getIconUrl("dir-encrypted"),e.attr("data-icon",o)):"dir"===d&&(a||r||c)?(o=void 0!==p&&"shared-root"!==p&&"shared"!==p?OC.MimeType.getIconUrl("dir-"+p):r?OC.MimeType.getIconUrl("dir-public"):OC.MimeType.getIconUrl("dir-shared"),e.find(".filename .thumbnail").css("background-image","url("+o+")"),e.attr("data-icon",o)):"dir"===d&&(p&&0===p.indexOf("external")?(o=OC.MimeType.getIconUrl("dir-external"),e.attr("data-icon",o)):(o=OC.MimeType.getIconUrl("dir"),e.removeAttr("data-icon")),e.find(".filename .thumbnail").css("background-image","url("+o+")")),a||c?(n=e.data("share-recipient-data"),l.addClass("shared-style"),s="<span>"+t("files_sharing","Shared")+"</span>",c?(i=t("files_sharing","Shared by"),s=OCA.Sharing.Util._formatRemoteShare(c,u,i)):n&&(s=OCA.Sharing.Util._formatShareList(n)),l.html(s).prepend(h),(c||n)&&l.find(".avatar").each((function(){$(this).avatar($(this).data("username"),32)}))):l.html('<span class="hidden-visually">'+t("files_sharing","Shared")+"</span>").prepend(h),r&&(f="icon-public"),h.removeClass("icon-shared icon-public").addClass(f)},_formatRemoteShare:function(e,a,t){var r=OCA.Sharing.Util._REMOTE_OWNER_REGEXP.exec(e);if(!r||!r[7])return'<span class="avatar" data-username="'+s()(e)+'" title="'+t+" "+s()(a)+'"></span><span class="hidden-visually">'+t+" "+s()(a)+"</span> ";var i=r[2],n=r[4],o=r[5],l=r[6],d=r[8]?r[7]:"",h=t+" "+i;n&&(h+="@"+n),o&&(h+="@"+o.replace(l,"")+d);var c='<span class="remoteAddress" title="'+s()(h)+'">';return c+='<span class="username">'+s()(i)+"</span>",n&&(c+='<span class="userDomain">@'+s()(n)+"</span>"),c+"</span> "},_formatShareList:function(e){var a=this;return(e=_.toArray(e)).sort((function(e,a){return e.shareWithDisplayName.localeCompare(a.shareWithDisplayName)})),$.map(e,(function(e){return a._formatRemoteShare(e.shareWith,e.shareWithDisplayName,t("files_sharing","Shared with"))}))},markFileAsShared:function(e,a,r){var i,n,s,o,l=e.find('.fileactions .action[data-action="Share"]'),d=e.data("type"),h=l.find(".icon"),c=e.attr("data-share-owner-id"),u=e.attr("data-share-owner"),p=e.attr("data-mounttype"),f="icon-shared";l.removeClass("shared-style"),"dir"===d&&(a||r||c)?(o=void 0!==p&&"shared-root"!==p&&"shared"!==p?OC.MimeType.getIconUrl("dir-"+p):r?OC.MimeType.getIconUrl("dir-public"):OC.MimeType.getIconUrl("dir-shared"),e.find(".filename .thumbnail").css("background-image","url("+o+")"),e.attr("data-icon",o)):"dir"===d&&("true"===e.attr("data-e2eencrypted")?(o=OC.MimeType.getIconUrl("dir-encrypted"),e.attr("data-icon",o)):p&&0===p.indexOf("external")?(o=OC.MimeType.getIconUrl("dir-external"),e.attr("data-icon",o)):(o=OC.MimeType.getIconUrl("dir"),e.removeAttr("data-icon")),e.find(".filename .thumbnail").css("background-image","url("+o+")")),a||c?(n=e.data("share-recipient-data"),l.addClass("shared-style"),s="<span>"+t("files_sharing","Shared")+"</span>",c?(i=t("files_sharing","Shared by"),s=this._formatRemoteShare(c,u,i)):n&&(s=this._formatShareList(n)),l.html(s).prepend(h),(c||n)&&l.find(".avatar").each((function(){$(this).avatar($(this).data("username"),32)}))):l.html('<span class="hidden-visually">'+t("files_sharing","Shared")+"</span>").prepend(h),r&&(f="icon-public"),h.removeClass("icon-shared icon-public").addClass(f)},getSharePermissions:function(e){return e.sharePermissions}},OC.Plugins.register("OCA.Files.FileList",OCA.Sharing.Util),i=OC.Backbone.View.extend({tagName:"span",events:{click:"_onClick"},_dirInfo:void 0,render:function(e){if(this._dirInfo=e.dirInfo||null,null===this._dirInfo||"/"===this._dirInfo.path&&""===this._dirInfo.name)this.$el.removeClass("shared icon-public icon-shared"),this.$el.hide();else{var a=e.dirInfo&&e.dirInfo.shareTypes&&e.dirInfo.shareTypes.length>0;this.$el.removeClass("shared icon-public icon-shared"),a?(this.$el.addClass("shared"),-1!==e.dirInfo.shareTypes.indexOf(o.D.SHARE_TYPE_LINK)?this.$el.addClass("icon-public"):this.$el.addClass("icon-shared")):this.$el.addClass("icon-shared"),this.$el.show(),this.delegateEvents()}return this},_onClick:function(e){e.preventDefault(),e.stopPropagation();var a=new OCA.Files.FileInfoModel(this._dirInfo),t=this;a.on("change",(function(){t.render({dirInfo:t._dirInfo})}));var r=a.attributes.path+"/"+a.attributes.name;OCA.Files.Sidebar.open(r),OCA.Files.Sidebar.setActiveTab("sharing")}}),OCA.Sharing.ShareBreadCrumbView=i;var d=r(93379),h=r.n(d),c=r(7795),u=r.n(c),p=r(90569),f=r.n(p),m=r(3565),O=r.n(m),C=r(19216),g=r.n(C),A=r(44589),v=r.n(A),y=r(89216),S={};S.styleTagTransform=v(),S.setAttributes=O(),S.insert=f().bind(null,"head"),S.domAPI=u(),S.insertStyleElement=g(),h()(y.Z,S),y.Z&&y.Z.locals&&y.Z.locals,r(18730),r.nc=btoa(OC.requestToken),window.OCA.Sharing=OCA.Sharing},18730:function(e,a,r){r.nc=btoa(OC.requestToken),window.OCP.Collaboration.registerType("file",{action:function(){return new Promise((function(e,a){OC.dialogs.filepicker(t("files_sharing","Link to a file"),(function(t){OC.Files.getClient().getFileInfo(t).then((function(a,t){e(t.id)})).fail((function(){a(new Error("Cannot get fileinfo"))}))}),!1,null,!1,OC.dialogs.FILEPICKER_TYPE_CHOOSE,"",{allowDirectoryChooser:!0})}))},typeString:t("files_sharing","Link to a file"),typeIconClass:"icon-files-dark"})},89216:function(e,a,t){"use strict";var r=t(87537),i=t.n(r),n=t(23645),s=t.n(n)()(i());s.push([e.id,"div.crumb span.icon-shared,div.crumb span.icon-public{display:inline-block;cursor:pointer;opacity:.2;margin-right:6px}div.crumb span.icon-shared.shared,div.crumb span.icon-public.shared{opacity:.7}","",{version:3,sources:["webpack://./apps/files_sharing/src/style/sharebreadcrumb.scss"],names:[],mappings:"AAsBA,sDAEC,oBAAA,CACA,cAAA,CACA,UAAA,CACA,gBAAA,CAGD,oEAEC,UAAA",sourcesContent:["/**\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\ndiv.crumb span.icon-shared,\ndiv.crumb span.icon-public {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\topacity: 0.2;\n\tmargin-right: 6px;\n}\n\ndiv.crumb span.icon-shared.shared,\ndiv.crumb span.icon-public.shared {\n\topacity: 0.7;\n}\n"],sourceRoot:""}]),a.Z=s}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var n=r[e]={id:e,loaded:!1,exports:{}};return a[e].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=a,e=[],i.O=function(a,t,r,n){if(!t){var s=1/0;for(h=0;h<e.length;h++){t=e[h][0],r=e[h][1],n=e[h][2];for(var o=!0,l=0;l<t.length;l++)(!1&n||s>=n)&&Object.keys(i.O).every((function(e){return i.O[e](t[l])}))?t.splice(l--,1):(o=!1,n<s&&(s=n));if(o){e.splice(h--,1);var d=r();void 0!==d&&(a=d)}}return a}n=n||0;for(var h=e.length;h>0&&e[h-1][2]>n;h--)e[h]=e[h-1];e[h]=[t,r,n]},i.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(a,{a:a}),a},i.d=function(e,a){for(var t in a)i.o(a,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},i.j=6200,function(){i.b=document.baseURI||self.location.href;var e={6200:0,5438:0};i.O.j=function(a){return 0===e[a]};var a=function(a,t){var r,n,s=t[0],o=t[1],l=t[2],d=0;if(s.some((function(a){return 0!==e[a]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(l)var h=l(i)}for(a&&a(t);d<s.length;d++)n=s[d],i.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return i.O(h)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))}(),i.nc=void 0;var n=i.O(void 0,[7874],(function(){return i(5972)}));n=i.O(n)}();
-//# sourceMappingURL=files_sharing-additionalScripts.js.map?v=261ab797315342d2a535 \ No newline at end of file
+!function(){var e,a={5972:function(e,a,r){"use strict";var i,n=r(95573),s=r.n(n),o=r(41922),l=r(42515);_.extend(OC.Files.Client,{PROPERTY_SHARE_TYPES:"{"+OC.Files.Client.NS_OWNCLOUD+"}share-types",PROPERTY_OWNER_ID:"{"+OC.Files.Client.NS_OWNCLOUD+"}owner-id",PROPERTY_OWNER_DISPLAY_NAME:"{"+OC.Files.Client.NS_OWNCLOUD+"}owner-display-name"}),OCA.Sharing||(OCA.Sharing={}),OCA.Sharing.Util={_REMOTE_OWNER_REGEXP:new RegExp("^(([^@]*)@(([^@^/\\s]*)@)?)((https://)?[^[\\s/]*)([/](.*))?$"),attach:function(e){var a;if(null!==(a=(0,l.getCapabilities)().files_sharing)&&void 0!==a&&a.api_enabled&&"trashbin"!==e.id&&"files.public"!==e.id){var r=e.fileActions,i=e._createRow;e._createRow=function(e){var a=i.apply(this,arguments),t=OCA.Sharing.Util.getSharePermissions(e);return 0===e.permissions&&(delete r.actions.all.Comment,delete r.actions.all.Details,delete r.actions.all.Goto),_.isFunction(e.canDownload)&&!e.canDownload()&&(delete r.actions.all.Download,e.permissions&0===OC.PERMISSION_UPDATE&&delete r.actions.all.MoveCopy),a.attr("data-share-permissions",t),a.attr("data-share-attributes",JSON.stringify(e.shareAttributes)),e.shareOwner&&(a.attr("data-share-owner",e.shareOwner),a.attr("data-share-owner-id",e.shareOwnerId),"shared-root"===e.mountType&&a.attr("data-permissions",e.permissions|OC.PERMISSION_UPDATE)),e.recipientData&&!_.isEmpty(e.recipientData)&&a.attr("data-share-recipient-data",JSON.stringify(e.recipientData)),e.shareTypes&&a.attr("data-share-types",e.shareTypes.join(",")),a};var n=e.elementToFile;e.elementToFile=function(e){var a=n.apply(this,arguments);if(a.shareAttributes=JSON.parse(e.attr("data-share-attributes")||"[]"),a.sharePermissions=e.attr("data-share-permissions")||void 0,a.shareOwner=e.attr("data-share-owner")||void 0,a.shareOwnerId=e.attr("data-share-owner-id")||void 0,e.attr("data-share-types")&&(a.shareTypes=e.attr("data-share-types").split(",")),e.attr("data-expiration")){var t=parseInt(e.attr("data-expiration"));a.shares=[],a.shares.push({expiration:t})}return a};var s=e._getWebdavProperties;e._getWebdavProperties=function(){var e=s.apply(this,arguments);return e.push(OC.Files.Client.PROPERTY_OWNER_ID),e.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME),e.push(OC.Files.Client.PROPERTY_SHARE_TYPES),e},e.filesClient.addFileInfoParser((function(e){var a={},t=e.propStat[0].properties,r=t[OC.Files.Client.PROPERTY_PERMISSIONS];r&&r.indexOf("S")>=0&&(a.shareOwner=t[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME],a.shareOwnerId=t[OC.Files.Client.PROPERTY_OWNER_ID]);var i=t[OC.Files.Client.PROPERTY_SHARE_TYPES];return i&&(a.shareTypes=_.chain(i).filter((function(e){return e.namespaceURI===OC.Files.Client.NS_OWNCLOUD&&"share-type"===e.nodeName.split(":")[1]})).map((function(e){return parseInt(e.textContent||e.text,10)})).value()),a})),e.$el.on("fileActionsReady",(function(e){var a=e.$files;_.each(a,(function(e){var a=$(e),t=a.attr("data-share-types")||"",r=a.attr("data-share-owner");if(t||r){var i=!1,n=!1;_.each(t.split(",")||[],(function(e){var a=parseInt(e,10);a===o.D.SHARE_TYPE_LINK||a===o.D.SHARE_TYPE_EMAIL?i=!0:(a===o.D.SHARE_TYPE_USER||a===o.D.SHARE_TYPE_GROUP||a===o.D.SHARE_TYPE_REMOTE||a===o.D.SHARE_TYPE_REMOTE_GROUP||a===o.D.SHARE_TYPE_CIRCLE||a===o.D.SHARE_TYPE_ROOM||a===o.D.SHARE_TYPE_DECK||a===o.D.SHARE_TYPE_SCIENCEMESH)&&(n=!0)})),OCA.Sharing.Util._updateFileActionIcon(a,n,i)}}))})),e.$el.on("changeDirectory",(function(){OCA.Sharing.sharesLoaded=!1})),r.registerAction({name:"Share",displayName:function(e){if(e&&e.$file){var a=parseInt(e.$file.data("share-types"),10),r=e.$file.data("share-owner-id");if(a>=0||r)return t("files_sharing","Shared")}return t("files_sharing","Share")},altText:t("files_sharing","Share"),mime:"all",order:-150,permissions:OC.PERMISSION_ALL,iconClass:function(e,a){var t=parseInt(a.$file.data("share-types"),10);return t===o.D.SHARE_TYPE_EMAIL||t===o.D.SHARE_TYPE_LINK?"icon-public":"icon-shared"},icon:function(e,a){var t=a.$file.data("share-owner-id");if(t)return OC.generateUrl("/avatar/".concat(t,"/32"))},type:OCA.Files.FileActions.TYPE_INLINE,actionHandler:function(a,t){if(e._detailsView){var r=parseInt(t.$file.data("share-permissions"),10);(isNaN(r)||r>0)&&e.showDetailsView(a,"sharing")}},render:function(e,a,t){return 0!=(parseInt(t.$file.data("permissions"),10)&OC.PERMISSION_SHARE)||t.$file.attr("data-share-owner")?r._defaultRenderAction.call(r,e,a,t):null}});var d=new OCA.Sharing.ShareBreadCrumbView;e.registerBreadCrumbDetailView(d)}},_updateFileListDataAttributes:function(e,a,t){if("files"!==e.id)if(_.pluck(t.get("shares"),"share_with_displayname").length){var r=_.mapObject(t.get("shares"),(function(e){return{shareWith:e.share_with,shareWithDisplayName:e.share_with_displayname}}));a.attr("data-share-recipient-data",JSON.stringify(r))}else a.removeAttr("data-share-recipient-data")},_updateFileActionIcon:function(e,a,t){return!!(a||t||e.attr("data-share-recipient-data")||e.attr("data-share-owner"))&&(OCA.Sharing.Util._markFileAsShared(e,!0,t),!0)},_markFileAsShared:function(e,a,r){var i,n,s,o,l=e.find('.fileactions .action[data-action="Share"]'),d=e.data("type"),h=l.find(".icon"),c=e.attr("data-share-owner-id"),u=e.attr("data-share-owner"),p=e.attr("data-mounttype"),f="icon-shared";l.removeClass("shared-style");var m=e.attr("data-e2eencrypted");"dir"===d&&"true"===m?(o=OC.MimeType.getIconUrl("dir-encrypted"),e.attr("data-icon",o)):"dir"===d&&(a||r||c)?(o=void 0!==p&&"shared-root"!==p&&"shared"!==p?OC.MimeType.getIconUrl("dir-"+p):r?OC.MimeType.getIconUrl("dir-public"):OC.MimeType.getIconUrl("dir-shared"),e.find(".filename .thumbnail").css("background-image","url("+o+")"),e.attr("data-icon",o)):"dir"===d&&(p&&0===p.indexOf("external")?(o=OC.MimeType.getIconUrl("dir-external"),e.attr("data-icon",o)):(o=OC.MimeType.getIconUrl("dir"),e.removeAttr("data-icon")),e.find(".filename .thumbnail").css("background-image","url("+o+")")),a||c?(n=e.data("share-recipient-data"),l.addClass("shared-style"),s="<span>"+t("files_sharing","Shared")+"</span>",c?(i=t("files_sharing","Shared by"),s=OCA.Sharing.Util._formatRemoteShare(c,u,i)):n&&(s=OCA.Sharing.Util._formatShareList(n)),l.html(s).prepend(h),(c||n)&&l.find(".avatar").each((function(){$(this).avatar($(this).data("username"),32)}))):l.html('<span class="hidden-visually">'+t("files_sharing","Shared")+"</span>").prepend(h),r&&(f="icon-public"),h.removeClass("icon-shared icon-public").addClass(f)},_formatRemoteShare:function(e,a,t){var r=OCA.Sharing.Util._REMOTE_OWNER_REGEXP.exec(e);if(!r||!r[7])return'<span class="avatar" data-username="'+s()(e)+'" title="'+t+" "+s()(a)+'"></span><span class="hidden-visually">'+t+" "+s()(a)+"</span> ";var i=r[2],n=r[4],o=r[5],l=r[6],d=r[8]?r[7]:"",h=t+" "+i;n&&(h+="@"+n),o&&(h+="@"+o.replace(l,"")+d);var c='<span class="remoteAddress" title="'+s()(h)+'">';return c+='<span class="username">'+s()(i)+"</span>",n&&(c+='<span class="userDomain">@'+s()(n)+"</span>"),c+"</span> "},_formatShareList:function(e){var a=this;return(e=_.toArray(e)).sort((function(e,a){return e.shareWithDisplayName.localeCompare(a.shareWithDisplayName)})),$.map(e,(function(e){return a._formatRemoteShare(e.shareWith,e.shareWithDisplayName,t("files_sharing","Shared with"))}))},markFileAsShared:function(e,a,r){var i,n,s,o,l=e.find('.fileactions .action[data-action="Share"]'),d=e.data("type"),h=l.find(".icon"),c=e.attr("data-share-owner-id"),u=e.attr("data-share-owner"),p=e.attr("data-mounttype"),f="icon-shared";l.removeClass("shared-style"),"dir"===d&&(a||r||c)?(o=void 0!==p&&"shared-root"!==p&&"shared"!==p?OC.MimeType.getIconUrl("dir-"+p):r?OC.MimeType.getIconUrl("dir-public"):OC.MimeType.getIconUrl("dir-shared"),e.find(".filename .thumbnail").css("background-image","url("+o+")"),e.attr("data-icon",o)):"dir"===d&&("true"===e.attr("data-e2eencrypted")?(o=OC.MimeType.getIconUrl("dir-encrypted"),e.attr("data-icon",o)):p&&0===p.indexOf("external")?(o=OC.MimeType.getIconUrl("dir-external"),e.attr("data-icon",o)):(o=OC.MimeType.getIconUrl("dir"),e.removeAttr("data-icon")),e.find(".filename .thumbnail").css("background-image","url("+o+")")),a||c?(n=e.data("share-recipient-data"),l.addClass("shared-style"),s="<span>"+t("files_sharing","Shared")+"</span>",c?(i=t("files_sharing","Shared by"),s=this._formatRemoteShare(c,u,i)):n&&(s=this._formatShareList(n)),l.html(s).prepend(h),(c||n)&&l.find(".avatar").each((function(){$(this).avatar($(this).data("username"),32)}))):l.html('<span class="hidden-visually">'+t("files_sharing","Shared")+"</span>").prepend(h),r&&(f="icon-public"),h.removeClass("icon-shared icon-public").addClass(f)},getSharePermissions:function(e){return e.sharePermissions}},OC.Plugins.register("OCA.Files.FileList",OCA.Sharing.Util),i=OC.Backbone.View.extend({tagName:"span",events:{click:"_onClick"},_dirInfo:void 0,render:function(e){if(this._dirInfo=e.dirInfo||null,null===this._dirInfo||"/"===this._dirInfo.path&&""===this._dirInfo.name)this.$el.removeClass("shared icon-public icon-shared"),this.$el.hide();else{var a=e.dirInfo&&e.dirInfo.shareTypes&&e.dirInfo.shareTypes.length>0;this.$el.removeClass("shared icon-public icon-shared"),a?(this.$el.addClass("shared"),-1!==e.dirInfo.shareTypes.indexOf(o.D.SHARE_TYPE_LINK)?this.$el.addClass("icon-public"):this.$el.addClass("icon-shared")):this.$el.addClass("icon-shared"),this.$el.show(),this.delegateEvents()}return this},_onClick:function(e){e.preventDefault(),e.stopPropagation();var a=new OCA.Files.FileInfoModel(this._dirInfo),t=this;a.on("change",(function(){t.render({dirInfo:t._dirInfo})}));var r=a.attributes.path+"/"+a.attributes.name;OCA.Files.Sidebar.open(r),OCA.Files.Sidebar.setActiveTab("sharing")}}),OCA.Sharing.ShareBreadCrumbView=i;var d=r(93379),h=r.n(d),c=r(7795),u=r.n(c),p=r(90569),f=r.n(p),m=r(3565),O=r.n(m),C=r(19216),A=r.n(C),g=r(44589),S=r.n(g),v=r(89216),y={};y.styleTagTransform=S(),y.setAttributes=O(),y.insert=f().bind(null,"head"),y.domAPI=u(),y.insertStyleElement=A(),h()(v.Z,y),v.Z&&v.Z.locals&&v.Z.locals,r(18730),r.nc=btoa(OC.requestToken),window.OCA.Sharing=OCA.Sharing},18730:function(e,a,r){r.nc=btoa(OC.requestToken),window.OCP.Collaboration.registerType("file",{action:function(){return new Promise((function(e,a){OC.dialogs.filepicker(t("files_sharing","Link to a file"),(function(t){OC.Files.getClient().getFileInfo(t).then((function(a,t){e(t.id)})).fail((function(){a(new Error("Cannot get fileinfo"))}))}),!1,null,!1,OC.dialogs.FILEPICKER_TYPE_CHOOSE,"",{allowDirectoryChooser:!0})}))},typeString:t("files_sharing","Link to a file"),typeIconClass:"icon-files-dark"})},89216:function(e,a,t){"use strict";var r=t(87537),i=t.n(r),n=t(23645),s=t.n(n)()(i());s.push([e.id,"div.crumb span.icon-shared,div.crumb span.icon-public{display:inline-block;cursor:pointer;opacity:.2;margin-right:6px}div.crumb span.icon-shared.shared,div.crumb span.icon-public.shared{opacity:.7}","",{version:3,sources:["webpack://./apps/files_sharing/src/style/sharebreadcrumb.scss"],names:[],mappings:"AAsBA,sDAEC,oBAAA,CACA,cAAA,CACA,UAAA,CACA,gBAAA,CAGD,oEAEC,UAAA",sourcesContent:["/**\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\ndiv.crumb span.icon-shared,\ndiv.crumb span.icon-public {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\topacity: 0.2;\n\tmargin-right: 6px;\n}\n\ndiv.crumb span.icon-shared.shared,\ndiv.crumb span.icon-public.shared {\n\topacity: 0.7;\n}\n"],sourceRoot:""}]),a.Z=s}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var n=r[e]={id:e,loaded:!1,exports:{}};return a[e].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=a,e=[],i.O=function(a,t,r,n){if(!t){var s=1/0;for(h=0;h<e.length;h++){t=e[h][0],r=e[h][1],n=e[h][2];for(var o=!0,l=0;l<t.length;l++)(!1&n||s>=n)&&Object.keys(i.O).every((function(e){return i.O[e](t[l])}))?t.splice(l--,1):(o=!1,n<s&&(s=n));if(o){e.splice(h--,1);var d=r();void 0!==d&&(a=d)}}return a}n=n||0;for(var h=e.length;h>0&&e[h-1][2]>n;h--)e[h]=e[h-1];e[h]=[t,r,n]},i.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(a,{a:a}),a},i.d=function(e,a){for(var t in a)i.o(a,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},i.j=6200,function(){i.b=document.baseURI||self.location.href;var e={6200:0,5438:0};i.O.j=function(a){return 0===e[a]};var a=function(a,t){var r,n,s=t[0],o=t[1],l=t[2],d=0;if(s.some((function(a){return 0!==e[a]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(l)var h=l(i)}for(a&&a(t);d<s.length;d++)n=s[d],i.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return i.O(h)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))}(),i.nc=void 0;var n=i.O(void 0,[7874],(function(){return i(5972)}));n=i.O(n)}();
+//# sourceMappingURL=files_sharing-additionalScripts.js.map?v=3535d155a6947f8e9d18 \ No newline at end of file
diff --git a/dist/files_sharing-additionalScripts.js.map b/dist/files_sharing-additionalScripts.js.map
index 5b3bd03a6d6..45c14cb65cf 100644
--- a/dist/files_sharing-additionalScripts.js.map
+++ b/dist/files_sharing-additionalScripts.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_sharing-additionalScripts.js?v=261ab797315342d2a535","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/sharebreadcrumbview.js","webpack:///nextcloud/apps/files_sharing/src/share.js","webpack://nextcloud/./apps/files_sharing/src/style/sharebreadcrumb.scss?a9a3","webpack:///nextcloud/apps/files_sharing/src/additionalScripts.js","webpack:///nextcloud/apps/files_sharing/src/collaborationresourceshandler.js","webpack:///nextcloud/apps/files_sharing/src/style/sharebreadcrumb.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\n(function() {\n\t'use strict'\n\n\tconst BreadCrumbView = OC.Backbone.View.extend({\n\t\ttagName: 'span',\n\t\tevents: {\n\t\t\tclick: '_onClick',\n\t\t},\n\t\t_dirInfo: undefined,\n\n\t\trender(data) {\n\t\t\tthis._dirInfo = data.dirInfo || null\n\n\t\t\tif (this._dirInfo !== null && (this._dirInfo.path !== '/' || this._dirInfo.name !== '')) {\n\t\t\t\tconst isShared = data.dirInfo && data.dirInfo.shareTypes && data.dirInfo.shareTypes.length > 0\n\t\t\t\tthis.$el.removeClass('shared icon-public icon-shared')\n\t\t\t\tif (isShared) {\n\t\t\t\t\tthis.$el.addClass('shared')\n\t\t\t\t\tif (data.dirInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_LINK) !== -1) {\n\t\t\t\t\t\tthis.$el.addClass('icon-public')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$el.addClass('icon-shared')\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$el.addClass('icon-shared')\n\t\t\t\t}\n\t\t\t\tthis.$el.show()\n\t\t\t\tthis.delegateEvents()\n\t\t\t} else {\n\t\t\t\tthis.$el.removeClass('shared icon-public icon-shared')\n\t\t\t\tthis.$el.hide()\n\t\t\t}\n\n\t\t\treturn this\n\t\t},\n\t\t_onClick(e) {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\n\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(this._dirInfo)\n\t\t\tconst self = this\n\t\t\tfileInfoModel.on('change', function() {\n\t\t\t\tself.render({\n\t\t\t\t\tdirInfo: self._dirInfo,\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tconst path = fileInfoModel.attributes.path + '/' + fileInfoModel.attributes.name\n\t\t\tOCA.Files.Sidebar.open(path)\n\t\t\tOCA.Files.Sidebar.setActiveTab('sharing')\n\t\t},\n\t})\n\n\tOCA.Sharing.ShareBreadCrumbView = BreadCrumbView\n})()\n","/**\n * Copyright (c) 2014\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Maxence Lange <maxence@nextcloud.com>\n * @author Michael Jobst <mjobst+github@tecratech.de>\n * @author Michael Jobst <mjobst@necls.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Samuel <faust64@gmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport escapeHTML from 'escape-html'\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport { getCapabilities } from '@nextcloud/capabilities'\n\n(function() {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_SHARE_TYPES:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}share-types',\n\t\tPROPERTY_OWNER_ID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}owner-id',\n\t\tPROPERTY_OWNER_DISPLAY_NAME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}owner-display-name'\n\t})\n\n\tif (!OCA.Sharing) {\n\t\tOCA.Sharing = {}\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.Sharing.Util = {\n\n\t\t/**\n\t\t * Regular expression for splitting parts of remote share owners:\n\t\t * \"user@example.com/\"\n\t\t * \"user@example.com/path/to/owncloud\"\n\t\t * \"user@anotherexample.com@example.com/path/to/owncloud\n\t\t */\n\t\t_REMOTE_OWNER_REGEXP: new RegExp('^(([^@]*)@(([^@^/\\\\s]*)@)?)((https://)?[^[\\\\s/]*)([/](.*))?$'),\n\n\t\t/**\n\t\t * Initialize the sharing plugin.\n\t\t *\n\t\t * Registers the \"Share\" file action and adds additional\n\t\t * DOM attributes for the sharing file info.\n\t\t *\n\t\t * @param {OCA.Files.FileList} fileList file list to be extended\n\t\t */\n\t\tattach: function(fileList) {\n\t\t\t// core sharing is disabled/not loaded\n\t\t\tif (!getCapabilities().files_sharing?.api_enabled) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (fileList.id === 'trashbin' || fileList.id === 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvar fileActions = fileList.fileActions\n\t\t\tvar oldCreateRow = fileList._createRow\n\t\t\tfileList._createRow = function(fileData) {\n\n\t\t\t\tvar tr = oldCreateRow.apply(this, arguments)\n\t\t\t\tvar sharePermissions = OCA.Sharing.Util.getSharePermissions(fileData)\n\n\t\t\t\tif (fileData.permissions === 0) {\n\t\t\t\t\t// no permission, disabling sidebar\n\t\t\t\t\tdelete fileActions.actions.all.Comment\n\t\t\t\t\tdelete fileActions.actions.all.Details\n\t\t\t\t\tdelete fileActions.actions.all.Goto\n\t\t\t\t}\n\t\t\t\tif (_.isFunction(fileData.canDownload) && !fileData.canDownload()) {\n\t\t\t\t\tdelete fileActions.actions.all.Download\n\t\t\t\t\tif (fileData.permissions & OC.PERMISSION_UPDATE === 0) {\n\t\t\t\t\t\t// neither move nor copy is allowed, remove the action completely\n\t\t\t\t\t\tdelete fileActions.actions.all.MoveCopy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttr.attr('data-share-permissions', sharePermissions)\n\t\t\t\ttr.attr('data-share-attributes', JSON.stringify(fileData.shareAttributes))\n\t\t\t\tif (fileData.shareOwner) {\n\t\t\t\t\ttr.attr('data-share-owner', fileData.shareOwner)\n\t\t\t\t\ttr.attr('data-share-owner-id', fileData.shareOwnerId)\n\t\t\t\t\t// user should always be able to rename a mount point\n\t\t\t\t\tif (fileData.mountType === 'shared-root') {\n\t\t\t\t\t\ttr.attr('data-permissions', fileData.permissions | OC.PERMISSION_UPDATE)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (fileData.recipientData && !_.isEmpty(fileData.recipientData)) {\n\t\t\t\t\ttr.attr('data-share-recipient-data', JSON.stringify(fileData.recipientData))\n\t\t\t\t}\n\t\t\t\tif (fileData.shareTypes) {\n\t\t\t\t\ttr.attr('data-share-types', fileData.shareTypes.join(','))\n\t\t\t\t}\n\t\t\t\treturn tr\n\t\t\t}\n\n\t\t\tvar oldElementToFile = fileList.elementToFile\n\t\t\tfileList.elementToFile = function($el) {\n\t\t\t\tvar fileInfo = oldElementToFile.apply(this, arguments)\n\t\t\t\tfileInfo.shareAttributes = JSON.parse($el.attr('data-share-attributes') || '[]')\n\t\t\t\tfileInfo.sharePermissions = $el.attr('data-share-permissions') || undefined\n\t\t\t\tfileInfo.shareOwner = $el.attr('data-share-owner') || undefined\n\t\t\t\tfileInfo.shareOwnerId = $el.attr('data-share-owner-id') || undefined\n\n\t\t\t\tif ($el.attr('data-share-types')) {\n\t\t\t\t\tfileInfo.shareTypes = $el.attr('data-share-types').split(',')\n\t\t\t\t}\n\n\t\t\t\tif ($el.attr('data-expiration')) {\n\t\t\t\t\tvar expirationTimestamp = parseInt($el.attr('data-expiration'))\n\t\t\t\t\tfileInfo.shares = []\n\t\t\t\t\tfileInfo.shares.push({ expiration: expirationTimestamp })\n\t\t\t\t}\n\n\t\t\t\treturn fileInfo\n\t\t\t}\n\n\t\t\tvar oldGetWebdavProperties = fileList._getWebdavProperties\n\t\t\tfileList._getWebdavProperties = function() {\n\t\t\t\tvar props = oldGetWebdavProperties.apply(this, arguments)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_OWNER_ID)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_SHARE_TYPES)\n\t\t\t\treturn props\n\t\t\t}\n\n\t\t\tfileList.filesClient.addFileInfoParser(function(response) {\n\t\t\t\tvar data = {}\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar permissionsProp = props[OC.Files.Client.PROPERTY_PERMISSIONS]\n\n\t\t\t\tif (permissionsProp && permissionsProp.indexOf('S') >= 0) {\n\t\t\t\t\tdata.shareOwner = props[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME]\n\t\t\t\t\tdata.shareOwnerId = props[OC.Files.Client.PROPERTY_OWNER_ID]\n\t\t\t\t}\n\n\t\t\t\tvar shareTypesProp = props[OC.Files.Client.PROPERTY_SHARE_TYPES]\n\t\t\t\tif (shareTypesProp) {\n\t\t\t\t\tdata.shareTypes = _.chain(shareTypesProp).filter(function(xmlvalue) {\n\t\t\t\t\t\treturn (xmlvalue.namespaceURI === OC.Files.Client.NS_OWNCLOUD && xmlvalue.nodeName.split(':')[1] === 'share-type')\n\t\t\t\t\t}).map(function(xmlvalue) {\n\t\t\t\t\t\treturn parseInt(xmlvalue.textContent || xmlvalue.text, 10)\n\t\t\t\t\t}).value()\n\t\t\t\t}\n\n\t\t\t\treturn data\n\t\t\t})\n\n\t\t\t// use delegate to catch the case with multiple file lists\n\t\t\tfileList.$el.on('fileActionsReady', function(ev) {\n\t\t\t\tvar $files = ev.$files\n\n\t\t\t\t_.each($files, function(file) {\n\t\t\t\t\tvar $tr = $(file)\n\t\t\t\t\tvar shareTypesStr = $tr.attr('data-share-types') || ''\n\t\t\t\t\tvar shareOwner = $tr.attr('data-share-owner')\n\t\t\t\t\tif (shareTypesStr || shareOwner) {\n\t\t\t\t\t\tvar hasLink = false\n\t\t\t\t\t\tvar hasShares = false\n\t\t\t\t\t\t_.each(shareTypesStr.split(',') || [], function(shareTypeStr) {\n\t\t\t\t\t\t\tlet shareType = parseInt(shareTypeStr, 10)\n\t\t\t\t\t\t\tif (shareType === ShareTypes.SHARE_TYPE_LINK) {\n\t\t\t\t\t\t\t\thasLink = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\t\t\thasLink = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_USER) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_GROUP) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_REMOTE) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_ROOM) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_DECK) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\tOCA.Sharing.Util._updateFileActionIcon($tr, hasShares, hasLink)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tfileList.$el.on('changeDirectory', function() {\n\t\t\t\tOCA.Sharing.sharesLoaded = false\n\t\t\t})\n\n\t\t\tfileActions.registerAction({\n\t\t\t\tname: 'Share',\n\t\t\t\tdisplayName: function(context) {\n\t\t\t\t\tif (context && context.$file) {\n\t\t\t\t\t\tvar shareType = parseInt(context.$file.data('share-types'), 10)\n\t\t\t\t\t\tvar shareOwner = context.$file.data('share-owner-id')\n\t\t\t\t\t\tif (shareType >= 0 || shareOwner) {\n\t\t\t\t\t\t\treturn t('files_sharing', 'Shared')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share')\n\t\t\t\t},\n\t\t\t\taltText: t('files_sharing', 'Share'),\n\t\t\t\tmime: 'all',\n\t\t\t\torder: -150,\n\t\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\t\ticonClass: function(fileName, context) {\n\t\t\t\t\tvar shareType = parseInt(context.$file.data('share-types'), 10)\n\t\t\t\t\tif (shareType === ShareTypes.SHARE_TYPE_EMAIL\n\t\t\t\t\t\t|| shareType === ShareTypes.SHARE_TYPE_LINK) {\n\t\t\t\t\t\treturn 'icon-public'\n\t\t\t\t\t}\n\t\t\t\t\treturn 'icon-shared'\n\t\t\t\t},\n\t\t\t\ticon: function(fileName, context) {\n\t\t\t\t\tvar shareOwner = context.$file.data('share-owner-id')\n\t\t\t\t\tif (shareOwner) {\n\t\t\t\t\t\treturn OC.generateUrl(`/avatar/${shareOwner}/32`)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\t\tactionHandler: function(fileName, context) {\n\t\t\t\t\t// details view disabled in some share lists\n\t\t\t\t\tif (!fileList._detailsView) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t// do not open sidebar if permission is set and equal to 0\n\t\t\t\t\tvar permissions = parseInt(context.$file.data('share-permissions'), 10)\n\t\t\t\t\tif (isNaN(permissions) || permissions > 0) {\n\t\t\t\t\t\tfileList.showDetailsView(fileName, 'sharing')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trender: function(actionSpec, isDefault, context) {\n\t\t\t\t\tvar permissions = parseInt(context.$file.data('permissions'), 10)\n\t\t\t\t\t// if no share permissions but share owner exists, still show the link\n\t\t\t\t\tif ((permissions & OC.PERMISSION_SHARE) !== 0 || context.$file.attr('data-share-owner')) {\n\t\t\t\t\t\treturn fileActions._defaultRenderAction.call(fileActions, actionSpec, isDefault, context)\n\t\t\t\t\t}\n\t\t\t\t\t// don't render anything\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// register share breadcrumbs component\n\t\t\tvar breadCrumbSharingDetailView = new OCA.Sharing.ShareBreadCrumbView()\n\t\t\tfileList.registerBreadCrumbDetailView(breadCrumbSharingDetailView)\n\t\t},\n\n\t\t/**\n\t\t * Update file list data attributes\n\t\t */\n\t\t_updateFileListDataAttributes: function(fileList, $tr, shareModel) {\n\t\t\t// files app current cannot show recipients on load, so we don't update the\n\t\t\t// icon when changed for consistency\n\t\t\tif (fileList.id === 'files') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvar recipients = _.pluck(shareModel.get('shares'), 'share_with_displayname')\n\t\t\t// note: we only update the data attribute because updateIcon()\n\t\t\tif (recipients.length) {\n\t\t\t\tvar recipientData = _.mapObject(shareModel.get('shares'), function(share) {\n\t\t\t\t\treturn { shareWith: share.share_with, shareWithDisplayName: share.share_with_displayname }\n\t\t\t\t})\n\t\t\t\t$tr.attr('data-share-recipient-data', JSON.stringify(recipientData))\n\t\t\t} else {\n\t\t\t\t$tr.removeAttr('data-share-recipient-data')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the file action share icon for the given file\n\t\t *\n\t\t * @param $tr file element of the file to update\n\t\t * @param {boolean} hasUserShares true if a user share exists\n\t\t * @param {boolean} hasLinkShares true if a link share exists\n\t\t *\n\t\t * @returns {boolean} true if the icon was set, false otherwise\n\t\t */\n\t\t_updateFileActionIcon: function($tr, hasUserShares, hasLinkShares) {\n\t\t\t// if the statuses are loaded already, use them for the icon\n\t\t\t// (needed when scrolling to the next page)\n\t\t\tif (hasUserShares || hasLinkShares || $tr.attr('data-share-recipient-data') || $tr.attr('data-share-owner')) {\n\t\t\t\tOCA.Sharing.Util._markFileAsShared($tr, true, hasLinkShares)\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\t/**\n\t\t * Marks/unmarks a given file as shared by changing its action icon\n\t\t * and folder icon.\n\t\t *\n\t\t * @param $tr file element to mark as shared\n\t\t * @param hasShares whether shares are available\n\t\t * @param hasLink whether link share is available\n\t\t */\n\t\t_markFileAsShared: function($tr, hasShares, hasLink) {\n\t\t\tvar action = $tr.find('.fileactions .action[data-action=\"Share\"]')\n\t\t\tvar type = $tr.data('type')\n\t\t\tvar icon = action.find('.icon')\n\t\t\tvar message, recipients, avatars\n\t\t\tvar ownerId = $tr.attr('data-share-owner-id')\n\t\t\tvar owner = $tr.attr('data-share-owner')\n\t\t\tvar mountType = $tr.attr('data-mounttype')\n\t\t\tvar shareFolderIcon\n\t\t\tvar iconClass = 'icon-shared'\n\t\t\taction.removeClass('shared-style')\n\t\t\t// update folder icon\n\t\t\tvar isEncrypted = $tr.attr('data-e2eencrypted')\n\t\t\tif (type === 'dir' && isEncrypted === 'true') {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t} else if (type === 'dir' && (hasShares || hasLink || ownerId)) {\n\t\t\t\tif (typeof mountType !== 'undefined' && mountType !== 'shared-root' && mountType !== 'shared') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-' + mountType)\n\t\t\t\t} else if (hasLink) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-public')\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t} else if (type === 'dir') {\n\t\t\t\t// FIXME: duplicate of FileList._createRow logic for external folder,\n\t\t\t\t// need to refactor the icon logic into a single code path eventually\n\t\t\t\tif (mountType && mountType.indexOf('external') === 0) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-external')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir')\n\t\t\t\t\t// back to default\n\t\t\t\t\t$tr.removeAttr('data-icon')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t}\n\t\t\t// update share action text / icon\n\t\t\tif (hasShares || ownerId) {\n\t\t\t\trecipients = $tr.data('share-recipient-data')\n\t\t\t\taction.addClass('shared-style')\n\n\t\t\t\tavatars = '<span>' + t('files_sharing', 'Shared') + '</span>'\n\t\t\t\t// even if reshared, only show \"Shared by\"\n\t\t\t\tif (ownerId) {\n\t\t\t\t\tmessage = t('files_sharing', 'Shared by')\n\t\t\t\t\tavatars = OCA.Sharing.Util._formatRemoteShare(ownerId, owner, message)\n\t\t\t\t} else if (recipients) {\n\t\t\t\t\tavatars = OCA.Sharing.Util._formatShareList(recipients)\n\t\t\t\t}\n\t\t\t\taction.html(avatars).prepend(icon)\n\n\t\t\t\tif (ownerId || recipients) {\n\t\t\t\t\tvar avatarElement = action.find('.avatar')\n\t\t\t\t\tavatarElement.each(function() {\n\t\t\t\t\t\t$(this).avatar($(this).data('username'), 32)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taction.html('<span class=\"hidden-visually\">' + t('files_sharing', 'Shared') + '</span>').prepend(icon)\n\t\t\t}\n\t\t\tif (hasLink) {\n\t\t\t\ticonClass = 'icon-public'\n\t\t\t}\n\t\t\ticon.removeClass('icon-shared icon-public').addClass(iconClass)\n\t\t},\n\t\t/**\n\t\t * Format a remote address\n\t\t *\n\t\t * @param {String} shareWith userid, full remote share, or whatever\n\t\t * @param {String} shareWithDisplayName\n\t\t * @param {String} message\n\t\t * @returns {String} HTML code to display\n\t\t */\n\t\t_formatRemoteShare: function(shareWith, shareWithDisplayName, message) {\n\t\t\tvar parts = OCA.Sharing.Util._REMOTE_OWNER_REGEXP.exec(shareWith)\n\t\t\tif (!parts || !parts[7]) {\n\t\t\t\t// display avatar of the user\n\t\t\t\tvar avatar = '<span class=\"avatar\" data-username=\"' + escapeHTML(shareWith) + '\" title=\"' + message + ' ' + escapeHTML(shareWithDisplayName) + '\"></span>'\n\t\t\t\tvar hidden = '<span class=\"hidden-visually\">' + message + ' ' + escapeHTML(shareWithDisplayName) + '</span> '\n\t\t\t\treturn avatar + hidden\n\t\t\t}\n\n\t\t\tvar userName = parts[2]\n\t\t\tvar userDomain = parts[4]\n\t\t\tvar server = parts[5]\n\t\t\tvar protocol = parts[6]\n\t\t\tvar serverPath = parts[8] ? parts[7] : ''; // no trailing slash on root\n\n\t\t\tvar tooltip = message + ' ' + userName\n\t\t\tif (userDomain) {\n\t\t\t\ttooltip += '@' + userDomain\n\t\t\t}\n\t\t\tif (server) {\n\t\t\t\ttooltip += '@' + server.replace(protocol, '') + serverPath\n\t\t\t}\n\n\t\t\tvar html = '<span class=\"remoteAddress\" title=\"' + escapeHTML(tooltip) + '\">'\n\t\t\thtml += '<span class=\"username\">' + escapeHTML(userName) + '</span>'\n\t\t\tif (userDomain) {\n\t\t\t\thtml += '<span class=\"userDomain\">@' + escapeHTML(userDomain) + '</span>'\n\t\t\t}\n\t\t\thtml += '</span> '\n\t\t\treturn html\n\t\t},\n\t\t/**\n\t\t * Loop over all recipients in the list and format them using\n\t\t * all kind of fancy magic.\n\t\t *\n\t\t* @param {Object} recipients array of all the recipients\n\t\t* @returns {String[]} modified list of recipients\n\t\t*/\n\t\t_formatShareList: function(recipients) {\n\t\t\tvar _parent = this\n\t\t\trecipients = _.toArray(recipients)\n\t\t\trecipients.sort(function(a, b) {\n\t\t\t\treturn a.shareWithDisplayName.localeCompare(b.shareWithDisplayName)\n\t\t\t})\n\t\t\treturn $.map(recipients, function(recipient) {\n\t\t\t\treturn _parent._formatRemoteShare(recipient.shareWith, recipient.shareWithDisplayName, t('files_sharing', 'Shared with'))\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Marks/unmarks a given file as shared by changing its action icon\n\t\t * and folder icon.\n\t\t *\n\t\t* @param $tr file element to mark as shared\n\t\t* @param hasShares whether shares are available\n\t\t* @param hasLink whether link share is available\n\t\t*/\n\t\tmarkFileAsShared: function($tr, hasShares, hasLink) {\n\t\t\tvar action = $tr.find('.fileactions .action[data-action=\"Share\"]')\n\t\t\tvar type = $tr.data('type')\n\t\t\tvar icon = action.find('.icon')\n\t\t\tvar message, recipients, avatars\n\t\t\tvar ownerId = $tr.attr('data-share-owner-id')\n\t\t\tvar owner = $tr.attr('data-share-owner')\n\t\t\tvar mountType = $tr.attr('data-mounttype')\n\t\t\tvar shareFolderIcon\n\t\t\tvar iconClass = 'icon-shared'\n\t\t\taction.removeClass('shared-style')\n\t\t\t// update folder icon\n\t\t\tif (type === 'dir' && (hasShares || hasLink || ownerId)) {\n\t\t\t\tif (typeof mountType !== 'undefined' && mountType !== 'shared-root' && mountType !== 'shared') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-' + mountType)\n\t\t\t\t} else if (hasLink) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-public')\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t} else if (type === 'dir') {\n\t\t\t\tvar isEncrypted = $tr.attr('data-e2eencrypted')\n\t\t\t\t// FIXME: duplicate of FileList._createRow logic for external folder,\n\t\t\t\t// need to refactor the icon logic into a single code path eventually\n\t\t\t\tif (isEncrypted === 'true') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else if (mountType && mountType.indexOf('external') === 0) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-external')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir')\n\t\t\t\t\t// back to default\n\t\t\t\t\t$tr.removeAttr('data-icon')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t}\n\t\t\t// update share action text / icon\n\t\t\tif (hasShares || ownerId) {\n\t\t\t\trecipients = $tr.data('share-recipient-data')\n\t\t\t\taction.addClass('shared-style')\n\n\t\t\t\tavatars = '<span>' + t('files_sharing', 'Shared') + '</span>'\n\t\t\t\t// even if reshared, only show \"Shared by\"\n\t\t\t\tif (ownerId) {\n\t\t\t\t\tmessage = t('files_sharing', 'Shared by')\n\t\t\t\t\tavatars = this._formatRemoteShare(ownerId, owner, message)\n\t\t\t\t} else if (recipients) {\n\t\t\t\t\tavatars = this._formatShareList(recipients)\n\t\t\t\t}\n\t\t\t\taction.html(avatars).prepend(icon)\n\n\t\t\t\tif (ownerId || recipients) {\n\t\t\t\t\tvar avatarElement = action.find('.avatar')\n\t\t\t\t\tavatarElement.each(function() {\n\t\t\t\t\t\t$(this).avatar($(this).data('username'), 32)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taction.html('<span class=\"hidden-visually\">' + t('files_sharing', 'Shared') + '</span>').prepend(icon)\n\t\t\t}\n\t\t\tif (hasLink) {\n\t\t\t\ticonClass = 'icon-public'\n\t\t\t}\n\t\t\ticon.removeClass('icon-shared icon-public').addClass(iconClass)\n\t\t},\n\n\t\t/**\n\t\t * @param {Array} fileData\n\t\t * @returns {String}\n\t\t */\n\t\tgetSharePermissions: function(fileData) {\n\t\t\treturn fileData.sharePermissions\n\t\t}\n\t}\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.Sharing.Util)\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/sass-loader/dist/cjs.js!./sharebreadcrumb.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/sass-loader/dist/cjs.js!./sharebreadcrumb.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport './share'\nimport './sharebreadcrumbview'\nimport './style/sharebreadcrumb.scss'\nimport './collaborationresourceshandler.js'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nwindow.OCA.Sharing = OCA.Sharing\n","/**\n * @copyright Copyright (c) 2016 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\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nwindow.OCP.Collaboration.registerType('file', {\n\taction: () => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tOC.dialogs.filepicker(t('files_sharing', 'Link to a file'), function(f) {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(f).then((status, fileInfo) => {\n\t\t\t\t\tresolve(fileInfo.id)\n\t\t\t\t}).fail(() => {\n\t\t\t\t\treject(new Error('Cannot get fileinfo'))\n\t\t\t\t})\n\t\t\t}, false, null, false, OC.dialogs.FILEPICKER_TYPE_CHOOSE, '', { allowDirectoryChooser: true })\n\t\t})\n\t},\n\ttypeString: t('files_sharing', 'Link to a file'),\n\ttypeIconClass: 'icon-files-dark',\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, \"div.crumb span.icon-shared,div.crumb span.icon-public{display:inline-block;cursor:pointer;opacity:.2;margin-right:6px}div.crumb span.icon-shared.shared,div.crumb span.icon-public.shared{opacity:.7}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/style/sharebreadcrumb.scss\"],\"names\":[],\"mappings\":\"AAsBA,sDAEC,oBAAA,CACA,cAAA,CACA,UAAA,CACA,gBAAA,CAGD,oEAEC,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\\n *\\n * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\ndiv.crumb span.icon-shared,\\ndiv.crumb span.icon-public {\\n\\tdisplay: inline-block;\\n\\tcursor: pointer;\\n\\topacity: 0.2;\\n\\tmargin-right: 6px;\\n}\\n\\ndiv.crumb span.icon-shared.shared,\\ndiv.crumb span.icon-public.shared {\\n\\topacity: 0.7;\\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","// 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 = 6200;","__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\t6200: 0,\n\t5438: 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__(5972); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","BreadCrumbView","_","extend","OC","Files","Client","PROPERTY_SHARE_TYPES","NS_OWNCLOUD","PROPERTY_OWNER_ID","PROPERTY_OWNER_DISPLAY_NAME","OCA","Sharing","Util","_REMOTE_OWNER_REGEXP","RegExp","attach","fileList","getCapabilities","files_sharing","api_enabled","id","fileActions","oldCreateRow","_createRow","fileData","tr","apply","this","arguments","sharePermissions","getSharePermissions","permissions","actions","all","Comment","Details","Goto","isFunction","canDownload","Download","PERMISSION_UPDATE","MoveCopy","attr","JSON","stringify","shareAttributes","shareOwner","shareOwnerId","mountType","recipientData","isEmpty","shareTypes","join","oldElementToFile","elementToFile","$el","fileInfo","parse","undefined","split","expirationTimestamp","parseInt","shares","push","expiration","oldGetWebdavProperties","_getWebdavProperties","props","filesClient","addFileInfoParser","response","data","propStat","properties","permissionsProp","PROPERTY_PERMISSIONS","indexOf","shareTypesProp","chain","filter","xmlvalue","namespaceURI","nodeName","map","textContent","text","value","on","ev","$files","each","file","$tr","$","shareTypesStr","hasLink","hasShares","shareTypeStr","shareType","ShareTypes","_updateFileActionIcon","sharesLoaded","registerAction","name","displayName","context","$file","t","altText","mime","order","PERMISSION_ALL","iconClass","fileName","icon","generateUrl","type","FileActions","TYPE_INLINE","actionHandler","_detailsView","isNaN","showDetailsView","render","actionSpec","isDefault","PERMISSION_SHARE","_defaultRenderAction","call","breadCrumbSharingDetailView","ShareBreadCrumbView","registerBreadCrumbDetailView","_updateFileListDataAttributes","shareModel","pluck","get","length","mapObject","share","shareWith","share_with","shareWithDisplayName","share_with_displayname","removeAttr","hasUserShares","hasLinkShares","_markFileAsShared","message","recipients","avatars","shareFolderIcon","action","find","ownerId","owner","removeClass","isEncrypted","MimeType","getIconUrl","css","addClass","_formatRemoteShare","_formatShareList","html","prepend","avatar","parts","exec","escapeHTML","userName","userDomain","server","protocol","serverPath","tooltip","replace","_parent","toArray","sort","a","b","localeCompare","recipient","markFileAsShared","Plugins","register","Backbone","View","tagName","events","click","_dirInfo","dirInfo","path","hide","isShared","show","delegateEvents","_onClick","e","preventDefault","stopPropagation","fileInfoModel","FileInfoModel","self","attributes","Sidebar","open","setActiveTab","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","__webpack_nonce__","btoa","requestToken","window","OCP","Collaboration","registerType","Promise","resolve","reject","dialogs","filepicker","f","getClient","getFileInfo","then","status","fail","Error","FILEPICKER_TYPE_CHOOSE","allowDirectoryChooser","typeString","typeIconClass","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","document","baseURI","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-additionalScripts.js?v=3535d155a6947f8e9d18","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/sharebreadcrumbview.js","webpack:///nextcloud/apps/files_sharing/src/share.js","webpack://nextcloud/./apps/files_sharing/src/style/sharebreadcrumb.scss?a9a3","webpack:///nextcloud/apps/files_sharing/src/additionalScripts.js","webpack:///nextcloud/apps/files_sharing/src/collaborationresourceshandler.js","webpack:///nextcloud/apps/files_sharing/src/style/sharebreadcrumb.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\n(function() {\n\t'use strict'\n\n\tconst BreadCrumbView = OC.Backbone.View.extend({\n\t\ttagName: 'span',\n\t\tevents: {\n\t\t\tclick: '_onClick',\n\t\t},\n\t\t_dirInfo: undefined,\n\n\t\trender(data) {\n\t\t\tthis._dirInfo = data.dirInfo || null\n\n\t\t\tif (this._dirInfo !== null && (this._dirInfo.path !== '/' || this._dirInfo.name !== '')) {\n\t\t\t\tconst isShared = data.dirInfo && data.dirInfo.shareTypes && data.dirInfo.shareTypes.length > 0\n\t\t\t\tthis.$el.removeClass('shared icon-public icon-shared')\n\t\t\t\tif (isShared) {\n\t\t\t\t\tthis.$el.addClass('shared')\n\t\t\t\t\tif (data.dirInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_LINK) !== -1) {\n\t\t\t\t\t\tthis.$el.addClass('icon-public')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$el.addClass('icon-shared')\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$el.addClass('icon-shared')\n\t\t\t\t}\n\t\t\t\tthis.$el.show()\n\t\t\t\tthis.delegateEvents()\n\t\t\t} else {\n\t\t\t\tthis.$el.removeClass('shared icon-public icon-shared')\n\t\t\t\tthis.$el.hide()\n\t\t\t}\n\n\t\t\treturn this\n\t\t},\n\t\t_onClick(e) {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\n\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(this._dirInfo)\n\t\t\tconst self = this\n\t\t\tfileInfoModel.on('change', function() {\n\t\t\t\tself.render({\n\t\t\t\t\tdirInfo: self._dirInfo,\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tconst path = fileInfoModel.attributes.path + '/' + fileInfoModel.attributes.name\n\t\t\tOCA.Files.Sidebar.open(path)\n\t\t\tOCA.Files.Sidebar.setActiveTab('sharing')\n\t\t},\n\t})\n\n\tOCA.Sharing.ShareBreadCrumbView = BreadCrumbView\n})()\n","/**\n * Copyright (c) 2014\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Maxence Lange <maxence@nextcloud.com>\n * @author Michael Jobst <mjobst+github@tecratech.de>\n * @author Michael Jobst <mjobst@necls.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Samuel <faust64@gmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport escapeHTML from 'escape-html'\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport { getCapabilities } from '@nextcloud/capabilities'\n\n(function() {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_SHARE_TYPES:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}share-types',\n\t\tPROPERTY_OWNER_ID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}owner-id',\n\t\tPROPERTY_OWNER_DISPLAY_NAME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}owner-display-name'\n\t})\n\n\tif (!OCA.Sharing) {\n\t\tOCA.Sharing = {}\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.Sharing.Util = {\n\n\t\t/**\n\t\t * Regular expression for splitting parts of remote share owners:\n\t\t * \"user@example.com/\"\n\t\t * \"user@example.com/path/to/owncloud\"\n\t\t * \"user@anotherexample.com@example.com/path/to/owncloud\n\t\t */\n\t\t_REMOTE_OWNER_REGEXP: new RegExp('^(([^@]*)@(([^@^/\\\\s]*)@)?)((https://)?[^[\\\\s/]*)([/](.*))?$'),\n\n\t\t/**\n\t\t * Initialize the sharing plugin.\n\t\t *\n\t\t * Registers the \"Share\" file action and adds additional\n\t\t * DOM attributes for the sharing file info.\n\t\t *\n\t\t * @param {OCA.Files.FileList} fileList file list to be extended\n\t\t */\n\t\tattach: function(fileList) {\n\t\t\t// core sharing is disabled/not loaded\n\t\t\tif (!getCapabilities().files_sharing?.api_enabled) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (fileList.id === 'trashbin' || fileList.id === 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvar fileActions = fileList.fileActions\n\t\t\tvar oldCreateRow = fileList._createRow\n\t\t\tfileList._createRow = function(fileData) {\n\n\t\t\t\tvar tr = oldCreateRow.apply(this, arguments)\n\t\t\t\tvar sharePermissions = OCA.Sharing.Util.getSharePermissions(fileData)\n\n\t\t\t\tif (fileData.permissions === 0) {\n\t\t\t\t\t// no permission, disabling sidebar\n\t\t\t\t\tdelete fileActions.actions.all.Comment\n\t\t\t\t\tdelete fileActions.actions.all.Details\n\t\t\t\t\tdelete fileActions.actions.all.Goto\n\t\t\t\t}\n\t\t\t\tif (_.isFunction(fileData.canDownload) && !fileData.canDownload()) {\n\t\t\t\t\tdelete fileActions.actions.all.Download\n\t\t\t\t\tif (fileData.permissions & OC.PERMISSION_UPDATE === 0) {\n\t\t\t\t\t\t// neither move nor copy is allowed, remove the action completely\n\t\t\t\t\t\tdelete fileActions.actions.all.MoveCopy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttr.attr('data-share-permissions', sharePermissions)\n\t\t\t\ttr.attr('data-share-attributes', JSON.stringify(fileData.shareAttributes))\n\t\t\t\tif (fileData.shareOwner) {\n\t\t\t\t\ttr.attr('data-share-owner', fileData.shareOwner)\n\t\t\t\t\ttr.attr('data-share-owner-id', fileData.shareOwnerId)\n\t\t\t\t\t// user should always be able to rename a mount point\n\t\t\t\t\tif (fileData.mountType === 'shared-root') {\n\t\t\t\t\t\ttr.attr('data-permissions', fileData.permissions | OC.PERMISSION_UPDATE)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (fileData.recipientData && !_.isEmpty(fileData.recipientData)) {\n\t\t\t\t\ttr.attr('data-share-recipient-data', JSON.stringify(fileData.recipientData))\n\t\t\t\t}\n\t\t\t\tif (fileData.shareTypes) {\n\t\t\t\t\ttr.attr('data-share-types', fileData.shareTypes.join(','))\n\t\t\t\t}\n\t\t\t\treturn tr\n\t\t\t}\n\n\t\t\tvar oldElementToFile = fileList.elementToFile\n\t\t\tfileList.elementToFile = function($el) {\n\t\t\t\tvar fileInfo = oldElementToFile.apply(this, arguments)\n\t\t\t\tfileInfo.shareAttributes = JSON.parse($el.attr('data-share-attributes') || '[]')\n\t\t\t\tfileInfo.sharePermissions = $el.attr('data-share-permissions') || undefined\n\t\t\t\tfileInfo.shareOwner = $el.attr('data-share-owner') || undefined\n\t\t\t\tfileInfo.shareOwnerId = $el.attr('data-share-owner-id') || undefined\n\n\t\t\t\tif ($el.attr('data-share-types')) {\n\t\t\t\t\tfileInfo.shareTypes = $el.attr('data-share-types').split(',')\n\t\t\t\t}\n\n\t\t\t\tif ($el.attr('data-expiration')) {\n\t\t\t\t\tvar expirationTimestamp = parseInt($el.attr('data-expiration'))\n\t\t\t\t\tfileInfo.shares = []\n\t\t\t\t\tfileInfo.shares.push({ expiration: expirationTimestamp })\n\t\t\t\t}\n\n\t\t\t\treturn fileInfo\n\t\t\t}\n\n\t\t\tvar oldGetWebdavProperties = fileList._getWebdavProperties\n\t\t\tfileList._getWebdavProperties = function() {\n\t\t\t\tvar props = oldGetWebdavProperties.apply(this, arguments)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_OWNER_ID)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_SHARE_TYPES)\n\t\t\t\treturn props\n\t\t\t}\n\n\t\t\tfileList.filesClient.addFileInfoParser(function(response) {\n\t\t\t\tvar data = {}\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar permissionsProp = props[OC.Files.Client.PROPERTY_PERMISSIONS]\n\n\t\t\t\tif (permissionsProp && permissionsProp.indexOf('S') >= 0) {\n\t\t\t\t\tdata.shareOwner = props[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME]\n\t\t\t\t\tdata.shareOwnerId = props[OC.Files.Client.PROPERTY_OWNER_ID]\n\t\t\t\t}\n\n\t\t\t\tvar shareTypesProp = props[OC.Files.Client.PROPERTY_SHARE_TYPES]\n\t\t\t\tif (shareTypesProp) {\n\t\t\t\t\tdata.shareTypes = _.chain(shareTypesProp).filter(function(xmlvalue) {\n\t\t\t\t\t\treturn (xmlvalue.namespaceURI === OC.Files.Client.NS_OWNCLOUD && xmlvalue.nodeName.split(':')[1] === 'share-type')\n\t\t\t\t\t}).map(function(xmlvalue) {\n\t\t\t\t\t\treturn parseInt(xmlvalue.textContent || xmlvalue.text, 10)\n\t\t\t\t\t}).value()\n\t\t\t\t}\n\n\t\t\t\treturn data\n\t\t\t})\n\n\t\t\t// use delegate to catch the case with multiple file lists\n\t\t\tfileList.$el.on('fileActionsReady', function(ev) {\n\t\t\t\tvar $files = ev.$files\n\n\t\t\t\t_.each($files, function(file) {\n\t\t\t\t\tvar $tr = $(file)\n\t\t\t\t\tvar shareTypesStr = $tr.attr('data-share-types') || ''\n\t\t\t\t\tvar shareOwner = $tr.attr('data-share-owner')\n\t\t\t\t\tif (shareTypesStr || shareOwner) {\n\t\t\t\t\t\tvar hasLink = false\n\t\t\t\t\t\tvar hasShares = false\n\t\t\t\t\t\t_.each(shareTypesStr.split(',') || [], function(shareTypeStr) {\n\t\t\t\t\t\t\tlet shareType = parseInt(shareTypeStr, 10)\n\t\t\t\t\t\t\tif (shareType === ShareTypes.SHARE_TYPE_LINK) {\n\t\t\t\t\t\t\t\thasLink = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\t\t\thasLink = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_USER) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_GROUP) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_REMOTE) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_ROOM) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_DECK) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_SCIENCEMESH) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\tOCA.Sharing.Util._updateFileActionIcon($tr, hasShares, hasLink)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tfileList.$el.on('changeDirectory', function() {\n\t\t\t\tOCA.Sharing.sharesLoaded = false\n\t\t\t})\n\n\t\t\tfileActions.registerAction({\n\t\t\t\tname: 'Share',\n\t\t\t\tdisplayName: function(context) {\n\t\t\t\t\tif (context && context.$file) {\n\t\t\t\t\t\tvar shareType = parseInt(context.$file.data('share-types'), 10)\n\t\t\t\t\t\tvar shareOwner = context.$file.data('share-owner-id')\n\t\t\t\t\t\tif (shareType >= 0 || shareOwner) {\n\t\t\t\t\t\t\treturn t('files_sharing', 'Shared')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share')\n\t\t\t\t},\n\t\t\t\taltText: t('files_sharing', 'Share'),\n\t\t\t\tmime: 'all',\n\t\t\t\torder: -150,\n\t\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\t\ticonClass: function(fileName, context) {\n\t\t\t\t\tvar shareType = parseInt(context.$file.data('share-types'), 10)\n\t\t\t\t\tif (shareType === ShareTypes.SHARE_TYPE_EMAIL\n\t\t\t\t\t\t|| shareType === ShareTypes.SHARE_TYPE_LINK) {\n\t\t\t\t\t\treturn 'icon-public'\n\t\t\t\t\t}\n\t\t\t\t\treturn 'icon-shared'\n\t\t\t\t},\n\t\t\t\ticon: function(fileName, context) {\n\t\t\t\t\tvar shareOwner = context.$file.data('share-owner-id')\n\t\t\t\t\tif (shareOwner) {\n\t\t\t\t\t\treturn OC.generateUrl(`/avatar/${shareOwner}/32`)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\t\tactionHandler: function(fileName, context) {\n\t\t\t\t\t// details view disabled in some share lists\n\t\t\t\t\tif (!fileList._detailsView) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t// do not open sidebar if permission is set and equal to 0\n\t\t\t\t\tvar permissions = parseInt(context.$file.data('share-permissions'), 10)\n\t\t\t\t\tif (isNaN(permissions) || permissions > 0) {\n\t\t\t\t\t\tfileList.showDetailsView(fileName, 'sharing')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trender: function(actionSpec, isDefault, context) {\n\t\t\t\t\tvar permissions = parseInt(context.$file.data('permissions'), 10)\n\t\t\t\t\t// if no share permissions but share owner exists, still show the link\n\t\t\t\t\tif ((permissions & OC.PERMISSION_SHARE) !== 0 || context.$file.attr('data-share-owner')) {\n\t\t\t\t\t\treturn fileActions._defaultRenderAction.call(fileActions, actionSpec, isDefault, context)\n\t\t\t\t\t}\n\t\t\t\t\t// don't render anything\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// register share breadcrumbs component\n\t\t\tvar breadCrumbSharingDetailView = new OCA.Sharing.ShareBreadCrumbView()\n\t\t\tfileList.registerBreadCrumbDetailView(breadCrumbSharingDetailView)\n\t\t},\n\n\t\t/**\n\t\t * Update file list data attributes\n\t\t */\n\t\t_updateFileListDataAttributes: function(fileList, $tr, shareModel) {\n\t\t\t// files app current cannot show recipients on load, so we don't update the\n\t\t\t// icon when changed for consistency\n\t\t\tif (fileList.id === 'files') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvar recipients = _.pluck(shareModel.get('shares'), 'share_with_displayname')\n\t\t\t// note: we only update the data attribute because updateIcon()\n\t\t\tif (recipients.length) {\n\t\t\t\tvar recipientData = _.mapObject(shareModel.get('shares'), function(share) {\n\t\t\t\t\treturn { shareWith: share.share_with, shareWithDisplayName: share.share_with_displayname }\n\t\t\t\t})\n\t\t\t\t$tr.attr('data-share-recipient-data', JSON.stringify(recipientData))\n\t\t\t} else {\n\t\t\t\t$tr.removeAttr('data-share-recipient-data')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the file action share icon for the given file\n\t\t *\n\t\t * @param $tr file element of the file to update\n\t\t * @param {boolean} hasUserShares true if a user share exists\n\t\t * @param {boolean} hasLinkShares true if a link share exists\n\t\t *\n\t\t * @returns {boolean} true if the icon was set, false otherwise\n\t\t */\n\t\t_updateFileActionIcon: function($tr, hasUserShares, hasLinkShares) {\n\t\t\t// if the statuses are loaded already, use them for the icon\n\t\t\t// (needed when scrolling to the next page)\n\t\t\tif (hasUserShares || hasLinkShares || $tr.attr('data-share-recipient-data') || $tr.attr('data-share-owner')) {\n\t\t\t\tOCA.Sharing.Util._markFileAsShared($tr, true, hasLinkShares)\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\t/**\n\t\t * Marks/unmarks a given file as shared by changing its action icon\n\t\t * and folder icon.\n\t\t *\n\t\t * @param $tr file element to mark as shared\n\t\t * @param hasShares whether shares are available\n\t\t * @param hasLink whether link share is available\n\t\t */\n\t\t_markFileAsShared: function($tr, hasShares, hasLink) {\n\t\t\tvar action = $tr.find('.fileactions .action[data-action=\"Share\"]')\n\t\t\tvar type = $tr.data('type')\n\t\t\tvar icon = action.find('.icon')\n\t\t\tvar message, recipients, avatars\n\t\t\tvar ownerId = $tr.attr('data-share-owner-id')\n\t\t\tvar owner = $tr.attr('data-share-owner')\n\t\t\tvar mountType = $tr.attr('data-mounttype')\n\t\t\tvar shareFolderIcon\n\t\t\tvar iconClass = 'icon-shared'\n\t\t\taction.removeClass('shared-style')\n\t\t\t// update folder icon\n\t\t\tvar isEncrypted = $tr.attr('data-e2eencrypted')\n\t\t\tif (type === 'dir' && isEncrypted === 'true') {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t} else if (type === 'dir' && (hasShares || hasLink || ownerId)) {\n\t\t\t\tif (typeof mountType !== 'undefined' && mountType !== 'shared-root' && mountType !== 'shared') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-' + mountType)\n\t\t\t\t} else if (hasLink) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-public')\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t} else if (type === 'dir') {\n\t\t\t\t// FIXME: duplicate of FileList._createRow logic for external folder,\n\t\t\t\t// need to refactor the icon logic into a single code path eventually\n\t\t\t\tif (mountType && mountType.indexOf('external') === 0) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-external')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir')\n\t\t\t\t\t// back to default\n\t\t\t\t\t$tr.removeAttr('data-icon')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t}\n\t\t\t// update share action text / icon\n\t\t\tif (hasShares || ownerId) {\n\t\t\t\trecipients = $tr.data('share-recipient-data')\n\t\t\t\taction.addClass('shared-style')\n\n\t\t\t\tavatars = '<span>' + t('files_sharing', 'Shared') + '</span>'\n\t\t\t\t// even if reshared, only show \"Shared by\"\n\t\t\t\tif (ownerId) {\n\t\t\t\t\tmessage = t('files_sharing', 'Shared by')\n\t\t\t\t\tavatars = OCA.Sharing.Util._formatRemoteShare(ownerId, owner, message)\n\t\t\t\t} else if (recipients) {\n\t\t\t\t\tavatars = OCA.Sharing.Util._formatShareList(recipients)\n\t\t\t\t}\n\t\t\t\taction.html(avatars).prepend(icon)\n\n\t\t\t\tif (ownerId || recipients) {\n\t\t\t\t\tvar avatarElement = action.find('.avatar')\n\t\t\t\t\tavatarElement.each(function() {\n\t\t\t\t\t\t$(this).avatar($(this).data('username'), 32)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taction.html('<span class=\"hidden-visually\">' + t('files_sharing', 'Shared') + '</span>').prepend(icon)\n\t\t\t}\n\t\t\tif (hasLink) {\n\t\t\t\ticonClass = 'icon-public'\n\t\t\t}\n\t\t\ticon.removeClass('icon-shared icon-public').addClass(iconClass)\n\t\t},\n\t\t/**\n\t\t * Format a remote address\n\t\t *\n\t\t * @param {String} shareWith userid, full remote share, or whatever\n\t\t * @param {String} shareWithDisplayName\n\t\t * @param {String} message\n\t\t * @returns {String} HTML code to display\n\t\t */\n\t\t_formatRemoteShare: function(shareWith, shareWithDisplayName, message) {\n\t\t\tvar parts = OCA.Sharing.Util._REMOTE_OWNER_REGEXP.exec(shareWith)\n\t\t\tif (!parts || !parts[7]) {\n\t\t\t\t// display avatar of the user\n\t\t\t\tvar avatar = '<span class=\"avatar\" data-username=\"' + escapeHTML(shareWith) + '\" title=\"' + message + ' ' + escapeHTML(shareWithDisplayName) + '\"></span>'\n\t\t\t\tvar hidden = '<span class=\"hidden-visually\">' + message + ' ' + escapeHTML(shareWithDisplayName) + '</span> '\n\t\t\t\treturn avatar + hidden\n\t\t\t}\n\n\t\t\tvar userName = parts[2]\n\t\t\tvar userDomain = parts[4]\n\t\t\tvar server = parts[5]\n\t\t\tvar protocol = parts[6]\n\t\t\tvar serverPath = parts[8] ? parts[7] : ''; // no trailing slash on root\n\n\t\t\tvar tooltip = message + ' ' + userName\n\t\t\tif (userDomain) {\n\t\t\t\ttooltip += '@' + userDomain\n\t\t\t}\n\t\t\tif (server) {\n\t\t\t\ttooltip += '@' + server.replace(protocol, '') + serverPath\n\t\t\t}\n\n\t\t\tvar html = '<span class=\"remoteAddress\" title=\"' + escapeHTML(tooltip) + '\">'\n\t\t\thtml += '<span class=\"username\">' + escapeHTML(userName) + '</span>'\n\t\t\tif (userDomain) {\n\t\t\t\thtml += '<span class=\"userDomain\">@' + escapeHTML(userDomain) + '</span>'\n\t\t\t}\n\t\t\thtml += '</span> '\n\t\t\treturn html\n\t\t},\n\t\t/**\n\t\t * Loop over all recipients in the list and format them using\n\t\t * all kind of fancy magic.\n\t\t *\n\t\t* @param {Object} recipients array of all the recipients\n\t\t* @returns {String[]} modified list of recipients\n\t\t*/\n\t\t_formatShareList: function(recipients) {\n\t\t\tvar _parent = this\n\t\t\trecipients = _.toArray(recipients)\n\t\t\trecipients.sort(function(a, b) {\n\t\t\t\treturn a.shareWithDisplayName.localeCompare(b.shareWithDisplayName)\n\t\t\t})\n\t\t\treturn $.map(recipients, function(recipient) {\n\t\t\t\treturn _parent._formatRemoteShare(recipient.shareWith, recipient.shareWithDisplayName, t('files_sharing', 'Shared with'))\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Marks/unmarks a given file as shared by changing its action icon\n\t\t * and folder icon.\n\t\t *\n\t\t* @param $tr file element to mark as shared\n\t\t* @param hasShares whether shares are available\n\t\t* @param hasLink whether link share is available\n\t\t*/\n\t\tmarkFileAsShared: function($tr, hasShares, hasLink) {\n\t\t\tvar action = $tr.find('.fileactions .action[data-action=\"Share\"]')\n\t\t\tvar type = $tr.data('type')\n\t\t\tvar icon = action.find('.icon')\n\t\t\tvar message, recipients, avatars\n\t\t\tvar ownerId = $tr.attr('data-share-owner-id')\n\t\t\tvar owner = $tr.attr('data-share-owner')\n\t\t\tvar mountType = $tr.attr('data-mounttype')\n\t\t\tvar shareFolderIcon\n\t\t\tvar iconClass = 'icon-shared'\n\t\t\taction.removeClass('shared-style')\n\t\t\t// update folder icon\n\t\t\tif (type === 'dir' && (hasShares || hasLink || ownerId)) {\n\t\t\t\tif (typeof mountType !== 'undefined' && mountType !== 'shared-root' && mountType !== 'shared') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-' + mountType)\n\t\t\t\t} else if (hasLink) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-public')\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t} else if (type === 'dir') {\n\t\t\t\tvar isEncrypted = $tr.attr('data-e2eencrypted')\n\t\t\t\t// FIXME: duplicate of FileList._createRow logic for external folder,\n\t\t\t\t// need to refactor the icon logic into a single code path eventually\n\t\t\t\tif (isEncrypted === 'true') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else if (mountType && mountType.indexOf('external') === 0) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-external')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir')\n\t\t\t\t\t// back to default\n\t\t\t\t\t$tr.removeAttr('data-icon')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t}\n\t\t\t// update share action text / icon\n\t\t\tif (hasShares || ownerId) {\n\t\t\t\trecipients = $tr.data('share-recipient-data')\n\t\t\t\taction.addClass('shared-style')\n\n\t\t\t\tavatars = '<span>' + t('files_sharing', 'Shared') + '</span>'\n\t\t\t\t// even if reshared, only show \"Shared by\"\n\t\t\t\tif (ownerId) {\n\t\t\t\t\tmessage = t('files_sharing', 'Shared by')\n\t\t\t\t\tavatars = this._formatRemoteShare(ownerId, owner, message)\n\t\t\t\t} else if (recipients) {\n\t\t\t\t\tavatars = this._formatShareList(recipients)\n\t\t\t\t}\n\t\t\t\taction.html(avatars).prepend(icon)\n\n\t\t\t\tif (ownerId || recipients) {\n\t\t\t\t\tvar avatarElement = action.find('.avatar')\n\t\t\t\t\tavatarElement.each(function() {\n\t\t\t\t\t\t$(this).avatar($(this).data('username'), 32)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taction.html('<span class=\"hidden-visually\">' + t('files_sharing', 'Shared') + '</span>').prepend(icon)\n\t\t\t}\n\t\t\tif (hasLink) {\n\t\t\t\ticonClass = 'icon-public'\n\t\t\t}\n\t\t\ticon.removeClass('icon-shared icon-public').addClass(iconClass)\n\t\t},\n\n\t\t/**\n\t\t * @param {Array} fileData\n\t\t * @returns {String}\n\t\t */\n\t\tgetSharePermissions: function(fileData) {\n\t\t\treturn fileData.sharePermissions\n\t\t}\n\t}\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.Sharing.Util)\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/sass-loader/dist/cjs.js!./sharebreadcrumb.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/sass-loader/dist/cjs.js!./sharebreadcrumb.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport './share'\nimport './sharebreadcrumbview'\nimport './style/sharebreadcrumb.scss'\nimport './collaborationresourceshandler.js'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nwindow.OCA.Sharing = OCA.Sharing\n","/**\n * @copyright Copyright (c) 2016 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\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nwindow.OCP.Collaboration.registerType('file', {\n\taction: () => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tOC.dialogs.filepicker(t('files_sharing', 'Link to a file'), function(f) {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(f).then((status, fileInfo) => {\n\t\t\t\t\tresolve(fileInfo.id)\n\t\t\t\t}).fail(() => {\n\t\t\t\t\treject(new Error('Cannot get fileinfo'))\n\t\t\t\t})\n\t\t\t}, false, null, false, OC.dialogs.FILEPICKER_TYPE_CHOOSE, '', { allowDirectoryChooser: true })\n\t\t})\n\t},\n\ttypeString: t('files_sharing', 'Link to a file'),\n\ttypeIconClass: 'icon-files-dark',\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, \"div.crumb span.icon-shared,div.crumb span.icon-public{display:inline-block;cursor:pointer;opacity:.2;margin-right:6px}div.crumb span.icon-shared.shared,div.crumb span.icon-public.shared{opacity:.7}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/style/sharebreadcrumb.scss\"],\"names\":[],\"mappings\":\"AAsBA,sDAEC,oBAAA,CACA,cAAA,CACA,UAAA,CACA,gBAAA,CAGD,oEAEC,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\\n *\\n * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\ndiv.crumb span.icon-shared,\\ndiv.crumb span.icon-public {\\n\\tdisplay: inline-block;\\n\\tcursor: pointer;\\n\\topacity: 0.2;\\n\\tmargin-right: 6px;\\n}\\n\\ndiv.crumb span.icon-shared.shared,\\ndiv.crumb span.icon-public.shared {\\n\\topacity: 0.7;\\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","// 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 = 6200;","__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\t6200: 0,\n\t5438: 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__(5972); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","BreadCrumbView","_","extend","OC","Files","Client","PROPERTY_SHARE_TYPES","NS_OWNCLOUD","PROPERTY_OWNER_ID","PROPERTY_OWNER_DISPLAY_NAME","OCA","Sharing","Util","_REMOTE_OWNER_REGEXP","RegExp","attach","fileList","getCapabilities","files_sharing","api_enabled","id","fileActions","oldCreateRow","_createRow","fileData","tr","apply","this","arguments","sharePermissions","getSharePermissions","permissions","actions","all","Comment","Details","Goto","isFunction","canDownload","Download","PERMISSION_UPDATE","MoveCopy","attr","JSON","stringify","shareAttributes","shareOwner","shareOwnerId","mountType","recipientData","isEmpty","shareTypes","join","oldElementToFile","elementToFile","$el","fileInfo","parse","undefined","split","expirationTimestamp","parseInt","shares","push","expiration","oldGetWebdavProperties","_getWebdavProperties","props","filesClient","addFileInfoParser","response","data","propStat","properties","permissionsProp","PROPERTY_PERMISSIONS","indexOf","shareTypesProp","chain","filter","xmlvalue","namespaceURI","nodeName","map","textContent","text","value","on","ev","$files","each","file","$tr","$","shareTypesStr","hasLink","hasShares","shareTypeStr","shareType","ShareTypes","_updateFileActionIcon","sharesLoaded","registerAction","name","displayName","context","$file","t","altText","mime","order","PERMISSION_ALL","iconClass","fileName","icon","generateUrl","type","FileActions","TYPE_INLINE","actionHandler","_detailsView","isNaN","showDetailsView","render","actionSpec","isDefault","PERMISSION_SHARE","_defaultRenderAction","call","breadCrumbSharingDetailView","ShareBreadCrumbView","registerBreadCrumbDetailView","_updateFileListDataAttributes","shareModel","pluck","get","length","mapObject","share","shareWith","share_with","shareWithDisplayName","share_with_displayname","removeAttr","hasUserShares","hasLinkShares","_markFileAsShared","message","recipients","avatars","shareFolderIcon","action","find","ownerId","owner","removeClass","isEncrypted","MimeType","getIconUrl","css","addClass","_formatRemoteShare","_formatShareList","html","prepend","avatar","parts","exec","escapeHTML","userName","userDomain","server","protocol","serverPath","tooltip","replace","_parent","toArray","sort","a","b","localeCompare","recipient","markFileAsShared","Plugins","register","Backbone","View","tagName","events","click","_dirInfo","dirInfo","path","hide","isShared","show","delegateEvents","_onClick","e","preventDefault","stopPropagation","fileInfoModel","FileInfoModel","self","attributes","Sidebar","open","setActiveTab","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","__webpack_nonce__","btoa","requestToken","window","OCP","Collaboration","registerType","Promise","resolve","reject","dialogs","filepicker","f","getClient","getFileInfo","then","status","fail","Error","FILEPICKER_TYPE_CHOOSE","allowDirectoryChooser","typeString","typeIconClass","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","document","baseURI","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/files_sharing-files_sharing_tab.js b/dist/files_sharing-files_sharing_tab.js
index 92123069d22..cbbf083a903 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 e,n={75104:function(e,n,r){var i=r(20144),a=r(31352),s=r(1794),o=r(79753),c=r(75925),l=r.n(c),u=r(4820),h=r(79954);function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,i=function(e,t){if("object"!==d(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==d(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key,"string"),"symbol"===d(i)?i:String(i)),r)}var i}var p=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,n;return t=e,(n=[{key:"isPublicUploadEnabled",get:function(){return document.getElementsByClassName("files-filestable")[0]&&"yes"===document.getElementsByClassName("files-filestable")[0].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:"defaultExpirationDate",get:function(){return this.isDefaultExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}},{key:"defaultInternalExpirationDate",get:function(){return this.isDefaultInternalExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}},{key:"defaultRemoteExpirationDateString",get:function(){return this.isDefaultRemoteExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}},{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:"isDefaultRemoteExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){var e,t,n,r=OC.getCapabilities();return void 0!==(null==r||null===(e=r.files_sharing)||void 0===e?void 0:e.sharebymail)&&!0===(null==r||null===(t=r.files_sharing)||void 0===t||null===(n=t.public)||void 0===n?void 0:n.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 e,t;return!0===(null===(e=OC.getCapabilities().files_sharing)||void 0===e||null===(t=e.sharee)||void 0===t?void 0:t.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 e=OC.getCapabilities();return e.password_policy?e.password_policy:{}}}])&&f(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),g=r(41922),m=r(25108);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,_(r.key),r)}}function _(e){var t=function(e,t){if("object"!==v(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==v(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===v(t)?t:String(t)}var A=function(){function e(t){var n,r,i,a;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r=this,a=void 0,(i=_(i="_share"))in r?Object.defineProperty(r,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[i]=a,t.ocs&&t.ocs.data&&t.ocs.data[0]&&(t=t.ocs.data[0]),t.hide_download=!!t.hide_download,t.mail_send=!!t.mail_send,t.attributes)try{t.attributes=JSON.parse(t.attributes)}catch(e){m.warn('Could not parse share attributes returned by server: "'+t.attributes+'"')}t.attributes=null!==(n=t.attributes)&&void 0!==n?n:[],this._share=t}var t,n;return t=e,(n=[{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(e){this._share.permissions=e}},{key:"attributes",get:function(){return this._share.attributes}},{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(e){this._share.expiration=e}},{key:"token",get:function(){return this._share.token}},{key:"note",get:function(){return this._share.note},set:function(e){this._share.note=e}},{key:"label",get:function(){return this._share.label},set:function(e){this._share.label=e}},{key:"mailSend",get:function(){return!0===this._share.mail_send}},{key:"hideDownload",get:function(){return!0===this._share.hide_download},set:function(e){this._share.hide_download=!0===e}},{key:"password",get:function(){return this._share.password},set:function(e){this._share.password=e}},{key:"passwordExpirationTime",get:function(){return this._share.password_expiration_time},set:function(e){this._share.password_expiration_time=e}},{key:"sendPasswordByTalk",get:function(){return this._share.send_password_by_talk},set:function(e){this._share.send_password_by_talk=e}},{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:"hasDownloadPermission",get:function(){for(var e in this._share.attributes){var t=this._share.attributes[e];if("permissions"===t.scope&&"download"===t.key)return t.enabled}return!0},set:function(e){this.setAttribute("permissions","download",!!e)}},{key:"setAttribute",value:function(e,t,n){var r={scope:e,key:t,enabled:n};for(var i in this._share.attributes){var a=this._share.attributes[i];if(a.scope===r.scope&&a.key===r.key)return void(this._share.attributes[i]=r)}this._share.attributes.push(r)}},{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}}])&&y(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),b={data:function(){return{SHARE_TYPES:g.D}}},w=r(64024),S=r(76212),E=r.n(S),C=r(12945),x=r.n(C),k={name:"SharingEntrySimple",components:{NcActions:x()},props:{title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue:function(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}},P=r(93379),D=r.n(P),T=r(7795),R=r.n(T),O=r(90569),N=r.n(O),I=r(3565),L=r.n(I),H=r(19216),U=r.n(H),Y=r(44589),j=r.n(Y),B=r(3335),M={};M.styleTagTransform=j(),M.setAttributes=L(),M.insert=N().bind(null,"head"),M.domAPI=R(),M.insertStyleElement=U(),D()(B.Z,M),B.Z&&B.Z.locals&&B.Z.locals;var W=r(51900),F=(0,W.Z)(k,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[e._t("avatar"),e._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title"},[e._v(e._s(e.title))]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e()]),e._v(" "),e.$slots.default?t("NcActions",{ref:"actionsComponent",staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":e.ariaExpandedValue}},[e._t("default")],2):e._e()],2)}),[],!1,null,"9fd256bc",null).exports,q=r(25108);function Z(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}var $={name:"SharingEntryInternal",components:{NcActionLink:E(),SharingEntrySimple:F},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,o.generateUrl)("/f/")+this.fileInfo.id},copyLinkTooltip:function(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy internal link 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 e,n=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,navigator.clipboard.writeText(n.internalLink);case 3:(0,w.s$)(t("files_sharing","Link copied")),n.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),n.copySuccess=!0,n.copied=!0,e.next=14;break;case 9:e.prev=9,e.t0=e.catch(0),n.copySuccess=!1,n.copied=!0,q.error(e.t0);case 14:return e.prev=14,setTimeout((function(){n.copySuccess=!1,n.copied=!1}),4e3),e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[0,9,14,17]])})),function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){Z(a,r,i,s,o,"next",e)}function o(e){Z(a,r,i,s,o,"throw",e)}s(void 0)}))})()}}},G=$,V=r(66828),K={};K.styleTagTransform=j(),K.setAttributes=L(),K.insert=N().bind(null,"head"),K.domAPI=R(),K.insertStyleElement=U(),D()(V.Z,K),V.Z&&V.Z.locals&&V.Z.locals;var Q=(0,W.Z)(G,(function(){var e=this,t=e._self._c;return t("ul",[t("SharingEntrySimple",{ref:"shareEntrySimple",staticClass:"sharing-entry__internal",attrs:{title:e.t("files_sharing","Internal link"),subtitle:e.internalLinkSubtitle},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[e._v(" "),t("NcActionLink",{attrs:{href:e.internalLink,"aria-label":e.copyLinkTooltip,title:e.copyLinkTooltip,target:"_blank",icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1)],1)}),[],!1,null,"69e43ddc",null),z=Q.exports,J=r(45994),X=r(78595),ee=r(20296),te=r.n(ee),ne=r(36456),re=r.n(ne),ie=r(25108);function ae(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function se(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){ae(a,r,i,s,o,"next",e)}function o(e){ae(a,r,i,s,o,"throw",e)}s(void 0)}))}}var oe=new p,ce="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";function le(){return ue.apply(this,arguments)}function ue(){return(ue=se(regeneratorRuntime.mark((function e(){var n,r,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!oe.passwordPolicy.api||!oe.passwordPolicy.api.generate){e.next=14;break}return e.prev=1,e.next=4,u.default.get(oe.passwordPolicy.api.generate);case 4:if(!(n=e.sent).data.ocs.data.password){e.next=8;break}return(0,w.s$)(t("files_sharing","Password created successfully")),e.abrupt("return",n.data.ocs.data.password);case 8:e.next=14;break;case 10:e.prev=10,e.t0=e.catch(1),ie.info("Error generating password from password_policy",e.t0),(0,w.x2)(t("files_sharing","Error generating password from password policy"));case 14:for(r=new Uint8Array(10),i=ce.length/255,self.crypto.getRandomValues(r),a="",s=0;s<r.length;s++)a+=ce.charAt(r[s]*i);return e.abrupt("return",a);case 20:case"end":return e.stop()}}),e,null,[[1,10]])})))).apply(this,arguments)}r(35449);var he=r(25108);function de(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function fe(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){de(a,r,i,s,o,"next",e)}function o(e){de(a,r,i,s,o,"throw",e)}s(void 0)}))}}var pe=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),ge={methods:{createShare:function(e){return fe(regeneratorRuntime.mark((function n(){var r,i,a,s,o,c,l,h,d,f,p,g,m,v,y,_,b;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=e.path,i=e.permissions,a=e.shareType,s=e.shareWith,o=e.publicUpload,c=e.password,l=e.sendPasswordByTalk,h=e.expireDate,d=e.label,f=e.attributes,n.prev=1,n.next=4,u.default.post(pe,{path:r,permissions:i,shareType:a,shareWith:s,publicUpload:o,password:c,sendPasswordByTalk:l,expireDate:h,label:d,attributes:f});case 4:if(null!=(g=n.sent)&&null!==(p=g.data)&&void 0!==p&&p.ocs){n.next=7;break}throw g;case 7:return n.abrupt("return",new A(g.data.ocs.data));case 10:throw n.prev=10,n.t0=n.catch(1),he.error("Error while creating share",n.t0),b=null===n.t0||void 0===n.t0||null===(m=n.t0.response)||void 0===m||null===(v=m.data)||void 0===v||null===(y=v.ocs)||void 0===y||null===(_=y.meta)||void 0===_?void 0:_.message,OC.Notification.showTemporary(b?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:b}):t("files_sharing","Error creating the share"),{type:"error"}),n.t0;case 16:case"end":return n.stop()}}),n,null,[[1,10]])})))()},deleteShare:function(e){return fe(regeneratorRuntime.mark((function n(){var r,i,a,s,o,c,l;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,u.default.delete(pe+"/".concat(e));case 3:if(null!=(i=n.sent)&&null!==(r=i.data)&&void 0!==r&&r.ocs){n.next=6;break}throw i;case 6:return n.abrupt("return",!0);case 9:throw n.prev=9,n.t0=n.catch(0),he.error("Error while deleting share",n.t0),l=null===n.t0||void 0===n.t0||null===(a=n.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"}),n.t0;case 15:case"end":return n.stop()}}),n,null,[[0,9]])})))()},updateShare:function(e,n){return fe(regeneratorRuntime.mark((function r(){var i,a,s,o,c,l,h,d;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,u.default.put(pe+"/".concat(e),n);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),he.error("Error while updating share",r.t0),400!==r.t0.response.status&&(h=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(h?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:h}):t("files_sharing","Error updating the share"),{type:"error"})),d=r.t0.response.data.ocs.meta.message,new Error(d);case 17:case"end":return r.stop()}}),r,null,[[0,11]])})))()}}},me=r(25108);function ve(e){return ve="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ve(e)}function ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ye(Object(n),!0).forEach((function(t){Ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ye(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ae(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==ve(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==ve(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===ve(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function be(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function we(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){be(a,r,i,s,o,"next",e)}function o(e){be(a,r,i,s,o,"throw",e)}s(void 0)}))}}var Se={name:"SharingInput",components:{NcSelect:re()},mixins:[b,ge],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:A,default:null},canReshare:{type:Boolean,required:!0}},data:function(){return{config:new p,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[],value:null}},computed:{externalResults:function(){return this.ShareSearch.results},inputPlaceholder:function(){var e=this.config.isRemoteShareAllowed;return this.canReshare?e?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:{handleOpen:function(){(0,X.j8)("viewer:trapElements:changed",this.$refs.select.$el)},asyncFind:function(e){var t=this;return we(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t.query=e.trim(),!t.isValidQuery){n.next=5;break}return t.loading=!0,n.next=5,t.debounceGetSuggestions(e);case 5:case"end":return n.stop()}}),n)})))()},getSuggestions:function(e){var n=arguments,r=this;return we(regeneratorRuntime.mark((function i(){var a,s,c,l,h,d,f,p,g,m,v,y,_;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=n.length>1&&void 0!==n[1]&&n[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),c=null,i.prev=6,i.next=9,u.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===r.fileInfo.type?"folder":"file",search:e,lookup:a,perPage:r.config.maxAutocompleteResults,shareType:s}});case 9:c=i.sent,i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(6),me.error("Error fetching suggestions",i.t0),i.abrupt("return");case 16:l=c.data.ocs.data,h=c.data.ocs.data.exact,l.exact=[],d=Object.values(h).reduce((function(e,t){return e.concat(t)}),[]),f=Object.values(l).reduce((function(e,t){return e.concat(t)}),[]),p=r.filterOutExistingShares(d).map((function(e){return r.formatForMultiselect(e)})).sort((function(e,t){return e.shareType-t.shareType})),g=r.filterOutExistingShares(f).map((function(e){return r.formatForMultiselect(e)})).sort((function(e,t){return e.shareType-t.shareType})),m=[],l.lookupEnabled&&!a&&m.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0}),v=r.externalResults.filter((function(e){return!e.condition||e.condition(r)})),y=p.concat(g).concat(v).concat(m),_=y.reduce((function(e,t){return t.displayName?(e[t.displayName]||(e[t.displayName]=0),e[t.displayName]++,e):e}),{}),r.suggestions=y.map((function(e){return _[e.displayName]>1&&!e.desc?_e(_e({},e),{},{desc:e.shareWithDisplayNameUnique}):e})),r.loading=!1,me.info("suggestions",r.suggestions);case 31:case"end":return i.stop()}}),i,null,[[6,12]])})))()},debounceGetSuggestions:te()((function(){this.getSuggestions.apply(this,arguments)}),300),getRecommendations:function(){var e=this;return we(regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading=!0,n=null,t.prev=2,t.next=5,u.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:e.fileInfo.type}});case 5:n=t.sent,t.next=12;break;case 8:return t.prev=8,t.t0=t.catch(2),me.error("Error fetching recommendations",t.t0),t.abrupt("return");case 12:r=e.externalResults.filter((function(t){return!t.condition||t.condition(e)})),i=Object.values(n.data.ocs.data.exact).reduce((function(e,t){return e.concat(t)}),[]),e.recommendations=e.filterOutExistingShares(i).map((function(t){return e.formatForMultiselect(t)})).concat(r),e.loading=!1,me.info("recommendations",e.recommendations);case 17:case"end":return t.stop()}}),t,null,[[2,8]])})))()},filterOutExistingShares:function(e){var t=this;return e.reduce((function(e,n){if("object"!==ve(n))return e;try{if(n.value.shareType===t.SHARE_TYPES.SHARE_TYPE_USER){if(n.value.shareWith===(0,J.ts)().uid)return e;if(t.reshare&&n.value.shareWith===t.reshare.owner)return e}if(n.value.shareType===t.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==t.linkShares.map((function(e){return e.shareWith})).indexOf(n.value.shareWith.trim()))return e}else{var r=t.shares.reduce((function(e,t){return e[t.shareWith]=t.type,e}),{}),i=n.value.shareWith.trim();if(i in r&&r[i]===n.value.shareType)return e}e.push(n)}catch(t){return e}return e}),[])},shareTypeToIcon:function(e){switch(e){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return{icon:"icon-user",iconTitle:t("files_sharing","Guest")};case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return{icon:"icon-group",iconTitle:t("files_sharing","Group")};case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return{icon:"icon-mail",iconTitle:t("files_sharing","Email")};case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return{icon:"icon-circle",iconTitle:t("files_sharing","Circle")};case this.SHARE_TYPES.SHARE_TYPE_ROOM:return{icon:"icon-room",iconTitle:t("files_sharing","Talk conversation")};case this.SHARE_TYPES.SHARE_TYPE_DECK:return{icon:"icon-deck",iconTitle:t("files_sharing","Deck board")};default:return{}}},formatForMultiselect:function(e){var n,r;if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)n=null!==(r=e.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!e.value.server)if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)n=e.value.shareWith;else{var i;n=null!==(i=e.shareWithDescription)&&void 0!==i?i:""}else n=t("files_sharing","on {server}",{server:e.value.server});return _e({id:"".concat(e.value.shareType,"-").concat(e.value.shareWith),shareWith:e.value.shareWith,shareType:e.value.shareType,user:e.uuid||e.value.shareWith,isNoUser:e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:e.name||e.label,subtitle:n,shareWithDisplayNameUnique:e.shareWithDisplayNameUnique||""},this.shareTypeToIcon(e.value.shareType))},addShare:function(e){var t=this;return we(regeneratorRuntime.mark((function n(){var r,i,a,s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t.value=null,!e.lookup){n.next=6;break}return n.next=4,t.getSuggestions(t.query,!0);case 4:return t.$nextTick((function(){t.$refs.select.$children[0].open=!0})),n.abrupt("return",!0);case 6:if(!e.handler){n.next=12;break}return n.next=9,e.handler(t);case 9:return r=n.sent,t.$emit("add:share",new A(r)),n.abrupt("return",!0);case 12:if(t.loading=!0,me.debug("Adding a new share from the input for",e),n.prev=14,i=null,!t.config.enforcePasswordForPublicLink||e.shareType!==t.SHARE_TYPES.SHARE_TYPE_EMAIL){n.next=20;break}return n.next=19,le();case 19:i=n.sent;case 20:return a=(t.fileInfo.path+"/"+t.fileInfo.name).replace("//","/"),n.next=23,t.createShare({path:a,shareType:e.shareType,shareWith:e.shareWith,password:i,permissions:t.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions,attributes:JSON.stringify(t.fileInfo.shareAttributes)});case 23:if(s=n.sent,!i){n.next=32;break}return s.newPassword=i,n.next=28,new Promise((function(e){t.$emit("add:share",s,e)}));case 28:n.sent.open=!0,n.next=33;break;case 32:t.$emit("add:share",s);case 33:return n.next=35,t.getRecommendations();case 35:n.next=42;break;case 37:n.prev=37,n.t0=n.catch(14),t.$nextTick((function(){t.$refs.select.$children[0].open=!0})),t.query=e.shareWith,me.error("Error while adding new share",n.t0);case 42:return n.prev=42,t.loading=!1,n.finish(42);case 45:case"end":return n.stop()}}),n,null,[[14,37,42,45]])})))()}}},Ee=Se,Ce=r(15869),xe={};xe.styleTagTransform=j(),xe.setAttributes=L(),xe.insert=N().bind(null,"head"),xe.domAPI=R(),xe.insertStyleElement=U(),D()(Ce.Z,xe),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ke=(0,W.Z)(Ee,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharing-search"},[t("label",{attrs:{for:"sharing-search-input"}},[e._v(e._s(e.t("files_sharing","Search for share recipients")))]),e._v(" "),t("NcSelect",{ref:"select",staticClass:"sharing-search__input",attrs:{id:"sharing-search-input",disabled:!e.canReshare,loading:e.loading,filterable:!1,placeholder:e.inputPlaceholder,"clear-search-on-blur":function(){return!1},"user-select":!0,options:e.options},on:{open:e.handleOpen,search:e.asyncFind,"option:selected":e.addShare},scopedSlots:e._u([{key:"no-options",fn:function(t){var n=t.search;return[e._v("\n\t\t\t"+e._s(n?e.noResultText:e.t("files_sharing","No recommendations. Start typing."))+"\n\t\t")]}}]),model:{value:e.value,callback:function(t){e.value=t},expression:"value"}})],1)}),[],!1,null,null,null),Pe=ke.exports,De=r(45400),Te=r.n(De),Re=r(65358),Oe=r(1162),Ne=r.n(Oe),Ie=r(25746),Le=r(25108);function He(e){return He="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},He(e)}function Ue(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function Ye(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){Ue(a,r,i,s,o,"next",e)}function o(e){Ue(a,r,i,s,o,"throw",e)}s(void 0)}))}}var je={mixins:[ge,b],props:{fileInfo:{type:Object,default:function(){},required:!0},share:{type:A,default:null},isUnique:{type:Boolean,default:!0}},data:function(){var e;return{config:new p,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new Ie.Z({concurrency:1}),reactiveState:null===(e=this.share)||void 0===e?void 0:e.state}},computed:{hasNote:{get:function(){return""!==this.share.note},set:function(e){this.share.note=e?null:""}},dateTomorrow:function(){return new Date((new Date).setDate((new Date).getDate()+1))},lang:function(){var e=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],t=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:t,weekdaysMin:e,weekdaysShort:e},monthFormat:"MMM"}},isShareOwner:function(){return this.share&&this.share.owner===(0,J.ts)().uid}},methods:{checkShare:function(e){return(!e.password||"string"==typeof e.password&&""!==e.password.trim())&&!(e.expirationDate&&!e.expirationDate.isValid())},parseDateString:function(e){var t;if(e)return new Date(null===(t=e.match(/([0-9]{4}-[0-9]{2}-[0-9]{2})/i))||void 0===t?void 0:t.pop())},formatDateToString:function(e){return new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())).toISOString().split("T")[0]},onExpirationChange:function(e){this.share.expireDate=this.formatDateToString(e),this.queueUpdate("expireDate")},onExpirationDisable:function(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange:function(e){this.$set(this.share,"newNote",e.trim())},onNoteSubmit:function(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},onDelete:function(){var e=this;return Ye(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,e.loading=!0,e.open=!1,n.next=5,e.deleteShare(e.share.id);case 5:Le.debug("Share deleted",e.share.id),r="file"===e.share.itemType?t("files_sharing",'File "{path}" has been unshared',{path:e.share.path}):t("files_sharing",'Folder "{path}" has been unshared',{path:e.share.path}),(0,w.s$)(r),e.$emit("remove:share",e.share),n.next=14;break;case 11:n.prev=11,n.t0=n.catch(0),e.open=!0;case 14:return n.prev=14,e.loading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[0,11,14,17]])})))()},queueUpdate:function(){for(var e=this,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];if(0!==r.length){if(this.share.id){var a={};return r.forEach((function(t){"object"===He(e.share[t])?a[t]=JSON.stringify(e.share[t]):a[t]=e.share[t].toString()})),void this.updateQueue.add(Ye(regeneratorRuntime.mark((function n(){var i,s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.saving=!0,e.errors={},n.prev=2,n.next=5,e.updateShare(e.share.id,a);case 5:i=n.sent,r.indexOf("password")>=0&&(e.$delete(e.share,"newPassword"),e.share.passwordExpirationTime=i.password_expiration_time),e.$delete(e.errors,r[0]),(0,w.s$)(t("files_sharing","Share {propertyName} saved",{propertyName:r[0]})),n.next=15;break;case 11:n.prev=11,n.t0=n.catch(2),(s=n.t0.message)&&""!==s&&(e.onSyncError(r[0],s),(0,w.x2)(t("files_sharing",s)));case 15:return n.prev=15,e.saving=!1,n.finish(15);case 18:case"end":return n.stop()}}),n,null,[[2,11,15,18]])}))))}Le.debug("Updated local share",this.share)}},onSyncError:function(e,t){switch(this.open=!0,e){case"password":case"pending":case"expireDate":case"label":case"note":this.$set(this.errors,e,t);var n=this.$refs[e];if(n){n.$el&&(n=n.$el);var r=n.querySelector(".focusable");r&&r.focus()}break;case"sendPasswordByTalk":this.$set(this.errors,e,t),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:te()((function(e){this.queueUpdate(e)}),500)}},Be={name:"SharingEntryInherited",components:{NcActionButton:Te(),NcActionLink:E(),NcActionText:Ne(),NcAvatar:l(),SharingEntrySimple:F},mixins:[je],props:{share:{type:A,required:!0}},computed:{viaFileTargetUrl:function(){return(0,o.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName:function(){return(0,Re.EZ)(this.share.viaPath)}}},Me=r(24147),We={};We.styleTagTransform=j(),We.setAttributes=L(),We.insert=N().bind(null,"head"),We.domAPI=R(),We.insertStyleElement=U(),D()(Me.Z,We),Me.Z&&Me.Z.locals&&Me.Z.locals;var Fe=(0,W.Z)(Be,(function(){var e=this,t=e._self._c;return t("SharingEntrySimple",{key:e.share.id,staticClass:"sharing-entry__inherited",attrs:{title:e.share.shareWithDisplayName},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.share.shareWith,"display-name":e.share.shareWithDisplayName}})]},proxy:!0}])},[e._v(" "),t("NcActionText",{attrs:{icon:"icon-user"}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Added by {initiator}",{initiator:e.share.ownerDisplayName}))+"\n\t")]),e._v(" "),e.share.viaPath&&e.share.viaFileid?t("NcActionLink",{attrs:{icon:"icon-folder",href:e.viaFileTargetUrl}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Via “{folder}”",{folder:e.viaFolderName}))+"\n\t")]):e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t")]):e._e()],1)}),[],!1,null,"23251e4a",null),qe=Fe.exports,Ze=r(25108);function $e(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}var Ge={name:"SharingInherited",components:{NcActionButton:Te(),SharingEntryInherited:qe,SharingEntrySimple:F},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 e,n=this;return(e=regeneratorRuntime.mark((function e(){var r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,e.prev=1,r=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:n.fullPath}),e.next=5,u.default.get(r);case 5:i=e.sent,n.shares=i.data.ocs.data.map((function(e){return new A(e)})).sort((function(e,t){return t.createdTime-e.createdTime})),Ze.info(n.shares),n.loaded=!0,e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"});case 14:return e.prev=14,n.loading=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[1,11,14,17]])})),function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){$e(a,r,i,s,o,"next",e)}function o(e){$e(a,r,i,s,o,"throw",e)}s(void 0)}))})()},resetState:function(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]},removeShare:function(e){var t=this.shares.findIndex((function(t){return t===e}));this.shares.splice(t,1)}}},Ve=Ge,Ke=r(16843),Qe={};Qe.styleTagTransform=j(),Qe.setAttributes=L(),Qe.insert=N().bind(null,"head"),Qe.domAPI=R(),Qe.insertStyleElement=U(),D()(Ke.Z,Qe),Ke.Z&&Ke.Z.locals&&Ke.Z.locals;var ze=(0,W.Z)(Ve,(function(){var e=this,t=e._self._c;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:e.mainTitle,subtitle:e.subTitle,"aria-expanded":e.showInheritedShares},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[e._v(" "),t("NcActionButton",{attrs:{icon:e.showInheritedSharesIcon,"aria-label":e.toggleTooltip,title:e.toggleTooltip},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.toggleInheritedShares.apply(null,arguments)}}})],1),e._v(" "),e._l(e.shares,(function(n){return t("SharingEntryInherited",{key:n.id,attrs:{"file-info":e.fileInfo,share:n},on:{"remove:share":e.removeShare}})}))],2)}),[],!1,null,"3462b966",null),Je=ze.exports,Xe=r(81807),et=r.n(Xe),tt=r(79570),nt=r.n(tt),rt=r(875),it=r.n(rt),at=r(18074),st=r.n(at),ot={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:function(){return{}}},fileInfo:{type:Object,default:function(){},required:!0},share:{type:A,default:null}},computed:{data:function(){return this.action.data(this)}}},ct=(0,W.Z)(ot,(function(){var e=this;return(0,e._self._c)(e.data.is,e._g(e._b({tag:"Component"},"Component",e.data,!1),e.action.handlers),[e._v("\n\t"+e._s(e.data.text)+"\n")])}),[],!1,null,null,null).exports,lt=r(30158),ut=r.n(lt),ht={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},dt={READ_ONLY:ht.READ,UPLOAD_AND_UPDATE:ht.READ|ht.UPDATE|ht.CREATE|ht.DELETE,FILE_DROP:ht.CREATE,ALL:ht.UPDATE|ht.CREATE|ht.READ|ht.DELETE|ht.SHARE};function ft(e,t){return e!==ht.NONE&&(e&t)===t}function pt(e){return!(!ft(e,ht.READ)&&!ft(e,ht.CREATE)||!ft(e,ht.READ)&&(ft(e,ht.UPDATE)||ft(e,ht.DELETE)))}function gt(e,t){return ft(e,t)?function(e,t){return e&~t}(e,t):function(e,t){return e|t}(e,t)}var mt=r(55976),vt=r(32964),yt={name:"SharePermissionsEditor",components:{NcActionButton:Te(),NcActionCheckbox:et(),NcActionRadio:ut(),Tune:mt.Z,ChevronLeft:vt.default},mixins:[je],data:function(){return{randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:ht,bundledPermissions:dt}},computed:{sharePermissionsSummary:function(){var e=this;return Object.values(this.atomicPermissions).filter((function(t){return e.shareHasPermissions(t)})).map((function(t){switch(t){case e.atomicPermissions.CREATE:return e.t("files_sharing","Upload");case e.atomicPermissions.READ:return e.t("files_sharing","Read");case e.atomicPermissions.UPDATE:return e.t("files_sharing","Edit");case e.atomicPermissions.DELETE:return e.t("files_sharing","Delete");default:return null}})).filter((function(e){return null!==e})).join(", ")},sharePermissionsIsBundle:function(){var e=this;return Object.values(dt).map((function(t){return e.sharePermissionEqual(t)})).filter((function(e){return e})).length>0},sharePermissionsSetIsValid:function(){return pt(this.share.permissions)},isFolder:function(){return"dir"===this.fileInfo.type},fileHasCreatePermission:function(){return!!(this.fileInfo.permissions&ht.CREATE)}},mounted:function(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual:function(e){return(this.share.permissions&~ht.SHARE)===e},shareHasPermissions:function(e){return ft(this.share.permissions,e)},setSharePermissions:function(e){this.share.permissions=e,this.queueUpdate("permissions")},canToggleSharePermissions:function(e){return function(e,t){return pt(gt(e,t))}(this.share.permissions,e)},toggleSharePermissions:function(e){this.share.permissions=gt(this.share.permissions,e),pt(this.share.permissions)&&this.queueUpdate("permissions")}}},_t=r(73286),At={};At.styleTagTransform=j(),At.setAttributes=L(),At.insert=N().bind(null,"head"),At.domAPI=R(),At.insertStyleElement=U(),D()(_t.Z,At),_t.Z&&_t.Z.locals&&_t.Z.locals;var bt=(0,W.Z)(yt,(function(){var e=this,t=e._self._c;return t("li",[t("ul",[e.isFolder?e._e():t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.UPDATE),disabled:e.saving},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.UPDATE)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Allow editing"))+"\n\t\t")]),e._v(" "),e.isFolder&&e.fileHasCreatePermission&&e.config.isPublicUploadEnabled?[e.showCustomPermissionsForm?t("span",{class:{error:!e.sharePermissionsSetIsValid}},[t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.READ),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.READ)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.READ)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Read"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.CREATE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.CREATE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.CREATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Upload"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.UPDATE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.UPDATE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.UPDATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Edit"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.DELETE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.DELETE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.DELETE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Delete"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionButton",{on:{click:function(t){e.showCustomPermissionsForm=!1}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Bundled permissions"))+"\n\t\t\t\t")])],1):[t("NcActionRadio",{attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.READ_ONLY),value:e.bundledPermissions.READ_ONLY,name:e.randomFormName,disabled:e.saving},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.READ_ONLY)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Read only"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionRadio",{attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.UPLOAD_AND_UPDATE),value:e.bundledPermissions.UPLOAD_AND_UPDATE,disabled:e.saving,name:e.randomFormName},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.UPLOAD_AND_UPDATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Allow upload and editing"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.FILE_DROP),value:e.bundledPermissions.FILE_DROP,disabled:e.saving,name:e.randomFormName},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.FILE_DROP)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","File drop (upload only)"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionButton",{attrs:{title:e.t("files_sharing","Custom permissions")},on:{click:function(t){e.showCustomPermissionsForm=!0}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[e._v("\n\t\t\t\t\t"+e._s(e.sharePermissionsIsBundle?"":e.sharePermissionsSummary)+"\n\t\t\t\t")])]]:e._e()],2)])}),[],!1,null,"5e957d09",null).exports,wt=r(25108);function St(e){return St="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},St(e)}function Et(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function Ct(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){Et(a,r,i,s,o,"next",e)}function o(e){Et(a,r,i,s,o,"throw",e)}s(void 0)}))}}var xt={name:"SharingEntryLink",components:{NcActions:x(),NcActionButton:Te(),NcActionCheckbox:et(),NcActionInput:nt(),NcActionLink:E(),NcActionText:Ne(),NcActionTextEditable:st(),NcActionSeparator:it(),NcAvatar:l(),ExternalShareAction:ct,SharePermissionsEditor:bt},mixins:[je],props:{canReshare:{type:Boolean,default:!0},index:{type:Number,default:null}},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 this.index>1?t("files_sharing","Share link ({index})",{index:this.index}):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(e){var t=this.config.defaultExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=e?this.formatDateToString(t):"",wt.debug("Expiration date status",e,this.share.expireDate)}},dateMaxEnforced:function(){return this.config.isDefaultExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+this.config.defaultExpireDate)):null},isPasswordProtected:{get:function(){return this.config.enforcePasswordForPublicLink||!!this.share.password},set:function(e){var t=this;return Ct(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(n.t0=i.ZP,n.t1=t.share,!e){n.next=8;break}return n.next=5,le();case 5:n.t2=n.sent,n.next=9;break;case 8:n.t2="";case 9:n.t3=n.t2,n.t0.set.call(n.t0,n.t1,"password",n.t3),i.ZP.set(t.share,"newPassword",t.share.password);case 12:case"end":return n.stop()}}),n)})))()}},passwordExpirationTime:function(){if(null===this.share.passwordExpirationTime)return null;var e=moment(this.share.passwordExpirationTime);return!(e.diff(moment())<0)&&e.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(e){var t=this;return Ct(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:t.share.sendPasswordByTalk=e;case 1:case"end":return n.stop()}}),n)})))()}},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,o.generateUrl)("/s/")+this.share.token},actionsTooltip:function(){return t("files_sharing",'Actions for "{title}"',{title:this.title})},copyLinkTooltip:function(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing",'Copy public link of "{title}" to clipboard',{title:this.title})},externalLegacyLinkActions:function(){return this.ExternalLegacyLinkActions.actions},externalLinkActions:function(){return this.ExternalShareActions.actions.filter((function(e){return e.shareType.includes(g.D.SHARE_TYPE_LINK)||e.shareType.includes(g.D.SHARE_TYPE_EMAIL)}))},isPasswordPolicyEnabled:function(){return"object"===St(this.config.passwordPolicy)},canChangeHideDownload:function(){return this.fileInfo.shareAttributes.some((function(e){return"download"===e.key&&"permissions"===e.scope&&!1===e.enabled}))}},methods:{onNewLinkShare:function(){var e=this;return Ct(regeneratorRuntime.mark((function n(){var r,i,a,s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e.loading){n.next=2;break}return n.abrupt("return");case 2:if(r={share_type:g.D.SHARE_TYPE_LINK},e.config.isDefaultExpireDateEnforced&&(r.expiration=e.formatDateToString(e.config.defaultExpirationDate)),!e.config.enableLinkPasswordByDefault){n.next=8;break}return n.next=7,le();case 7:r.password=n.sent;case 8:if(!e.config.enforcePasswordForPublicLink&&!e.config.isDefaultExpireDateEnforced){n.next=41;break}if(e.pending=!0,!e.share||e.share.id){n.next=28;break}if(!e.checkShare(e.share)){n.next=25;break}return n.prev=12,n.next=15,e.pushNewLinkShare(e.share,!0);case 15:n.next=22;break;case 17:return n.prev=17,n.t0=n.catch(12),e.pending=!1,wt.error(n.t0),n.abrupt("return",!1);case 22:return n.abrupt("return",!0);case 25:return e.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),n.abrupt("return",!1);case 28:if(!e.config.enforcePasswordForPublicLink){n.next=32;break}return n.next=31,le();case 31:r.password=n.sent;case 32:return i=new A(r),n.next=35,new Promise((function(t){e.$emit("add:share",i,t)}));case 35:a=n.sent,e.open=!1,e.pending=!1,a.open=!0,n.next=44;break;case 41:return s=new A(r),n.next=44,e.pushNewLinkShare(s);case 44:case"end":return n.stop()}}),n,null,[[12,17]])})))()},pushNewLinkShare:function(e,n){var r=this;return Ct(regeneratorRuntime.mark((function i(){var a,s,o,c,l,u,h,d,f;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(i.prev=0,!r.loading){i.next=3;break}return i.abrupt("return",!0);case 3:return r.loading=!0,r.errors={},a=(r.fileInfo.path+"/"+r.fileInfo.name).replace("//","/"),s={path:a,shareType:g.D.SHARE_TYPE_LINK,password:e.password,expireDate:e.expireDate,attributes:JSON.stringify(r.fileInfo.shareAttributes)},wt.debug("Creating link share with options",s),i.next=10,r.createShare(s);case 10:if(o=i.sent,r.open=!1,wt.debug("Link share created",o),!n){i.next=19;break}return i.next=16,new Promise((function(e){r.$emit("update:share",o,e)}));case 16:c=i.sent,i.next=22;break;case 19:return i.next=21,new Promise((function(e){r.$emit("add:share",o,e)}));case 21:c=i.sent;case 22:r.config.enforcePasswordForPublicLink||c.copyLink(),(0,w.s$)(t("sharing","Link share created")),i.next=35;break;case 26:if(i.prev=26,i.t0=i.catch(0),f=null===i.t0||void 0===i.t0||null===(l=i.t0.response)||void 0===l||null===(u=l.data)||void 0===u||null===(h=u.ocs)||void 0===h||null===(d=h.meta)||void 0===d?void 0:d.message){i.next=33;break}return(0,w.x2)(t("sharing","Error while creating the share")),wt.error(i.t0),i.abrupt("return");case 33:throw f.match(/password/i)?r.onSyncError("password",f):f.match(/date/i)?r.onSyncError("expireDate",f):r.onSyncError("pending",f),i.t0;case 35:return i.prev=35,r.loading=!1,i.finish(35);case 38:case"end":return i.stop()}}),i,null,[[0,26,35,38]])})))()},onLabelChange:function(e){this.$set(this.share,"newLabel",e.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 e=this;return Ct(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,navigator.clipboard.writeText(e.shareLink);case 3:(0,w.s$)(t("files_sharing","Link copied")),e.$refs.copyButton.$el.focus(),e.copySuccess=!0,e.copied=!0,n.next=14;break;case 9:n.prev=9,n.t0=n.catch(0),e.copySuccess=!1,e.copied=!0,wt.error(n.t0);case 14:return n.prev=14,setTimeout((function(){e.copySuccess=!1,e.copied=!1}),4e3),n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[0,9,14,17]])})))()},onPasswordChange:function(e){this.$set(this.share,"newPassword",e)},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)}}},kt=xt,Pt=r(14430),Dt={};Dt.styleTagTransform=j(),Dt.setAttributes=L(),Dt.insert=N().bind(null,"head"),Dt.domAPI=R(),Dt.insertStyleElement=U(),D()(Pt.Z,Dt),Pt.Z&&Pt.Z.locals&&Pt.Z.locals;var Tt=(0,W.Z)(kt,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":e.share}},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":e.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),e._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title",attrs:{title:e.title}},[e._v("\n\t\t\t"+e._s(e.title)+"\n\t\t")]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e()]),e._v(" "),e.share&&!e.isEmailShareType&&e.share.token?t("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("NcActionLink",{attrs:{href:e.shareLink,target:"_blank",title:e.copyLinkTooltip,"aria-label":e.copyLinkTooltip,icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1):e._e(),e._v(" "),e.pending||!e.pendingPassword&&!e.pendingExpirationDate?e.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onMenuClose}},[e.share?[e.share.canEdit&&e.canReshare?[t("NcActionInput",{ref:"label",class:{error:e.errors.label},attrs:{disabled:e.saving,label:e.t("files_sharing","Share label"),value:void 0!==e.share.newLabel?e.share.newLabel:e.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":e.onLabelChange,submit:e.onLabelSubmit}}),e._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":e.canReshare,share:e.share,"file-info":e.fileInfo},on:{"update:share":function(t){e.share=t}}}),e._v(" "),t("NcActionSeparator"),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.share.hideDownload,disabled:e.saving||e.canChangeHideDownload},on:{"update:checked":function(t){return e.$set(e.share,"hideDownload",t)},change:function(t){return e.queueUpdate("hideDownload")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:e.isPasswordProtected,disabled:e.config.enforcePasswordForPublicLink||e.saving},on:{"update:checked":function(t){e.isPasswordProtected=t},uncheck:e.onPasswordDisable}},[e._v("\n\t\t\t\t\t"+e._s(e.config.enforcePasswordForPublicLink?e.t("files_sharing","Password protection (enforced)"):e.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),e._v(" "),e.isPasswordProtected?t("NcActionInput",{ref:"password",staticClass:"share-link-password",class:{error:e.errors.password},attrs:{disabled:e.saving,required:e.config.enforcePasswordForPublicLink,value:e.hasUnsavedPassword?e.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:e.hasUnsavedPassword?"text":"password"},on:{"update:value":e.onPasswordChange,submit:e.onPasswordSubmit}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e.isEmailShareType&&e.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:e.passwordExpirationTime}))+"\n\t\t\t\t")]):e.isEmailShareType&&null!==e.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-error"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e.isPasswordProtectedByTalkAvailable?t("NcActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:e.isPasswordProtectedByTalk,disabled:!e.canTogglePasswordProtectedByTalkAvailable||e.saving},on:{"update:checked":function(t){e.isPasswordProtectedByTalk=t},change:e.onPasswordProtectedByTalkChange}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:e.hasExpirationDate,disabled:e.config.isDefaultExpireDateEnforced||e.saving},on:{"update:checked":function(t){e.hasExpirationDate=t},uncheck:e.onExpirationDisable}},[e._v("\n\t\t\t\t\t"+e._s(e.config.isDefaultExpireDateEnforced?e.t("files_sharing","Expiration date (enforced)"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcActionInput",{ref:"expireDate",staticClass:"share-link-expire-date",class:{error:e.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:e.saving,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.hasNote,disabled:e.saving},on:{"update:checked":function(t){e.hasNote=t},uncheck:function(t){return e.queueUpdate("note")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),e._v(" "),e.hasNote?t("NcActionTextEditable",{ref:"note",class:{error:e.errors.note},attrs:{disabled:e.saving,placeholder:e.t("files_sharing","Enter a note for the share recipient"),value:e.share.newNote||e.share.note,icon:"icon-edit"},on:{"update:value":e.onNoteChange,submit:e.onNoteSubmit}}):e._e()]:e._e(),e._v(" "),t("NcActionSeparator"),e._v(" "),e._l(e.externalLinkActions,(function(n){return t("ExternalShareAction",{key:n.id,attrs:{id:n.id,action:n,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),e._l(e.externalLegacyLinkActions,(function(n,r){var i=n.icon,a=n.url,s=n.name;return t("NcActionLink",{key:r,attrs:{href:a(e.shareLink),icon:i,target:"_blank"}},[e._v("\n\t\t\t\t"+e._s(s)+"\n\t\t\t")])})),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t\t\t")]):e._e(),e._v(" "),!e.isEmailShareType&&e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Add another link"))+"\n\t\t\t")]):e._e()]:e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{title:e.t("files_sharing","Create a new share link"),"aria-label":e.t("files_sharing","Create a new share link"),icon:e.loading?"icon-loading-small":"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}}):e._e()],2):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onNewLinkShare}},[e.errors.pending?t("NcActionText",{class:{error:e.errors.pending},attrs:{icon:"icon-error"}},[e._v("\n\t\t\t"+e._s(e.errors.pending)+"\n\t\t")]):t("NcActionText",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),e._v(" "),e.pendingPassword?t("NcActionText",{attrs:{icon:"icon-password"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):e.config.enableLinkPasswordByDefault?t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:e.isPasswordProtected,disabled:e.config.enforcePasswordForPublicLink||e.saving},on:{"update:checked":function(t){e.isPasswordProtected=t},uncheck:e.onPasswordDisable}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingPassword||e.share.password?t("NcActionInput",{staticClass:"share-link-password",attrs:{value:e.share.password,disabled:e.saving,required:e.config.enableLinkPasswordByDefault||e.config.enforcePasswordForPublicLink,minlength:e.isPasswordPolicyEnabled&&e.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(t){return e.$set(e.share,"password",t)},submit:e.onNewLinkShare}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a password"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionText",{attrs:{icon:"icon-calendar-dark"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionInput",{staticClass:"share-link-expire-date",attrs:{disabled:e.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t")]):e._e(),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Create share"))+"\n\t\t")]),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onCancel.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"1f50aaec",null),Rt={name:"SharingLinkList",components:{SharingEntryLink:Tt.exports},mixins:[b],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 e=this;return this.shares.filter((function(t){return t.type===e.SHARE_TYPES.SHARE_TYPE_LINK})).length>0},hasShares:function(){return this.shares.length>0}},methods:{addShare:function(e,t){this.shares.unshift(e),this.awaitForShare(e,t)},awaitForShare:function(e,t){var n=this;this.$nextTick((function(){var r=n.$children.find((function(t){return t.share===e}));r&&t(r)}))},removeShare:function(e){var t=this.shares.findIndex((function(t){return t===e}));this.shares.splice(t,1)}}},Ot=(0,W.Z)(Rt,(function(){var e=this,t=e._self._c;return e.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!e.hasLinkShares&&e.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo},on:{"add:share":e.addShare}}):e._e(),e._v(" "),e.hasShares?e._l(e.shares,(function(n,r){return t("SharingEntryLink",{key:n.id,attrs:{index:e.shares.length>1?r+1:null,"can-reshare":e.canReshare,share:e.shares[r],"file-info":e.fileInfo},on:{"update:share":[function(t){return e.$set(e.shares,r,t)},function(t){return e.awaitForShare.apply(e,arguments)}],"add:share":function(t){return e.addShare.apply(e,arguments)},"remove:share":e.removeShare}})})):e._e()],2):e._e()}),[],!1,null,null,null),Nt=Ot.exports,It=r(25108);function Lt(e){return Lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Lt(e)}var Ht={name:"SharingEntry",components:{NcActions:x(),NcActionButton:Te(),NcActionCheckbox:et(),NcActionInput:nt(),NcActionTextEditable:st(),NcAvatar:l()},mixins:[je],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 e=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?e+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?e+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?e+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?e+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(e+=" (".concat(t("files_sharing","guest"),")")),e},tooltip:function(){if(this.share.owner!==this.share.uidFileOwner){var e={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}",e):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",e):t("files_sharing","Shared with {user} by {owner}",e)}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},canSetDownload:function(){return this.fileInfo.canDownload()||this.canDownload},canEdit:{get:function(){return this.share.hasUpdatePermission},set:function(e){this.updatePermissions({isEditChecked:e})}},canCreate:{get:function(){return this.share.hasCreatePermission},set:function(e){this.updatePermissions({isCreateChecked:e})}},canDelete:{get:function(){return this.share.hasDeletePermission},set:function(e){this.updatePermissions({isDeleteChecked:e})}},canReshare:{get:function(){return this.share.hasSharePermission},set:function(e){this.updatePermissions({isReshareChecked:e})}},canDownload:{get:function(){return this.share.hasDownloadPermission},set:function(e){this.updatePermissions({isDownloadChecked:e})}},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(e){var t=this.config.defaultInternalExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=e?this.formatDateToString(t):"",It.debug("Expiration date status",e,this.share.expireDate)}},dateMaxEnforced:function(){return!this.isRemote&&this.config.isDefaultInternalExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultInternalExpireDate)):this.config.isDefaultRemoteExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultRemoteExpireDate)):null},hasStatus:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"===Lt(this.share.status)&&!Array.isArray(this.share.status)},allowDownloadText:function(){return t("files_sharing","Allow download")},isSetDownloadButtonVisible:function(){return this.isFolder||["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation"].includes(this.fileInfo.mimetype)}},methods:{updatePermissions:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.isEditChecked,n=void 0===t?this.canEdit:t,r=e.isCreateChecked,i=void 0===r?this.canCreate:r,a=e.isDeleteChecked,s=void 0===a?this.canDelete:a,o=e.isReshareChecked,c=void 0===o?this.canReshare:o,l=e.isDownloadChecked,u=void 0===l?this.canDownload:l,h=0|(this.hasRead?this.permissionsRead:0)|(i?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(n?this.permissionsEdit:0)|(c?this.permissionsShare:0);this.share.permissions=h,this.share.hasDownloadPermission!==u&&(this.share.hasDownloadPermission=u),this.queueUpdate("permissions","attributes")},onMenuClose:function(){this.onNoteSubmit()}}},Ut=Ht,Yt=r(24196),jt={};jt.styleTagTransform=j(),jt.setAttributes=L(),jt.insert=N().bind(null,"head"),jt.domAPI=R(),jt.insertStyleElement=U(),D()(Yt.Z,jt),Yt.Z&&Yt.Z.locals&&Yt.Z.locals;var Bt=(0,W.Z)(Ut,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.type!==e.SHARE_TYPES.SHARE_TYPE_USER,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}),e._v(" "),t(e.share.shareWithLink?"a":"div",{tag:"component",staticClass:"sharing-entry__desc",attrs:{title:e.tooltip,"aria-label":e.tooltip,href:e.share.shareWithLink}},[t("span",[e._v(e._s(e.title)),e.isUnique?e._e():t("span",{staticClass:"sharing-entry__desc-unique"},[e._v(" ("+e._s(e.share.shareWithDisplayNameUnique)+")")])]),e._v(" "),e.hasStatus?t("p",[t("span",[e._v(e._s(e.share.status.icon||""))]),e._v(" "),t("span",[e._v(e._s(e.share.status.message||""))])]):e._e()]),e._v(" "),t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:e.onMenuClose}},[e.share.canEdit?[t("NcActionCheckbox",{ref:"canEdit",attrs:{checked:e.canEdit,value:e.permissionsEdit,disabled:e.saving||!e.canSetEdit},on:{"update:checked":function(t){e.canEdit=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow editing"))+"\n\t\t\t")]),e._v(" "),e.isFolder?t("NcActionCheckbox",{ref:"canCreate",attrs:{checked:e.canCreate,value:e.permissionsCreate,disabled:e.saving||!e.canSetCreate},on:{"update:checked":function(t){e.canCreate=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow creating"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isFolder?t("NcActionCheckbox",{ref:"canDelete",attrs:{checked:e.canDelete,value:e.permissionsDelete,disabled:e.saving||!e.canSetDelete},on:{"update:checked":function(t){e.canDelete=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):e._e(),e._v(" "),e.config.isResharingAllowed?t("NcActionCheckbox",{ref:"canReshare",attrs:{checked:e.canReshare,value:e.permissionsShare,disabled:e.saving||!e.canSetReshare},on:{"update:checked":function(t){e.canReshare=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isSetDownloadButtonVisible?t("NcActionCheckbox",{ref:"canDownload",attrs:{checked:e.canDownload,disabled:e.saving||!e.canSetDownload},on:{"update:checked":function(t){e.canDownload=t}}},[e._v("\n\t\t\t\t"+e._s(e.allowDownloadText)+"\n\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.hasExpirationDate,disabled:e.config.isDefaultInternalExpireDateEnforced||e.saving},on:{"update:checked":function(t){e.hasExpirationDate=t},uncheck:e.onExpirationDisable}},[e._v("\n\t\t\t\t"+e._s(e.config.isDefaultInternalExpireDateEnforced?e.t("files_sharing","Expiration date enforced"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcActionInput",{ref:"expireDate",class:{error:e.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:e.saving,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t\t")]):e._e(),e._v(" "),e.canHaveNote?[t("NcActionCheckbox",{attrs:{checked:e.hasNote,disabled:e.saving},on:{"update:checked":function(t){e.hasNote=t},uncheck:function(t){return e.queueUpdate("note")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),e._v(" "),e.hasNote?t("NcActionTextEditable",{ref:"note",class:{error:e.errors.note},attrs:{disabled:e.saving,value:e.share.newNote||e.share.note,icon:"icon-edit"},on:{"update:value":e.onNoteChange,submit:e.onNoteSubmit}}):e._e()]:e._e()]:e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t\t")]):e._e()],2)],1)}),[],!1,null,"13a6a5f0",null);function Mt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Wt={name:"SharingList",components:{SharingEntry:Bt.exports},mixins:[b],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 e=this;return function(t){return(n=e.shares,function(e){if(Array.isArray(e))return Mt(e)}(n)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return Mt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Mt(e,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.")}()).filter((function(n){return t.type===e.SHARE_TYPES.SHARE_TYPE_USER&&t.shareWithDisplayName===n.shareWithDisplayName})).length<=1;var n}}},methods:{removeShare:function(e){var t=this.shares.findIndex((function(t){return t===e}));this.shares.splice(t,1)}}},Ft=(0,W.Z)(Wt,(function(){var e=this,t=e._self._c;return t("ul",{staticClass:"sharing-sharee-list"},e._l(e.shares,(function(n){return t("SharingEntry",{key:n.id,attrs:{"file-info":e.fileInfo,share:n,"is-unique":e.isUnique(n)},on:{"remove:share":e.removeShare}})})),1)}),[],!1,null,null,null).exports,qt=r(25108);function Zt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function $t(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function Gt(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){$t(a,r,i,s,o,"next",e)}function o(e){$t(a,r,i,s,o,"throw",e)}s(void 0)}))}}var Vt={name:"SharingTab",components:{NcAvatar:l(),CollectionList:s.G,SharingEntryInternal:z,SharingEntrySimple:F,SharingInherited:Je,SharingInput:Pe,SharingLinkList:Nt,SharingList:Ft},mixins:[b],data:function(){return{config:new p,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,h.j)("core","projects_enabled",!1)}},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(e){var t=this;return Gt(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:t.fileInfo=e,t.resetState(),t.getShares();case 3:case"end":return n.stop()}}),n)})))()},getShares:function(){var e=this;return Gt(regeneratorRuntime.mark((function n(){var r,i,a,s,c,l,h,d,f,p,g,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,e.loading=!0,r=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),i="json",a=(e.fileInfo.path+"/"+e.fileInfo.name).replace("//","/"),s=u.default.get(r,{params:{format:i,path:a,reshares:!0}}),c=u.default.get(r,{params:{format:i,path:a,shared_with_me:!0}}),n.next=9,Promise.all([s,c]);case 9:l=n.sent,y=2,h=function(e){if(Array.isArray(e))return e}(v=l)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,s,o=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(o.push(r.value),o.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(l)throw i}}return o}}(v,y)||function(e,t){if(e){if("string"==typeof e)return Zt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Zt(e,t):void 0}}(v,y)||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.")}(),d=h[0],f=h[1],e.loading=!1,e.processSharedWithMe(f),e.processShares(d),n.next=23;break;case 18:n.prev=18,n.t0=n.catch(0),null!==(p=n.t0.response.data)&&void 0!==p&&null!==(g=p.ocs)&&void 0!==g&&null!==(m=g.meta)&&void 0!==m&&m.message?e.error=n.t0.response.data.ocs.meta.message:e.error=t("files_sharing","Unable to load the shares list"),e.loading=!1,qt.error("Error loading the shares list",n.t0);case 23:case"end":return n.stop()}var v,y}),n,null,[[0,18]])})))()},resetState:function(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle:function(e){var n=moment(e.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*n)})),moment().unix()>n&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares:function(e){var t=this,n=e.data;if(n.ocs&&n.ocs.data&&n.ocs.data.length>0){var r=n.ocs.data.map((function(e){return new A(e)})).sort((function(e,t){return t.createdTime-e.createdTime}));this.linkShares=r.filter((function(e){return e.type===t.SHARE_TYPES.SHARE_TYPE_LINK||e.type===t.SHARE_TYPES.SHARE_TYPE_EMAIL})),this.shares=r.filter((function(e){return e.type!==t.SHARE_TYPES.SHARE_TYPE_LINK&&e.type!==t.SHARE_TYPES.SHARE_TYPE_EMAIL})),qt.debug("Processed",this.linkShares.length,"link share(s)"),qt.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe:function(e){var n=e.data;if(n.ocs&&n.ocs.data&&n.ocs.data[0]){var r=new A(n),i=function(e){return e.type===g.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===g.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===g.D.SHARE_TYPE_ROOM?e.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:e.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(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(e):this.shares.unshift(e),this.awaitForShare(e,t)},awaitForShare:function(e,t){var n=this.$refs.shareList;e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(n=this.$refs.linkShareList),this.$nextTick((function(){var r=n.$children.find((function(t){return t.share===e}));r&&t(r)}))}}},Kt=Vt,Qt=r(64727),zt={};zt.styleTagTransform=j(),zt.setAttributes=L(),zt.insert=N().bind(null,"head"),zt.domAPI=R(),zt.insertStyleElement=U(),D()(Qt.Z,zt),Qt.Z&&Qt.Z.locals&&Qt.Z.locals;var Jt=(0,W.Z)(Kt,(function(){var e=this,t=e._self._c;return t("div",{class:{"icon-loading":e.loading}},[e.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:e.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),e._v(" "),t("h2",[e._v(e._s(e.error))])]):t("div",{staticClass:"sharingTab__content"},[e.isSharedWithMe?t("SharingEntrySimple",e._b({staticClass:"sharing-entry__reshare",scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.sharedWithMe.user,"display-name":e.sharedWithMe.displayName}})]},proxy:!0}],null,!1,3197855346)},"SharingEntrySimple",e.sharedWithMe,!1)):e._e(),e._v(" "),e.loading?e._e():t("SharingInput",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,"link-shares":e.linkShares,reshare:e.reshare,shares:e.shares},on:{"add:share":e.addShare}}),e._v(" "),e.loading?e._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,shares:e.linkShares}}),e._v(" "),e.loading?e._e():t("SharingList",{ref:"shareList",attrs:{shares:e.shares,"file-info":e.fileInfo}}),e._v(" "),e.canReshare&&!e.loading?t("SharingInherited",{attrs:{"file-info":e.fileInfo}}):e._e(),e._v(" "),t("SharingEntryInternal",{attrs:{"file-info":e.fileInfo}}),e._v(" "),e.projectsEnabled&&e.fileInfo?t("CollectionList",{attrs:{id:"".concat(e.fileInfo.id),type:"file",name:e.fileInfo.name}}):e._e()],1),e._v(" "),e._l(e.sections,(function(n,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(n(e.$refs["section-"+r],e.fileInfo),{tag:"component",attrs:{"file-info":e.fileInfo}})],1)}))],2)}),[],!1,null,"56c61b11",null).exports,Xt=r(25108);function en(e){return en="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},en(e)}function tn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,nn(r.key),r)}}function nn(e){var t=function(e,t){if("object"!==en(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==en(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===en(t)?t:String(t)}var rn=function(){function e(){var t,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t=this,r=void 0,(n=nn(n="_state"))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,this._state={},this._state.results=[],Xt.debug("OCA.Sharing.ShareSearch initialized")}var t,n;return t=e,(n=[{key:"state",get:function(){return this._state}},{key:"addNewResult",value:function(e){return""!==e.displayName.trim()&&"function"==typeof e.handler?(this._state.results.push(e),!0):(Xt.error("Invalid search result provided",e),!1)}}])&&tn(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),an=r(25108);function sn(e){return sn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sn(e)}function on(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,cn(r.key),r)}}function cn(e){var t=function(e,t){if("object"!==sn(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==sn(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===sn(t)?t:String(t)}var ln=function(){function e(){var t,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t=this,r=void 0,(n=cn(n="_state"))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,this._state={},this._state.actions=[],an.debug("OCA.Sharing.ExternalLinkActions initialized")}var t,n;return t=e,(n=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(e){return an.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"===sn(e)&&e.icon&&e.name&&e.url?(this._state.actions.push(e),!0):(an.error("Invalid action provided",e),!1)}}])&&on(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),un=r(25108);function hn(e){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hn(e)}function dn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,fn(r.key),r)}}function fn(e){var t=function(e,t){if("object"!==hn(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==hn(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===hn(t)?t:String(t)}var pn=function(){function e(){var t,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t=this,r=void 0,(n=fn(n="_state"))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,this._state={},this._state.actions=[],un.debug("OCA.Sharing.ExternalShareActions initialized")}var t,n;return t=e,(n=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(e){return"object"===hn(e)&&"string"==typeof e.id&&"function"==typeof e.data&&Array.isArray(e.shareType)&&"object"===hn(e.handlers)&&Object.values(e.handlers).every((function(e){return"function"==typeof e}))?this._state.actions.findIndex((function(t){return t.id===e.id}))>-1?(un.error("An action with the same id ".concat(e.id," already exists"),e),!1):(this._state.actions.push(e),!0):(un.error("Invalid action provided",e),!1)}}])&&dn(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function gn(e){return gn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},gn(e)}function mn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,vn(r.key),r)}}function vn(e){var t=function(e,t){if("object"!==gn(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==gn(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===gn(t)?t:String(t)}var yn=function(){function e(){var t,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t=this,r=void 0,(n=vn(n="_sections"))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,this._sections=[]}var t,n;return t=e,(n=[{key:"registerSection",value:function(e){this._sections.push(e)}},{key:"getSections",value:function(){return this._sections}}])&&mn(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),_n=r(44582);function An(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new rn}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new ln}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new pn}),Object.assign(window.OCA.Sharing,{ShareTabSections:new yn}),i.ZP.prototype.t=a.Iu,i.ZP.prototype.n=a.uN;var bn=i.ZP.extend(Jt),wn=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,a.Iu)("files_sharing","Sharing"),iconSvg:_n,mount:function(e,t,n){return(r=regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return wn&&wn.$destroy(),wn=new bn({parent:n}),r.next=4,wn.update(t);case 4:wn.$mount(e);case 5:case"end":return r.stop()}}),r)})),function(){var e=this,t=arguments;return new Promise((function(n,i){var a=r.apply(e,t);function s(e){An(a,n,i,s,o,"next",e)}function o(e){An(a,n,i,s,o,"throw",e)}s(void 0)}))})();var r},update:function(e){wn.update(e)},destroy:function(){wn.$destroy(),wn=null}}))}))},73286:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".error[data-v-5e957d09] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AAEC,uDACC,mCAAA",sourcesContent:["\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]),t.Z=s},24196:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry[data-v-13a6a5f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-13a6a5f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-13a6a5f0]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-13a6a5f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-13a6a5f0]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AACA,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.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:""}]),t.Z=s},24147:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry[data-v-23251e4a]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-23251e4a]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-23251e4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-23251e4a]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AACA,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.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:""}]),t.Z=s},66828:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry__internal .avatar-external[data-v-69e43ddc]{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-69e43ddc]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\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:""}]),t.Z=s},14430:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry[data-v-1f50aaec]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1f50aaec]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-1f50aaec]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-1f50aaec]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-1f50aaec]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-1f50aaec] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-1f50aaec]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-1f50aaec]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-1f50aaec]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-1f50aaec],.sharing-entry .action-item~.sharing-entry__loading[data-v-1f50aaec]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-1f50aaec]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,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.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\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\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:""}]),t.Z=s},3335:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry[data-v-9fd256bc]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-9fd256bc]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-9fd256bc]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-9fd256bc]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-9fd256bc]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\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\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]),t.Z=s},15869:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA",sourcesContent:['\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for="sharing-search-input"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]),t.Z=s},16843:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry__inherited .avatar-shared[data-v-3462b966]{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:"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\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:""}]),t.Z=s},64727:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".emptyContentWithSections[data-v-56c61b11]{margin:1rem auto}.sharingTab__content[data-v-56c61b11]{padding:0 6px}.sharingTab__additionalContent[data-v-56c61b11]{margin:44px 0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA",sourcesContent:["\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n"],sourceRoot:""}]),t.Z=s}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=n,e=[],i.O=function(t,n,r,a){if(!n){var s=1/0;for(u=0;u<e.length;u++){n=e[u][0],r=e[u][1],a=e[u][2];for(var o=!0,c=0;c<n.length;c++)(!1&a||s>=a)&&Object.keys(i.O).every((function(e){return i.O[e](n[c])}))?n.splice(c--,1):(o=!1,a<s&&(s=a));if(o){e.splice(u--,1);var l=r();void 0!==l&&(t=l)}}return t}a=a||0;for(var u=e.length;u>0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[n,r,a]},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},i.j=7870,function(){i.b=document.baseURI||self.location.href;var e={7870:0};i.O.j=function(t){return 0===e[t]};var t=function(t,n){var r,a,s=n[0],o=n[1],c=n[2],l=0;if(s.some((function(t){return 0!==e[t]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(c)var u=c(i)}for(t&&t(n);l<s.length;l++)a=s[l],i.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(75104)}));a=i.O(a)}();
-//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=81302de9445594087b16 \ No newline at end of file
+!function(){"use strict";var e,n={84017:function(e,n,r){var i=r(20144),a=r(31352),s=r(1794),o=r(79753),c=r(75925),l=r.n(c),u=r(4820),h=r(79954);function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,i=function(e,t){if("object"!==d(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==d(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key,"string"),"symbol"===d(i)?i:String(i)),r)}var i}var p=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,n;return t=e,(n=[{key:"isPublicUploadEnabled",get:function(){return document.getElementsByClassName("files-filestable")[0]&&"yes"===document.getElementsByClassName("files-filestable")[0].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:"defaultExpirationDate",get:function(){return this.isDefaultExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}},{key:"defaultInternalExpirationDate",get:function(){return this.isDefaultInternalExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}},{key:"defaultRemoteExpirationDateString",get:function(){return this.isDefaultRemoteExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}},{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:"isDefaultRemoteExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){var e,t,n,r=OC.getCapabilities();return void 0!==(null==r||null===(e=r.files_sharing)||void 0===e?void 0:e.sharebymail)&&!0===(null==r||null===(t=r.files_sharing)||void 0===t||null===(n=t.public)||void 0===n?void 0:n.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 e,t;return!0===(null===(e=OC.getCapabilities().files_sharing)||void 0===e||null===(t=e.sharee)||void 0===t?void 0:t.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 e=OC.getCapabilities();return e.password_policy?e.password_policy:{}}}])&&f(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),g=r(41922),m=r(25108);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,_(r.key),r)}}function _(e){var t=function(e,t){if("object"!==v(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==v(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===v(t)?t:String(t)}var A=function(){function e(t){var n,r,i,a;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r=this,a=void 0,(i=_(i="_share"))in r?Object.defineProperty(r,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[i]=a,t.ocs&&t.ocs.data&&t.ocs.data[0]&&(t=t.ocs.data[0]),t.hide_download=!!t.hide_download,t.mail_send=!!t.mail_send,t.attributes)try{t.attributes=JSON.parse(t.attributes)}catch(e){m.warn('Could not parse share attributes returned by server: "'+t.attributes+'"')}t.attributes=null!==(n=t.attributes)&&void 0!==n?n:[],this._share=t}var t,n;return t=e,(n=[{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(e){this._share.permissions=e}},{key:"attributes",get:function(){return this._share.attributes}},{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(e){this._share.expiration=e}},{key:"token",get:function(){return this._share.token}},{key:"note",get:function(){return this._share.note},set:function(e){this._share.note=e}},{key:"label",get:function(){return this._share.label},set:function(e){this._share.label=e}},{key:"mailSend",get:function(){return!0===this._share.mail_send}},{key:"hideDownload",get:function(){return!0===this._share.hide_download},set:function(e){this._share.hide_download=!0===e}},{key:"password",get:function(){return this._share.password},set:function(e){this._share.password=e}},{key:"passwordExpirationTime",get:function(){return this._share.password_expiration_time},set:function(e){this._share.password_expiration_time=e}},{key:"sendPasswordByTalk",get:function(){return this._share.send_password_by_talk},set:function(e){this._share.send_password_by_talk=e}},{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:"hasDownloadPermission",get:function(){for(var e in this._share.attributes){var t=this._share.attributes[e];if("permissions"===t.scope&&"download"===t.key)return t.enabled}return!0},set:function(e){this.setAttribute("permissions","download",!!e)}},{key:"setAttribute",value:function(e,t,n){var r={scope:e,key:t,enabled:n};for(var i in this._share.attributes){var a=this._share.attributes[i];if(a.scope===r.scope&&a.key===r.key)return void(this._share.attributes[i]=r)}this._share.attributes.push(r)}},{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}}])&&y(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),b={data:function(){return{SHARE_TYPES:g.D}}},w=r(64024),E=r(76212),S=r.n(E),C=r(12945),x=r.n(C),k={name:"SharingEntrySimple",components:{NcActions:x()},props:{title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue:function(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}},P=r(93379),D=r.n(P),T=r(7795),R=r.n(T),N=r(90569),O=r.n(N),I=r(3565),L=r.n(I),H=r(19216),Y=r.n(H),U=r(44589),j=r.n(U),M=r(3335),B={};B.styleTagTransform=j(),B.setAttributes=L(),B.insert=O().bind(null,"head"),B.domAPI=R(),B.insertStyleElement=Y(),D()(M.Z,B),M.Z&&M.Z.locals&&M.Z.locals;var W=r(51900),F=(0,W.Z)(k,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[e._t("avatar"),e._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title"},[e._v(e._s(e.title))]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e()]),e._v(" "),e.$slots.default?t("NcActions",{ref:"actionsComponent",staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":e.ariaExpandedValue}},[e._t("default")],2):e._e()],2)}),[],!1,null,"9fd256bc",null).exports,q=r(25108);function Z(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}var $={name:"SharingEntryInternal",components:{NcActionLink:S(),SharingEntrySimple:F},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,o.generateUrl)("/f/")+this.fileInfo.id},copyLinkTooltip:function(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy internal link 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 e,n=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,navigator.clipboard.writeText(n.internalLink);case 3:(0,w.s$)(t("files_sharing","Link copied")),n.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),n.copySuccess=!0,n.copied=!0,e.next=14;break;case 9:e.prev=9,e.t0=e.catch(0),n.copySuccess=!1,n.copied=!0,q.error(e.t0);case 14:return e.prev=14,setTimeout((function(){n.copySuccess=!1,n.copied=!1}),4e3),e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[0,9,14,17]])})),function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){Z(a,r,i,s,o,"next",e)}function o(e){Z(a,r,i,s,o,"throw",e)}s(void 0)}))})()}}},G=$,V=r(66828),K={};K.styleTagTransform=j(),K.setAttributes=L(),K.insert=O().bind(null,"head"),K.domAPI=R(),K.insertStyleElement=Y(),D()(V.Z,K),V.Z&&V.Z.locals&&V.Z.locals;var Q=(0,W.Z)(G,(function(){var e=this,t=e._self._c;return t("ul",[t("SharingEntrySimple",{ref:"shareEntrySimple",staticClass:"sharing-entry__internal",attrs:{title:e.t("files_sharing","Internal link"),subtitle:e.internalLinkSubtitle},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[e._v(" "),t("NcActionLink",{attrs:{href:e.internalLink,"aria-label":e.copyLinkTooltip,title:e.copyLinkTooltip,target:"_blank",icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1)],1)}),[],!1,null,"69e43ddc",null),z=Q.exports,J=r(45994),X=r(78595),ee=r(20296),te=r.n(ee),ne=r(36456),re=r.n(ne),ie=r(25108);function ae(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function se(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){ae(a,r,i,s,o,"next",e)}function o(e){ae(a,r,i,s,o,"throw",e)}s(void 0)}))}}var oe=new p,ce="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";function le(){return ue.apply(this,arguments)}function ue(){return(ue=se(regeneratorRuntime.mark((function e(){var n,r,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!oe.passwordPolicy.api||!oe.passwordPolicy.api.generate){e.next=14;break}return e.prev=1,e.next=4,u.default.get(oe.passwordPolicy.api.generate);case 4:if(!(n=e.sent).data.ocs.data.password){e.next=8;break}return(0,w.s$)(t("files_sharing","Password created successfully")),e.abrupt("return",n.data.ocs.data.password);case 8:e.next=14;break;case 10:e.prev=10,e.t0=e.catch(1),ie.info("Error generating password from password_policy",e.t0),(0,w.x2)(t("files_sharing","Error generating password from password policy"));case 14:for(r=new Uint8Array(10),i=ce.length/255,self.crypto.getRandomValues(r),a="",s=0;s<r.length;s++)a+=ce.charAt(r[s]*i);return e.abrupt("return",a);case 20:case"end":return e.stop()}}),e,null,[[1,10]])})))).apply(this,arguments)}r(35449);var he=r(25108);function de(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function fe(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){de(a,r,i,s,o,"next",e)}function o(e){de(a,r,i,s,o,"throw",e)}s(void 0)}))}}var pe=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),ge={methods:{createShare:function(e){return fe(regeneratorRuntime.mark((function n(){var r,i,a,s,o,c,l,h,d,f,p,g,m,v,y,_,b;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=e.path,i=e.permissions,a=e.shareType,s=e.shareWith,o=e.publicUpload,c=e.password,l=e.sendPasswordByTalk,h=e.expireDate,d=e.label,f=e.attributes,n.prev=1,n.next=4,u.default.post(pe,{path:r,permissions:i,shareType:a,shareWith:s,publicUpload:o,password:c,sendPasswordByTalk:l,expireDate:h,label:d,attributes:f});case 4:if(null!=(g=n.sent)&&null!==(p=g.data)&&void 0!==p&&p.ocs){n.next=7;break}throw g;case 7:return n.abrupt("return",new A(g.data.ocs.data));case 10:throw n.prev=10,n.t0=n.catch(1),he.error("Error while creating share",n.t0),b=null===n.t0||void 0===n.t0||null===(m=n.t0.response)||void 0===m||null===(v=m.data)||void 0===v||null===(y=v.ocs)||void 0===y||null===(_=y.meta)||void 0===_?void 0:_.message,OC.Notification.showTemporary(b?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:b}):t("files_sharing","Error creating the share"),{type:"error"}),n.t0;case 16:case"end":return n.stop()}}),n,null,[[1,10]])})))()},deleteShare:function(e){return fe(regeneratorRuntime.mark((function n(){var r,i,a,s,o,c,l;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,u.default.delete(pe+"/".concat(e));case 3:if(null!=(i=n.sent)&&null!==(r=i.data)&&void 0!==r&&r.ocs){n.next=6;break}throw i;case 6:return n.abrupt("return",!0);case 9:throw n.prev=9,n.t0=n.catch(0),he.error("Error while deleting share",n.t0),l=null===n.t0||void 0===n.t0||null===(a=n.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"}),n.t0;case 15:case"end":return n.stop()}}),n,null,[[0,9]])})))()},updateShare:function(e,n){return fe(regeneratorRuntime.mark((function r(){var i,a,s,o,c,l,h,d;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,u.default.put(pe+"/".concat(e),n);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),he.error("Error while updating share",r.t0),400!==r.t0.response.status&&(h=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(h?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:h}):t("files_sharing","Error updating the share"),{type:"error"})),d=r.t0.response.data.ocs.meta.message,new Error(d);case 17:case"end":return r.stop()}}),r,null,[[0,11]])})))()}}},me=r(25108);function ve(e){return ve="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ve(e)}function ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ye(Object(n),!0).forEach((function(t){Ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ye(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ae(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==ve(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==ve(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===ve(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function be(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function we(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){be(a,r,i,s,o,"next",e)}function o(e){be(a,r,i,s,o,"throw",e)}s(void 0)}))}}var Ee={name:"SharingInput",components:{NcSelect:re()},mixins:[b,ge],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:A,default:null},canReshare:{type:Boolean,required:!0}},data:function(){return{config:new p,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[],value:null}},computed:{externalResults:function(){return this.ShareSearch.results},inputPlaceholder:function(){var e=this.config.isRemoteShareAllowed;return this.canReshare?e?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:{handleOpen:function(){(0,X.j8)("viewer:trapElements:changed",this.$refs.select.$el)},asyncFind:function(e){var t=this;return we(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t.query=e.trim(),!t.isValidQuery){n.next=5;break}return t.loading=!0,n.next=5,t.debounceGetSuggestions(e);case 5:case"end":return n.stop()}}),n)})))()},getSuggestions:function(e){var n=arguments,r=this;return we(regeneratorRuntime.mark((function i(){var a,s,c,l,h,d,f,p,g,m,v,y,_;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=n.length>1&&void 0!==n[1]&&n[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,r.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH],!0===OC.getCapabilities().files_sharing.public.enabled&&s.push(r.SHARE_TYPES.SHARE_TYPE_EMAIL),c=null,i.prev=6,i.next=9,u.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===r.fileInfo.type?"folder":"file",search:e,lookup:a,perPage:r.config.maxAutocompleteResults,shareType:s}});case 9:c=i.sent,i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(6),me.error("Error fetching suggestions",i.t0),i.abrupt("return");case 16:l=c.data.ocs.data,h=c.data.ocs.data.exact,l.exact=[],d=Object.values(h).reduce((function(e,t){return e.concat(t)}),[]),f=Object.values(l).reduce((function(e,t){return e.concat(t)}),[]),p=r.filterOutExistingShares(d).map((function(e){return r.formatForMultiselect(e)})).sort((function(e,t){return e.shareType-t.shareType})),g=r.filterOutExistingShares(f).map((function(e){return r.formatForMultiselect(e)})).sort((function(e,t){return e.shareType-t.shareType})),m=[],l.lookupEnabled&&!a&&m.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0}),v=r.externalResults.filter((function(e){return!e.condition||e.condition(r)})),y=p.concat(g).concat(v).concat(m),_=y.reduce((function(e,t){return t.displayName?(e[t.displayName]||(e[t.displayName]=0),e[t.displayName]++,e):e}),{}),r.suggestions=y.map((function(e){return _[e.displayName]>1&&!e.desc?_e(_e({},e),{},{desc:e.shareWithDisplayNameUnique}):e})),r.loading=!1,me.info("suggestions",r.suggestions);case 31:case"end":return i.stop()}}),i,null,[[6,12]])})))()},debounceGetSuggestions:te()((function(){this.getSuggestions.apply(this,arguments)}),300),getRecommendations:function(){var e=this;return we(regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading=!0,n=null,t.prev=2,t.next=5,u.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:e.fileInfo.type}});case 5:n=t.sent,t.next=12;break;case 8:return t.prev=8,t.t0=t.catch(2),me.error("Error fetching recommendations",t.t0),t.abrupt("return");case 12:r=e.externalResults.filter((function(t){return!t.condition||t.condition(e)})),i=Object.values(n.data.ocs.data.exact).reduce((function(e,t){return e.concat(t)}),[]),e.recommendations=e.filterOutExistingShares(i).map((function(t){return e.formatForMultiselect(t)})).concat(r),e.loading=!1,me.info("recommendations",e.recommendations);case 17:case"end":return t.stop()}}),t,null,[[2,8]])})))()},filterOutExistingShares:function(e){var t=this;return e.reduce((function(e,n){if("object"!==ve(n))return e;try{if(n.value.shareType===t.SHARE_TYPES.SHARE_TYPE_USER){if(n.value.shareWith===(0,J.ts)().uid)return e;if(t.reshare&&n.value.shareWith===t.reshare.owner)return e}if(n.value.shareType===t.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==t.linkShares.map((function(e){return e.shareWith})).indexOf(n.value.shareWith.trim()))return e}else{var r=t.shares.reduce((function(e,t){return e[t.shareWith]=t.type,e}),{}),i=n.value.shareWith.trim();if(i in r&&r[i]===n.value.shareType)return e}e.push(n)}catch(t){return e}return e}),[])},shareTypeToIcon:function(e){switch(e){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return{icon:"icon-user",iconTitle:t("files_sharing","Guest")};case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return{icon:"icon-group",iconTitle:t("files_sharing","Group")};case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return{icon:"icon-mail",iconTitle:t("files_sharing","Email")};case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return{icon:"icon-circle",iconTitle:t("files_sharing","Circle")};case this.SHARE_TYPES.SHARE_TYPE_ROOM:return{icon:"icon-room",iconTitle:t("files_sharing","Talk conversation")};case this.SHARE_TYPES.SHARE_TYPE_DECK:return{icon:"icon-deck",iconTitle:t("files_sharing","Deck board")};case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return{icon:"icon-sciencemesh",iconTitle:t("files_sharing","Science Mesh")};default:return{}}},formatForMultiselect:function(e){var n,r;if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)n=null!==(r=e.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!e.value.server)if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)n=e.value.shareWith;else{var i;n=null!==(i=e.shareWithDescription)&&void 0!==i?i:""}else n=t("files_sharing","on {server}",{server:e.value.server});return _e({id:"".concat(e.value.shareType,"-").concat(e.value.shareWith),shareWith:e.value.shareWith,shareType:e.value.shareType,user:e.uuid||e.value.shareWith,isNoUser:e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:e.name||e.label,subtitle:n,shareWithDisplayNameUnique:e.shareWithDisplayNameUnique||""},this.shareTypeToIcon(e.value.shareType))},addShare:function(e){var t=this;return we(regeneratorRuntime.mark((function n(){var r,i,a,s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t.value=null,!e.lookup){n.next=6;break}return n.next=4,t.getSuggestions(t.query,!0);case 4:return t.$nextTick((function(){t.$refs.select.$children[0].open=!0})),n.abrupt("return",!0);case 6:if(!e.handler){n.next=12;break}return n.next=9,e.handler(t);case 9:return r=n.sent,t.$emit("add:share",new A(r)),n.abrupt("return",!0);case 12:if(t.loading=!0,me.debug("Adding a new share from the input for",e),n.prev=14,i=null,!t.config.enforcePasswordForPublicLink||e.shareType!==t.SHARE_TYPES.SHARE_TYPE_EMAIL){n.next=20;break}return n.next=19,le();case 19:i=n.sent;case 20:return a=(t.fileInfo.path+"/"+t.fileInfo.name).replace("//","/"),n.next=23,t.createShare({path:a,shareType:e.shareType,shareWith:e.shareWith,password:i,permissions:t.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions,attributes:JSON.stringify(t.fileInfo.shareAttributes)});case 23:if(s=n.sent,!i){n.next=32;break}return s.newPassword=i,n.next=28,new Promise((function(e){t.$emit("add:share",s,e)}));case 28:n.sent.open=!0,n.next=33;break;case 32:t.$emit("add:share",s);case 33:return n.next=35,t.getRecommendations();case 35:n.next=42;break;case 37:n.prev=37,n.t0=n.catch(14),t.$nextTick((function(){t.$refs.select.$children[0].open=!0})),t.query=e.shareWith,me.error("Error while adding new share",n.t0);case 42:return n.prev=42,t.loading=!1,n.finish(42);case 45:case"end":return n.stop()}}),n,null,[[14,37,42,45]])})))()}}},Se=Ee,Ce=r(49082),xe={};xe.styleTagTransform=j(),xe.setAttributes=L(),xe.insert=O().bind(null,"head"),xe.domAPI=R(),xe.insertStyleElement=Y(),D()(Ce.Z,xe),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ke=(0,W.Z)(Se,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharing-search"},[t("label",{attrs:{for:"sharing-search-input"}},[e._v(e._s(e.t("files_sharing","Search for share recipients")))]),e._v(" "),t("NcSelect",{ref:"select",staticClass:"sharing-search__input",attrs:{id:"sharing-search-input",disabled:!e.canReshare,loading:e.loading,filterable:!1,placeholder:e.inputPlaceholder,"clear-search-on-blur":function(){return!1},"user-select":!0,options:e.options},on:{open:e.handleOpen,search:e.asyncFind,"option:selected":e.addShare},scopedSlots:e._u([{key:"no-options",fn:function(t){var n=t.search;return[e._v("\n\t\t\t"+e._s(n?e.noResultText:e.t("files_sharing","No recommendations. Start typing."))+"\n\t\t")]}}]),model:{value:e.value,callback:function(t){e.value=t},expression:"value"}})],1)}),[],!1,null,null,null),Pe=ke.exports,De=r(45400),Te=r.n(De),Re=r(65358),Ne=r(1162),Oe=r.n(Ne),Ie=r(25746),Le=r(25108);function He(e){return He="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},He(e)}function Ye(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function Ue(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){Ye(a,r,i,s,o,"next",e)}function o(e){Ye(a,r,i,s,o,"throw",e)}s(void 0)}))}}var je={mixins:[ge,b],props:{fileInfo:{type:Object,default:function(){},required:!0},share:{type:A,default:null},isUnique:{type:Boolean,default:!0}},data:function(){var e;return{config:new p,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new Ie.Z({concurrency:1}),reactiveState:null===(e=this.share)||void 0===e?void 0:e.state}},computed:{hasNote:{get:function(){return""!==this.share.note},set:function(e){this.share.note=e?null:""}},dateTomorrow:function(){return new Date((new Date).setDate((new Date).getDate()+1))},lang:function(){var e=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],t=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:t,weekdaysMin:e,weekdaysShort:e},monthFormat:"MMM"}},isShareOwner:function(){return this.share&&this.share.owner===(0,J.ts)().uid}},methods:{checkShare:function(e){return(!e.password||"string"==typeof e.password&&""!==e.password.trim())&&!(e.expirationDate&&!e.expirationDate.isValid())},parseDateString:function(e){var t;if(e)return new Date(null===(t=e.match(/([0-9]{4}-[0-9]{2}-[0-9]{2})/i))||void 0===t?void 0:t.pop())},formatDateToString:function(e){return new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())).toISOString().split("T")[0]},onExpirationChange:function(e){this.share.expireDate=this.formatDateToString(e),this.queueUpdate("expireDate")},onExpirationDisable:function(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange:function(e){this.$set(this.share,"newNote",e.trim())},onNoteSubmit:function(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},onDelete:function(){var e=this;return Ue(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,e.loading=!0,e.open=!1,n.next=5,e.deleteShare(e.share.id);case 5:Le.debug("Share deleted",e.share.id),r="file"===e.share.itemType?t("files_sharing",'File "{path}" has been unshared',{path:e.share.path}):t("files_sharing",'Folder "{path}" has been unshared',{path:e.share.path}),(0,w.s$)(r),e.$emit("remove:share",e.share),n.next=14;break;case 11:n.prev=11,n.t0=n.catch(0),e.open=!0;case 14:return n.prev=14,e.loading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[0,11,14,17]])})))()},queueUpdate:function(){for(var e=this,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];if(0!==r.length){if(this.share.id){var a={};return r.forEach((function(t){"object"===He(e.share[t])?a[t]=JSON.stringify(e.share[t]):a[t]=e.share[t].toString()})),void this.updateQueue.add(Ue(regeneratorRuntime.mark((function n(){var i,s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.saving=!0,e.errors={},n.prev=2,n.next=5,e.updateShare(e.share.id,a);case 5:i=n.sent,r.indexOf("password")>=0&&(e.$delete(e.share,"newPassword"),e.share.passwordExpirationTime=i.password_expiration_time),e.$delete(e.errors,r[0]),(0,w.s$)(t("files_sharing","Share {propertyName} saved",{propertyName:r[0]})),n.next=15;break;case 11:n.prev=11,n.t0=n.catch(2),(s=n.t0.message)&&""!==s&&(e.onSyncError(r[0],s),(0,w.x2)(t("files_sharing",s)));case 15:return n.prev=15,e.saving=!1,n.finish(15);case 18:case"end":return n.stop()}}),n,null,[[2,11,15,18]])}))))}Le.debug("Updated local share",this.share)}},onSyncError:function(e,t){switch(this.open=!0,e){case"password":case"pending":case"expireDate":case"label":case"note":this.$set(this.errors,e,t);var n=this.$refs[e];if(n){n.$el&&(n=n.$el);var r=n.querySelector(".focusable");r&&r.focus()}break;case"sendPasswordByTalk":this.$set(this.errors,e,t),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:te()((function(e){this.queueUpdate(e)}),500)}},Me={name:"SharingEntryInherited",components:{NcActionButton:Te(),NcActionLink:S(),NcActionText:Oe(),NcAvatar:l(),SharingEntrySimple:F},mixins:[je],props:{share:{type:A,required:!0}},computed:{viaFileTargetUrl:function(){return(0,o.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName:function(){return(0,Re.EZ)(this.share.viaPath)}}},Be=r(24147),We={};We.styleTagTransform=j(),We.setAttributes=L(),We.insert=O().bind(null,"head"),We.domAPI=R(),We.insertStyleElement=Y(),D()(Be.Z,We),Be.Z&&Be.Z.locals&&Be.Z.locals;var Fe=(0,W.Z)(Me,(function(){var e=this,t=e._self._c;return t("SharingEntrySimple",{key:e.share.id,staticClass:"sharing-entry__inherited",attrs:{title:e.share.shareWithDisplayName},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.share.shareWith,"display-name":e.share.shareWithDisplayName}})]},proxy:!0}])},[e._v(" "),t("NcActionText",{attrs:{icon:"icon-user"}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Added by {initiator}",{initiator:e.share.ownerDisplayName}))+"\n\t")]),e._v(" "),e.share.viaPath&&e.share.viaFileid?t("NcActionLink",{attrs:{icon:"icon-folder",href:e.viaFileTargetUrl}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Via “{folder}”",{folder:e.viaFolderName}))+"\n\t")]):e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t")]):e._e()],1)}),[],!1,null,"23251e4a",null),qe=Fe.exports,Ze=r(25108);function $e(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}var Ge={name:"SharingInherited",components:{NcActionButton:Te(),SharingEntryInherited:qe,SharingEntrySimple:F},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 e,n=this;return(e=regeneratorRuntime.mark((function e(){var r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,e.prev=1,r=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:n.fullPath}),e.next=5,u.default.get(r);case 5:i=e.sent,n.shares=i.data.ocs.data.map((function(e){return new A(e)})).sort((function(e,t){return t.createdTime-e.createdTime})),Ze.info(n.shares),n.loaded=!0,e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"});case 14:return e.prev=14,n.loading=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[1,11,14,17]])})),function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){$e(a,r,i,s,o,"next",e)}function o(e){$e(a,r,i,s,o,"throw",e)}s(void 0)}))})()},resetState:function(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]},removeShare:function(e){var t=this.shares.findIndex((function(t){return t===e}));this.shares.splice(t,1)}}},Ve=Ge,Ke=r(16843),Qe={};Qe.styleTagTransform=j(),Qe.setAttributes=L(),Qe.insert=O().bind(null,"head"),Qe.domAPI=R(),Qe.insertStyleElement=Y(),D()(Ke.Z,Qe),Ke.Z&&Ke.Z.locals&&Ke.Z.locals;var ze=(0,W.Z)(Ve,(function(){var e=this,t=e._self._c;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:e.mainTitle,subtitle:e.subTitle,"aria-expanded":e.showInheritedShares},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[e._v(" "),t("NcActionButton",{attrs:{icon:e.showInheritedSharesIcon,"aria-label":e.toggleTooltip,title:e.toggleTooltip},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.toggleInheritedShares.apply(null,arguments)}}})],1),e._v(" "),e._l(e.shares,(function(n){return t("SharingEntryInherited",{key:n.id,attrs:{"file-info":e.fileInfo,share:n},on:{"remove:share":e.removeShare}})}))],2)}),[],!1,null,"3462b966",null),Je=ze.exports,Xe=r(81807),et=r.n(Xe),tt=r(79570),nt=r.n(tt),rt=r(875),it=r.n(rt),at=r(18074),st=r.n(at),ot={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:function(){return{}}},fileInfo:{type:Object,default:function(){},required:!0},share:{type:A,default:null}},computed:{data:function(){return this.action.data(this)}}},ct=(0,W.Z)(ot,(function(){var e=this;return(0,e._self._c)(e.data.is,e._g(e._b({tag:"Component"},"Component",e.data,!1),e.action.handlers),[e._v("\n\t"+e._s(e.data.text)+"\n")])}),[],!1,null,null,null).exports,lt=r(30158),ut=r.n(lt),ht={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},dt={READ_ONLY:ht.READ,UPLOAD_AND_UPDATE:ht.READ|ht.UPDATE|ht.CREATE|ht.DELETE,FILE_DROP:ht.CREATE,ALL:ht.UPDATE|ht.CREATE|ht.READ|ht.DELETE|ht.SHARE};function ft(e,t){return e!==ht.NONE&&(e&t)===t}function pt(e){return!(!ft(e,ht.READ)&&!ft(e,ht.CREATE)||!ft(e,ht.READ)&&(ft(e,ht.UPDATE)||ft(e,ht.DELETE)))}function gt(e,t){return ft(e,t)?function(e,t){return e&~t}(e,t):function(e,t){return e|t}(e,t)}var mt=r(55976),vt=r(32964),yt={name:"SharePermissionsEditor",components:{NcActionButton:Te(),NcActionCheckbox:et(),NcActionRadio:ut(),Tune:mt.Z,ChevronLeft:vt.default},mixins:[je],data:function(){return{randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:ht,bundledPermissions:dt}},computed:{sharePermissionsSummary:function(){var e=this;return Object.values(this.atomicPermissions).filter((function(t){return e.shareHasPermissions(t)})).map((function(t){switch(t){case e.atomicPermissions.CREATE:return e.t("files_sharing","Upload");case e.atomicPermissions.READ:return e.t("files_sharing","Read");case e.atomicPermissions.UPDATE:return e.t("files_sharing","Edit");case e.atomicPermissions.DELETE:return e.t("files_sharing","Delete");default:return null}})).filter((function(e){return null!==e})).join(", ")},sharePermissionsIsBundle:function(){var e=this;return Object.values(dt).map((function(t){return e.sharePermissionEqual(t)})).filter((function(e){return e})).length>0},sharePermissionsSetIsValid:function(){return pt(this.share.permissions)},isFolder:function(){return"dir"===this.fileInfo.type},fileHasCreatePermission:function(){return!!(this.fileInfo.permissions&ht.CREATE)}},mounted:function(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual:function(e){return(this.share.permissions&~ht.SHARE)===e},shareHasPermissions:function(e){return ft(this.share.permissions,e)},setSharePermissions:function(e){this.share.permissions=e,this.queueUpdate("permissions")},canToggleSharePermissions:function(e){return function(e,t){return pt(gt(e,t))}(this.share.permissions,e)},toggleSharePermissions:function(e){this.share.permissions=gt(this.share.permissions,e),pt(this.share.permissions)&&this.queueUpdate("permissions")}}},_t=r(73286),At={};At.styleTagTransform=j(),At.setAttributes=L(),At.insert=O().bind(null,"head"),At.domAPI=R(),At.insertStyleElement=Y(),D()(_t.Z,At),_t.Z&&_t.Z.locals&&_t.Z.locals;var bt=(0,W.Z)(yt,(function(){var e=this,t=e._self._c;return t("li",[t("ul",[e.isFolder?e._e():t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.UPDATE),disabled:e.saving},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.UPDATE)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Allow editing"))+"\n\t\t")]),e._v(" "),e.isFolder&&e.fileHasCreatePermission&&e.config.isPublicUploadEnabled?[e.showCustomPermissionsForm?t("span",{class:{error:!e.sharePermissionsSetIsValid}},[t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.READ),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.READ)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.READ)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Read"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.CREATE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.CREATE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.CREATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Upload"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.UPDATE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.UPDATE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.UPDATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Edit"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.DELETE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.DELETE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.DELETE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Delete"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionButton",{on:{click:function(t){e.showCustomPermissionsForm=!1}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Bundled permissions"))+"\n\t\t\t\t")])],1):[t("NcActionRadio",{attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.READ_ONLY),value:e.bundledPermissions.READ_ONLY,name:e.randomFormName,disabled:e.saving},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.READ_ONLY)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Read only"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionRadio",{attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.UPLOAD_AND_UPDATE),value:e.bundledPermissions.UPLOAD_AND_UPDATE,disabled:e.saving,name:e.randomFormName},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.UPLOAD_AND_UPDATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Allow upload and editing"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.FILE_DROP),value:e.bundledPermissions.FILE_DROP,disabled:e.saving,name:e.randomFormName},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.FILE_DROP)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","File drop (upload only)"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionButton",{attrs:{title:e.t("files_sharing","Custom permissions")},on:{click:function(t){e.showCustomPermissionsForm=!0}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[e._v("\n\t\t\t\t\t"+e._s(e.sharePermissionsIsBundle?"":e.sharePermissionsSummary)+"\n\t\t\t\t")])]]:e._e()],2)])}),[],!1,null,"5e957d09",null).exports,wt=r(25108);function Et(e){return Et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Et(e)}function St(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function Ct(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){St(a,r,i,s,o,"next",e)}function o(e){St(a,r,i,s,o,"throw",e)}s(void 0)}))}}var xt={name:"SharingEntryLink",components:{NcActions:x(),NcActionButton:Te(),NcActionCheckbox:et(),NcActionInput:nt(),NcActionLink:S(),NcActionText:Oe(),NcActionTextEditable:st(),NcActionSeparator:it(),NcAvatar:l(),ExternalShareAction:ct,SharePermissionsEditor:bt},mixins:[je],props:{canReshare:{type:Boolean,default:!0},index:{type:Number,default:null}},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 this.index>1?t("files_sharing","Share link ({index})",{index:this.index}):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(e){var t=this.config.defaultExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=e?this.formatDateToString(t):"",wt.debug("Expiration date status",e,this.share.expireDate)}},dateMaxEnforced:function(){return this.config.isDefaultExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+this.config.defaultExpireDate)):null},isPasswordProtected:{get:function(){return this.config.enforcePasswordForPublicLink||!!this.share.password},set:function(e){var t=this;return Ct(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(n.t0=i.ZP,n.t1=t.share,!e){n.next=8;break}return n.next=5,le();case 5:n.t2=n.sent,n.next=9;break;case 8:n.t2="";case 9:n.t3=n.t2,n.t0.set.call(n.t0,n.t1,"password",n.t3),i.ZP.set(t.share,"newPassword",t.share.password);case 12:case"end":return n.stop()}}),n)})))()}},passwordExpirationTime:function(){if(null===this.share.passwordExpirationTime)return null;var e=moment(this.share.passwordExpirationTime);return!(e.diff(moment())<0)&&e.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(e){var t=this;return Ct(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:t.share.sendPasswordByTalk=e;case 1:case"end":return n.stop()}}),n)})))()}},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,o.generateUrl)("/s/")+this.share.token},actionsTooltip:function(){return t("files_sharing",'Actions for "{title}"',{title:this.title})},copyLinkTooltip:function(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing",'Copy public link of "{title}" to clipboard',{title:this.title})},externalLegacyLinkActions:function(){return this.ExternalLegacyLinkActions.actions},externalLinkActions:function(){return this.ExternalShareActions.actions.filter((function(e){return e.shareType.includes(g.D.SHARE_TYPE_LINK)||e.shareType.includes(g.D.SHARE_TYPE_EMAIL)}))},isPasswordPolicyEnabled:function(){return"object"===Et(this.config.passwordPolicy)},canChangeHideDownload:function(){return this.fileInfo.shareAttributes.some((function(e){return"download"===e.key&&"permissions"===e.scope&&!1===e.enabled}))}},methods:{onNewLinkShare:function(){var e=this;return Ct(regeneratorRuntime.mark((function n(){var r,i,a,s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e.loading){n.next=2;break}return n.abrupt("return");case 2:if(r={share_type:g.D.SHARE_TYPE_LINK},e.config.isDefaultExpireDateEnforced&&(r.expiration=e.formatDateToString(e.config.defaultExpirationDate)),!e.config.enableLinkPasswordByDefault){n.next=8;break}return n.next=7,le();case 7:r.password=n.sent;case 8:if(!e.config.enforcePasswordForPublicLink&&!e.config.isDefaultExpireDateEnforced){n.next=41;break}if(e.pending=!0,!e.share||e.share.id){n.next=28;break}if(!e.checkShare(e.share)){n.next=25;break}return n.prev=12,n.next=15,e.pushNewLinkShare(e.share,!0);case 15:n.next=22;break;case 17:return n.prev=17,n.t0=n.catch(12),e.pending=!1,wt.error(n.t0),n.abrupt("return",!1);case 22:return n.abrupt("return",!0);case 25:return e.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),n.abrupt("return",!1);case 28:if(!e.config.enforcePasswordForPublicLink){n.next=32;break}return n.next=31,le();case 31:r.password=n.sent;case 32:return i=new A(r),n.next=35,new Promise((function(t){e.$emit("add:share",i,t)}));case 35:a=n.sent,e.open=!1,e.pending=!1,a.open=!0,n.next=44;break;case 41:return s=new A(r),n.next=44,e.pushNewLinkShare(s);case 44:case"end":return n.stop()}}),n,null,[[12,17]])})))()},pushNewLinkShare:function(e,n){var r=this;return Ct(regeneratorRuntime.mark((function i(){var a,s,o,c,l,u,h,d,f;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(i.prev=0,!r.loading){i.next=3;break}return i.abrupt("return",!0);case 3:return r.loading=!0,r.errors={},a=(r.fileInfo.path+"/"+r.fileInfo.name).replace("//","/"),s={path:a,shareType:g.D.SHARE_TYPE_LINK,password:e.password,expireDate:e.expireDate,attributes:JSON.stringify(r.fileInfo.shareAttributes)},wt.debug("Creating link share with options",s),i.next=10,r.createShare(s);case 10:if(o=i.sent,r.open=!1,wt.debug("Link share created",o),!n){i.next=19;break}return i.next=16,new Promise((function(e){r.$emit("update:share",o,e)}));case 16:c=i.sent,i.next=22;break;case 19:return i.next=21,new Promise((function(e){r.$emit("add:share",o,e)}));case 21:c=i.sent;case 22:r.config.enforcePasswordForPublicLink||c.copyLink(),(0,w.s$)(t("sharing","Link share created")),i.next=35;break;case 26:if(i.prev=26,i.t0=i.catch(0),f=null===i.t0||void 0===i.t0||null===(l=i.t0.response)||void 0===l||null===(u=l.data)||void 0===u||null===(h=u.ocs)||void 0===h||null===(d=h.meta)||void 0===d?void 0:d.message){i.next=33;break}return(0,w.x2)(t("sharing","Error while creating the share")),wt.error(i.t0),i.abrupt("return");case 33:throw f.match(/password/i)?r.onSyncError("password",f):f.match(/date/i)?r.onSyncError("expireDate",f):r.onSyncError("pending",f),i.t0;case 35:return i.prev=35,r.loading=!1,i.finish(35);case 38:case"end":return i.stop()}}),i,null,[[0,26,35,38]])})))()},onLabelChange:function(e){this.$set(this.share,"newLabel",e.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 e=this;return Ct(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,navigator.clipboard.writeText(e.shareLink);case 3:(0,w.s$)(t("files_sharing","Link copied")),e.$refs.copyButton.$el.focus(),e.copySuccess=!0,e.copied=!0,n.next=14;break;case 9:n.prev=9,n.t0=n.catch(0),e.copySuccess=!1,e.copied=!0,wt.error(n.t0);case 14:return n.prev=14,setTimeout((function(){e.copySuccess=!1,e.copied=!1}),4e3),n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[0,9,14,17]])})))()},onPasswordChange:function(e){this.$set(this.share,"newPassword",e)},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)}}},kt=xt,Pt=r(14430),Dt={};Dt.styleTagTransform=j(),Dt.setAttributes=L(),Dt.insert=O().bind(null,"head"),Dt.domAPI=R(),Dt.insertStyleElement=Y(),D()(Pt.Z,Dt),Pt.Z&&Pt.Z.locals&&Pt.Z.locals;var Tt=(0,W.Z)(kt,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":e.share}},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":e.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),e._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title",attrs:{title:e.title}},[e._v("\n\t\t\t"+e._s(e.title)+"\n\t\t")]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e()]),e._v(" "),e.share&&!e.isEmailShareType&&e.share.token?t("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("NcActionLink",{attrs:{href:e.shareLink,target:"_blank",title:e.copyLinkTooltip,"aria-label":e.copyLinkTooltip,icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1):e._e(),e._v(" "),e.pending||!e.pendingPassword&&!e.pendingExpirationDate?e.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onMenuClose}},[e.share?[e.share.canEdit&&e.canReshare?[t("NcActionInput",{ref:"label",class:{error:e.errors.label},attrs:{disabled:e.saving,label:e.t("files_sharing","Share label"),value:void 0!==e.share.newLabel?e.share.newLabel:e.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":e.onLabelChange,submit:e.onLabelSubmit}}),e._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":e.canReshare,share:e.share,"file-info":e.fileInfo},on:{"update:share":function(t){e.share=t}}}),e._v(" "),t("NcActionSeparator"),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.share.hideDownload,disabled:e.saving||e.canChangeHideDownload},on:{"update:checked":function(t){return e.$set(e.share,"hideDownload",t)},change:function(t){return e.queueUpdate("hideDownload")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:e.isPasswordProtected,disabled:e.config.enforcePasswordForPublicLink||e.saving},on:{"update:checked":function(t){e.isPasswordProtected=t},uncheck:e.onPasswordDisable}},[e._v("\n\t\t\t\t\t"+e._s(e.config.enforcePasswordForPublicLink?e.t("files_sharing","Password protection (enforced)"):e.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),e._v(" "),e.isPasswordProtected?t("NcActionInput",{ref:"password",staticClass:"share-link-password",class:{error:e.errors.password},attrs:{disabled:e.saving,required:e.config.enforcePasswordForPublicLink,value:e.hasUnsavedPassword?e.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:e.hasUnsavedPassword?"text":"password"},on:{"update:value":e.onPasswordChange,submit:e.onPasswordSubmit}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e.isEmailShareType&&e.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:e.passwordExpirationTime}))+"\n\t\t\t\t")]):e.isEmailShareType&&null!==e.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-error"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e.isPasswordProtectedByTalkAvailable?t("NcActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:e.isPasswordProtectedByTalk,disabled:!e.canTogglePasswordProtectedByTalkAvailable||e.saving},on:{"update:checked":function(t){e.isPasswordProtectedByTalk=t},change:e.onPasswordProtectedByTalkChange}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:e.hasExpirationDate,disabled:e.config.isDefaultExpireDateEnforced||e.saving},on:{"update:checked":function(t){e.hasExpirationDate=t},uncheck:e.onExpirationDisable}},[e._v("\n\t\t\t\t\t"+e._s(e.config.isDefaultExpireDateEnforced?e.t("files_sharing","Expiration date (enforced)"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcActionInput",{ref:"expireDate",staticClass:"share-link-expire-date",class:{error:e.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:e.saving,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.hasNote,disabled:e.saving},on:{"update:checked":function(t){e.hasNote=t},uncheck:function(t){return e.queueUpdate("note")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),e._v(" "),e.hasNote?t("NcActionTextEditable",{ref:"note",class:{error:e.errors.note},attrs:{disabled:e.saving,placeholder:e.t("files_sharing","Enter a note for the share recipient"),value:e.share.newNote||e.share.note,icon:"icon-edit"},on:{"update:value":e.onNoteChange,submit:e.onNoteSubmit}}):e._e()]:e._e(),e._v(" "),t("NcActionSeparator"),e._v(" "),e._l(e.externalLinkActions,(function(n){return t("ExternalShareAction",{key:n.id,attrs:{id:n.id,action:n,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),e._l(e.externalLegacyLinkActions,(function(n,r){var i=n.icon,a=n.url,s=n.name;return t("NcActionLink",{key:r,attrs:{href:a(e.shareLink),icon:i,target:"_blank"}},[e._v("\n\t\t\t\t"+e._s(s)+"\n\t\t\t")])})),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t\t\t")]):e._e(),e._v(" "),!e.isEmailShareType&&e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Add another link"))+"\n\t\t\t")]):e._e()]:e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{title:e.t("files_sharing","Create a new share link"),"aria-label":e.t("files_sharing","Create a new share link"),icon:e.loading?"icon-loading-small":"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}}):e._e()],2):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onNewLinkShare}},[e.errors.pending?t("NcActionText",{class:{error:e.errors.pending},attrs:{icon:"icon-error"}},[e._v("\n\t\t\t"+e._s(e.errors.pending)+"\n\t\t")]):t("NcActionText",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),e._v(" "),e.pendingPassword?t("NcActionText",{attrs:{icon:"icon-password"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):e.config.enableLinkPasswordByDefault?t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:e.isPasswordProtected,disabled:e.config.enforcePasswordForPublicLink||e.saving},on:{"update:checked":function(t){e.isPasswordProtected=t},uncheck:e.onPasswordDisable}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingPassword||e.share.password?t("NcActionInput",{staticClass:"share-link-password",attrs:{value:e.share.password,disabled:e.saving,required:e.config.enableLinkPasswordByDefault||e.config.enforcePasswordForPublicLink,minlength:e.isPasswordPolicyEnabled&&e.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(t){return e.$set(e.share,"password",t)},submit:e.onNewLinkShare}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a password"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionText",{attrs:{icon:"icon-calendar-dark"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionInput",{staticClass:"share-link-expire-date",attrs:{disabled:e.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t")]):e._e(),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Create share"))+"\n\t\t")]),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onCancel.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"1f50aaec",null),Rt={name:"SharingLinkList",components:{SharingEntryLink:Tt.exports},mixins:[b],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 e=this;return this.shares.filter((function(t){return t.type===e.SHARE_TYPES.SHARE_TYPE_LINK})).length>0},hasShares:function(){return this.shares.length>0}},methods:{addShare:function(e,t){this.shares.unshift(e),this.awaitForShare(e,t)},awaitForShare:function(e,t){var n=this;this.$nextTick((function(){var r=n.$children.find((function(t){return t.share===e}));r&&t(r)}))},removeShare:function(e){var t=this.shares.findIndex((function(t){return t===e}));this.shares.splice(t,1)}}},Nt=(0,W.Z)(Rt,(function(){var e=this,t=e._self._c;return e.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!e.hasLinkShares&&e.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo},on:{"add:share":e.addShare}}):e._e(),e._v(" "),e.hasShares?e._l(e.shares,(function(n,r){return t("SharingEntryLink",{key:n.id,attrs:{index:e.shares.length>1?r+1:null,"can-reshare":e.canReshare,share:e.shares[r],"file-info":e.fileInfo},on:{"update:share":[function(t){return e.$set(e.shares,r,t)},function(t){return e.awaitForShare.apply(e,arguments)}],"add:share":function(t){return e.addShare.apply(e,arguments)},"remove:share":e.removeShare}})})):e._e()],2):e._e()}),[],!1,null,null,null),Ot=Nt.exports,It=r(25108);function Lt(e){return Lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Lt(e)}var Ht={name:"SharingEntry",components:{NcActions:x(),NcActionButton:Te(),NcActionCheckbox:et(),NcActionInput:nt(),NcActionTextEditable:st(),NcAvatar:l()},mixins:[je],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 e=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?e+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?e+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?e+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?e+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(e+=" (".concat(t("files_sharing","guest"),")")),e},tooltip:function(){if(this.share.owner!==this.share.uidFileOwner){var e={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}",e):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",e):t("files_sharing","Shared with {user} by {owner}",e)}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},canSetDownload:function(){return this.fileInfo.canDownload()||this.canDownload},canEdit:{get:function(){return this.share.hasUpdatePermission},set:function(e){this.updatePermissions({isEditChecked:e})}},canCreate:{get:function(){return this.share.hasCreatePermission},set:function(e){this.updatePermissions({isCreateChecked:e})}},canDelete:{get:function(){return this.share.hasDeletePermission},set:function(e){this.updatePermissions({isDeleteChecked:e})}},canReshare:{get:function(){return this.share.hasSharePermission},set:function(e){this.updatePermissions({isReshareChecked:e})}},canDownload:{get:function(){return this.share.hasDownloadPermission},set:function(e){this.updatePermissions({isDownloadChecked:e})}},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(e){var t=this.config.defaultInternalExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=e?this.formatDateToString(t):"",It.debug("Expiration date status",e,this.share.expireDate)}},dateMaxEnforced:function(){return!this.isRemote&&this.config.isDefaultInternalExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultInternalExpireDate)):this.config.isDefaultRemoteExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultRemoteExpireDate)):null},hasStatus:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"===Lt(this.share.status)&&!Array.isArray(this.share.status)},allowDownloadText:function(){return t("files_sharing","Allow download")},isSetDownloadButtonVisible:function(){return this.isFolder||["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation"].includes(this.fileInfo.mimetype)}},methods:{updatePermissions:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.isEditChecked,n=void 0===t?this.canEdit:t,r=e.isCreateChecked,i=void 0===r?this.canCreate:r,a=e.isDeleteChecked,s=void 0===a?this.canDelete:a,o=e.isReshareChecked,c=void 0===o?this.canReshare:o,l=e.isDownloadChecked,u=void 0===l?this.canDownload:l,h=0|(this.hasRead?this.permissionsRead:0)|(i?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(n?this.permissionsEdit:0)|(c?this.permissionsShare:0);this.share.permissions=h,this.share.hasDownloadPermission!==u&&(this.share.hasDownloadPermission=u),this.queueUpdate("permissions","attributes")},onMenuClose:function(){this.onNoteSubmit()}}},Yt=Ht,Ut=r(24196),jt={};jt.styleTagTransform=j(),jt.setAttributes=L(),jt.insert=O().bind(null,"head"),jt.domAPI=R(),jt.insertStyleElement=Y(),D()(Ut.Z,jt),Ut.Z&&Ut.Z.locals&&Ut.Z.locals;var Mt=(0,W.Z)(Yt,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.type!==e.SHARE_TYPES.SHARE_TYPE_USER,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}),e._v(" "),t(e.share.shareWithLink?"a":"div",{tag:"component",staticClass:"sharing-entry__desc",attrs:{title:e.tooltip,"aria-label":e.tooltip,href:e.share.shareWithLink}},[t("span",[e._v(e._s(e.title)),e.isUnique?e._e():t("span",{staticClass:"sharing-entry__desc-unique"},[e._v(" ("+e._s(e.share.shareWithDisplayNameUnique)+")")])]),e._v(" "),e.hasStatus?t("p",[t("span",[e._v(e._s(e.share.status.icon||""))]),e._v(" "),t("span",[e._v(e._s(e.share.status.message||""))])]):e._e()]),e._v(" "),t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:e.onMenuClose}},[e.share.canEdit?[t("NcActionCheckbox",{ref:"canEdit",attrs:{checked:e.canEdit,value:e.permissionsEdit,disabled:e.saving||!e.canSetEdit},on:{"update:checked":function(t){e.canEdit=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow editing"))+"\n\t\t\t")]),e._v(" "),e.isFolder?t("NcActionCheckbox",{ref:"canCreate",attrs:{checked:e.canCreate,value:e.permissionsCreate,disabled:e.saving||!e.canSetCreate},on:{"update:checked":function(t){e.canCreate=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow creating"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isFolder?t("NcActionCheckbox",{ref:"canDelete",attrs:{checked:e.canDelete,value:e.permissionsDelete,disabled:e.saving||!e.canSetDelete},on:{"update:checked":function(t){e.canDelete=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):e._e(),e._v(" "),e.config.isResharingAllowed?t("NcActionCheckbox",{ref:"canReshare",attrs:{checked:e.canReshare,value:e.permissionsShare,disabled:e.saving||!e.canSetReshare},on:{"update:checked":function(t){e.canReshare=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isSetDownloadButtonVisible?t("NcActionCheckbox",{ref:"canDownload",attrs:{checked:e.canDownload,disabled:e.saving||!e.canSetDownload},on:{"update:checked":function(t){e.canDownload=t}}},[e._v("\n\t\t\t\t"+e._s(e.allowDownloadText)+"\n\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.hasExpirationDate,disabled:e.config.isDefaultInternalExpireDateEnforced||e.saving},on:{"update:checked":function(t){e.hasExpirationDate=t},uncheck:e.onExpirationDisable}},[e._v("\n\t\t\t\t"+e._s(e.config.isDefaultInternalExpireDateEnforced?e.t("files_sharing","Expiration date enforced"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcActionInput",{ref:"expireDate",class:{error:e.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:e.saving,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t\t")]):e._e(),e._v(" "),e.canHaveNote?[t("NcActionCheckbox",{attrs:{checked:e.hasNote,disabled:e.saving},on:{"update:checked":function(t){e.hasNote=t},uncheck:function(t){return e.queueUpdate("note")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),e._v(" "),e.hasNote?t("NcActionTextEditable",{ref:"note",class:{error:e.errors.note},attrs:{disabled:e.saving,value:e.share.newNote||e.share.note,icon:"icon-edit"},on:{"update:value":e.onNoteChange,submit:e.onNoteSubmit}}):e._e()]:e._e()]:e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t\t")]):e._e()],2)],1)}),[],!1,null,"13a6a5f0",null);function Bt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Wt={name:"SharingList",components:{SharingEntry:Mt.exports},mixins:[b],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 e=this;return function(t){return(n=e.shares,function(e){if(Array.isArray(e))return Bt(e)}(n)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return Bt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Bt(e,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.")}()).filter((function(n){return t.type===e.SHARE_TYPES.SHARE_TYPE_USER&&t.shareWithDisplayName===n.shareWithDisplayName})).length<=1;var n}}},methods:{removeShare:function(e){var t=this.shares.findIndex((function(t){return t===e}));this.shares.splice(t,1)}}},Ft=(0,W.Z)(Wt,(function(){var e=this,t=e._self._c;return t("ul",{staticClass:"sharing-sharee-list"},e._l(e.shares,(function(n){return t("SharingEntry",{key:n.id,attrs:{"file-info":e.fileInfo,share:n,"is-unique":e.isUnique(n)},on:{"remove:share":e.removeShare}})})),1)}),[],!1,null,null,null).exports,qt=r(25108);function Zt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function $t(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}function Gt(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function s(e){$t(a,r,i,s,o,"next",e)}function o(e){$t(a,r,i,s,o,"throw",e)}s(void 0)}))}}var Vt={name:"SharingTab",components:{NcAvatar:l(),CollectionList:s.G,SharingEntryInternal:z,SharingEntrySimple:F,SharingInherited:Je,SharingInput:Pe,SharingLinkList:Ot,SharingList:Ft},mixins:[b],data:function(){return{config:new p,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,h.j)("core","projects_enabled",!1)}},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(e){var t=this;return Gt(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:t.fileInfo=e,t.resetState(),t.getShares();case 3:case"end":return n.stop()}}),n)})))()},getShares:function(){var e=this;return Gt(regeneratorRuntime.mark((function n(){var r,i,a,s,c,l,h,d,f,p,g,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,e.loading=!0,r=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),i="json",a=(e.fileInfo.path+"/"+e.fileInfo.name).replace("//","/"),s=u.default.get(r,{params:{format:i,path:a,reshares:!0}}),c=u.default.get(r,{params:{format:i,path:a,shared_with_me:!0}}),n.next=9,Promise.all([s,c]);case 9:l=n.sent,y=2,h=function(e){if(Array.isArray(e))return e}(v=l)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,s,o=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(o.push(r.value),o.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(l)throw i}}return o}}(v,y)||function(e,t){if(e){if("string"==typeof e)return Zt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Zt(e,t):void 0}}(v,y)||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.")}(),d=h[0],f=h[1],e.loading=!1,e.processSharedWithMe(f),e.processShares(d),n.next=23;break;case 18:n.prev=18,n.t0=n.catch(0),null!==(p=n.t0.response.data)&&void 0!==p&&null!==(g=p.ocs)&&void 0!==g&&null!==(m=g.meta)&&void 0!==m&&m.message?e.error=n.t0.response.data.ocs.meta.message:e.error=t("files_sharing","Unable to load the shares list"),e.loading=!1,qt.error("Error loading the shares list",n.t0);case 23:case"end":return n.stop()}var v,y}),n,null,[[0,18]])})))()},resetState:function(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle:function(e){var n=moment(e.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*n)})),moment().unix()>n&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares:function(e){var t=this,n=e.data;if(n.ocs&&n.ocs.data&&n.ocs.data.length>0){var r=n.ocs.data.map((function(e){return new A(e)})).sort((function(e,t){return t.createdTime-e.createdTime}));this.linkShares=r.filter((function(e){return e.type===t.SHARE_TYPES.SHARE_TYPE_LINK||e.type===t.SHARE_TYPES.SHARE_TYPE_EMAIL})),this.shares=r.filter((function(e){return e.type!==t.SHARE_TYPES.SHARE_TYPE_LINK&&e.type!==t.SHARE_TYPES.SHARE_TYPE_EMAIL})),qt.debug("Processed",this.linkShares.length,"link share(s)"),qt.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe:function(e){var n=e.data;if(n.ocs&&n.ocs.data&&n.ocs.data[0]){var r=new A(n),i=function(e){return e.type===g.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===g.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===g.D.SHARE_TYPE_ROOM?e.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:e.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(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(e):this.shares.unshift(e),this.awaitForShare(e,t)},awaitForShare:function(e,t){var n=this.$refs.shareList;e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(n=this.$refs.linkShareList),this.$nextTick((function(){var r=n.$children.find((function(t){return t.share===e}));r&&t(r)}))}}},Kt=Vt,Qt=r(64727),zt={};zt.styleTagTransform=j(),zt.setAttributes=L(),zt.insert=O().bind(null,"head"),zt.domAPI=R(),zt.insertStyleElement=Y(),D()(Qt.Z,zt),Qt.Z&&Qt.Z.locals&&Qt.Z.locals;var Jt=(0,W.Z)(Kt,(function(){var e=this,t=e._self._c;return t("div",{class:{"icon-loading":e.loading}},[e.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:e.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),e._v(" "),t("h2",[e._v(e._s(e.error))])]):t("div",{staticClass:"sharingTab__content"},[e.isSharedWithMe?t("SharingEntrySimple",e._b({staticClass:"sharing-entry__reshare",scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.sharedWithMe.user,"display-name":e.sharedWithMe.displayName}})]},proxy:!0}],null,!1,3197855346)},"SharingEntrySimple",e.sharedWithMe,!1)):e._e(),e._v(" "),e.loading?e._e():t("SharingInput",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,"link-shares":e.linkShares,reshare:e.reshare,shares:e.shares},on:{"add:share":e.addShare}}),e._v(" "),e.loading?e._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,shares:e.linkShares}}),e._v(" "),e.loading?e._e():t("SharingList",{ref:"shareList",attrs:{shares:e.shares,"file-info":e.fileInfo}}),e._v(" "),e.canReshare&&!e.loading?t("SharingInherited",{attrs:{"file-info":e.fileInfo}}):e._e(),e._v(" "),t("SharingEntryInternal",{attrs:{"file-info":e.fileInfo}}),e._v(" "),e.projectsEnabled&&e.fileInfo?t("CollectionList",{attrs:{id:"".concat(e.fileInfo.id),type:"file",name:e.fileInfo.name}}):e._e()],1),e._v(" "),e._l(e.sections,(function(n,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(n(e.$refs["section-"+r],e.fileInfo),{tag:"component",attrs:{"file-info":e.fileInfo}})],1)}))],2)}),[],!1,null,"56c61b11",null).exports,Xt=r(25108);function en(e){return en="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},en(e)}function tn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,nn(r.key),r)}}function nn(e){var t=function(e,t){if("object"!==en(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==en(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===en(t)?t:String(t)}var rn=function(){function e(){var t,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t=this,r=void 0,(n=nn(n="_state"))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,this._state={},this._state.results=[],Xt.debug("OCA.Sharing.ShareSearch initialized")}var t,n;return t=e,(n=[{key:"state",get:function(){return this._state}},{key:"addNewResult",value:function(e){return""!==e.displayName.trim()&&"function"==typeof e.handler?(this._state.results.push(e),!0):(Xt.error("Invalid search result provided",e),!1)}}])&&tn(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),an=r(25108);function sn(e){return sn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sn(e)}function on(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,cn(r.key),r)}}function cn(e){var t=function(e,t){if("object"!==sn(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==sn(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===sn(t)?t:String(t)}var ln=function(){function e(){var t,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t=this,r=void 0,(n=cn(n="_state"))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,this._state={},this._state.actions=[],an.debug("OCA.Sharing.ExternalLinkActions initialized")}var t,n;return t=e,(n=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(e){return an.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"===sn(e)&&e.icon&&e.name&&e.url?(this._state.actions.push(e),!0):(an.error("Invalid action provided",e),!1)}}])&&on(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),un=r(25108);function hn(e){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hn(e)}function dn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,fn(r.key),r)}}function fn(e){var t=function(e,t){if("object"!==hn(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==hn(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===hn(t)?t:String(t)}var pn=function(){function e(){var t,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t=this,r=void 0,(n=fn(n="_state"))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,this._state={},this._state.actions=[],un.debug("OCA.Sharing.ExternalShareActions initialized")}var t,n;return t=e,(n=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(e){return"object"===hn(e)&&"string"==typeof e.id&&"function"==typeof e.data&&Array.isArray(e.shareType)&&"object"===hn(e.handlers)&&Object.values(e.handlers).every((function(e){return"function"==typeof e}))?this._state.actions.findIndex((function(t){return t.id===e.id}))>-1?(un.error("An action with the same id ".concat(e.id," already exists"),e),!1):(this._state.actions.push(e),!0):(un.error("Invalid action provided",e),!1)}}])&&dn(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function gn(e){return gn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},gn(e)}function mn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,vn(r.key),r)}}function vn(e){var t=function(e,t){if("object"!==gn(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==gn(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===gn(t)?t:String(t)}var yn=function(){function e(){var t,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t=this,r=void 0,(n=vn(n="_sections"))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,this._sections=[]}var t,n;return t=e,(n=[{key:"registerSection",value:function(e){this._sections.push(e)}},{key:"getSections",value:function(){return this._sections}}])&&mn(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),_n=r(44582);function An(e,t,n,r,i,a,s){try{var o=e[a](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,i)}window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new rn}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new ln}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new pn}),Object.assign(window.OCA.Sharing,{ShareTabSections:new yn}),i.ZP.prototype.t=a.Iu,i.ZP.prototype.n=a.uN;var bn=i.ZP.extend(Jt),wn=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,a.Iu)("files_sharing","Sharing"),iconSvg:_n,mount:function(e,t,n){return(r=regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return wn&&wn.$destroy(),wn=new bn({parent:n}),r.next=4,wn.update(t);case 4:wn.$mount(e);case 5:case"end":return r.stop()}}),r)})),function(){var e=this,t=arguments;return new Promise((function(n,i){var a=r.apply(e,t);function s(e){An(a,n,i,s,o,"next",e)}function o(e){An(a,n,i,s,o,"throw",e)}s(void 0)}))})();var r},update:function(e){wn.update(e)},destroy:function(){wn.$destroy(),wn=null}}))}))},73286:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".error[data-v-5e957d09] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AAEC,uDACC,mCAAA",sourcesContent:["\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]),t.Z=s},24196:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry[data-v-13a6a5f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-13a6a5f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-13a6a5f0]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-13a6a5f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-13a6a5f0]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AACA,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.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:""}]),t.Z=s},24147:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry[data-v-23251e4a]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-23251e4a]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-23251e4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-23251e4a]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AACA,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.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:""}]),t.Z=s},66828:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry__internal .avatar-external[data-v-69e43ddc]{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-69e43ddc]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\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:""}]),t.Z=s},14430:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry[data-v-1f50aaec]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1f50aaec]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-1f50aaec]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-1f50aaec]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-1f50aaec]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-1f50aaec] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-1f50aaec]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-1f50aaec]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-1f50aaec]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-1f50aaec],.sharing-entry .action-item~.sharing-entry__loading[data-v-1f50aaec]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-1f50aaec]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,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.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\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\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:""}]),t.Z=s},3335:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry[data-v-9fd256bc]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-9fd256bc]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-9fd256bc]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-9fd256bc]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-9fd256bc]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\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\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]),t.Z=s},49082:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA",sourcesContent:['\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for="sharing-search-input"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]),t.Z=s},16843:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".sharing-entry__inherited .avatar-shared[data-v-3462b966]{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:"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\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:""}]),t.Z=s},64727:function(e,t,n){var r=n(87537),i=n.n(r),a=n(23645),s=n.n(a)()(i());s.push([e.id,".emptyContentWithSections[data-v-56c61b11]{margin:1rem auto}.sharingTab__content[data-v-56c61b11]{padding:0 6px}.sharingTab__additionalContent[data-v-56c61b11]{margin:44px 0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA",sourcesContent:["\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n"],sourceRoot:""}]),t.Z=s}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=n,e=[],i.O=function(t,n,r,a){if(!n){var s=1/0;for(u=0;u<e.length;u++){n=e[u][0],r=e[u][1],a=e[u][2];for(var o=!0,c=0;c<n.length;c++)(!1&a||s>=a)&&Object.keys(i.O).every((function(e){return i.O[e](n[c])}))?n.splice(c--,1):(o=!1,a<s&&(s=a));if(o){e.splice(u--,1);var l=r();void 0!==l&&(t=l)}}return t}a=a||0;for(var u=e.length;u>0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[n,r,a]},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},i.j=7870,function(){i.b=document.baseURI||self.location.href;var e={7870:0};i.O.j=function(t){return 0===e[t]};var t=function(t,n){var r,a,s=n[0],o=n[1],c=n[2],l=0;if(s.some((function(t){return 0!==e[t]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(c)var u=c(i)}for(t&&t(n);l<s.length;l++)a=s[l],i.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(84017)}));a=i.O(a)}();
+//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=05c2c2240507639e442e \ 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 9806448c787..740ab1c08f9 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=81302de9445594087b16","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?1b73","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?0c02","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?00d7","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?6c02","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?8a42","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?65df","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?4cb0","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?77d5","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?42d8","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?45a6","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?82b4","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?b011","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f69b","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?f1d3","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?64e9","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?de0b","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?16b5","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?f8d7","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?e340","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?8704","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?0ae8","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=5e957d09&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=13a6a5f0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=23251e4a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=69e43ddc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=1f50aaec&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=9fd256bc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&id=47e3ed90&prod&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=3462b966&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=56c61b11&prod&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 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.getElementsByClassName('files-filestable')[0]\n\t\t\t&& document.getElementsByClassName('files-filestable')[0].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\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDate() {\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default internal expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDate() {\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default remote expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate))\n\t\t}\n\t\treturn null\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 * Is there a default expiration date for new remote shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnabled === 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\tif (ocsData.attributes) {\n\t\t\ttry {\n\t\t\t\tocsData.attributes = JSON.parse(ocsData.attributes)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Could not parse share attributes returned by server: \"' + ocsData.attributes + '\"')\n\t\t\t}\n\t\t}\n\t\tocsData.attributes = ocsData.attributes ?? []\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 * Get the share attributes\n\t *\n\t * @return {Array}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget attributes() {\n\t\treturn this._share.attributes\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\n\t *\n\t * @return {string} date with YYYY-MM-DD format\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\n\t *\n\t * @param {string} date the share expiration date with YYYY-MM-DD format\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 expiration 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/**\n\t * Does this share have download permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDownloadPermission() {\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\treturn attr.enabled\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tset hasDownloadPermission(enabled) {\n\t\tthis.setAttribute('permissions', 'download', !!enabled)\n\t}\n\n\tsetAttribute(scope, key, enabled) {\n\t\tconst attrUpdate = {\n\t\t\tscope,\n\t\t\tkey,\n\t\t\tenabled,\n\t\t}\n\n\t\t// try and replace existing\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n\t\t\t\tthis._share.attributes[i] = attrUpdate\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis._share.attributes.push(attrUpdate)\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 class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\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<NcActions ref=\"actionsComponent\"\n\t\t\tv-if=\"$slots['default']\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:aria-expanded=\"ariaExpandedValue\">\n\t\t\t<slot />\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tNcActions,\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\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\tariaExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tariaExpandedValue() {\n\t\t\tif (this.ariaExpanded === null) {\n\t\t\t\treturn this.ariaExpanded\n\t\t\t}\n\t\t\treturn this.ariaExpanded ? 'true' : 'false'\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\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\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\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=9fd256bc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=9fd256bc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=9fd256bc&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=9fd256bc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9fd256bc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\"},[_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('NcActions',{ref:\"actionsComponent\",staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"aria-expanded\":_vm.ariaExpandedValue}},[_vm._t(\"default\")],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<ul>\n\t\t<SharingEntrySimple ref=\"shareEntrySimple\"\n\t\t\tclass=\"sharing-entry__internal\"\n\t\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t\t</template>\n\n\t\t\t<NcActionLink :href=\"internalLink\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t:title=\"copyLinkTooltip\"\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.prevent=\"copyLink\" />\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showSuccess } from '@nextcloud/dialogs'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink'\nimport SharingEntrySimple from './SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tNcActionLink,\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 * Tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy internal link 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 navigator.clipboard.writeText(this.internalLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip (note: cannot set ref on NcActionLink)\n\t\t\t\tthis.$refs.shareEntrySimple.$refs.actionsComponent.$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=69e43ddc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=69e43ddc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=69e43ddc&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=69e43ddc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69e43ddc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('SharingEntrySimple',{ref:\"shareEntrySimple\",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('NcActionLink',{attrs:{\"href\":_vm.internalLink,\"aria-label\":_vm.copyLinkTooltip,\"title\":_vm.copyLinkTooltip,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1)],1)\n}\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'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\n\nconst config = new Config()\n// note: some chars removed on purpose to make them human friendly when read out\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\tshowSuccess(t('files_sharing', 'Password created successfully'))\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\tshowError(t('files_sharing', 'Error generating password from password policy'))\n\t\t}\n\t}\n\n\tconst array = new Uint8Array(10)\n\tconst ratio = passwordSet.length / 255\n\tself.crypto.getRandomValues(array)\n\tlet password = ''\n\tfor (let i = 0; i < array.length; i++) {\n\t\tpassword += passwordSet.charAt(array[i] * ratio)\n\t}\n\treturn password\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 * @param {string} [data.attributes=null] Share attributes encoded as json\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, attributes }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes })\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<div class=\"sharing-search\">\n\t\t<label for=\"sharing-search-input\">{{ t('files_sharing', 'Search for share recipients') }}</label>\n\t\t<NcSelect ref=\"select\"\n\t\t\tid=\"sharing-search-input\"\n\t\t\tclass=\"sharing-search__input\"\n\t\t\t:disabled=\"!canReshare\"\n\t\t\t:loading=\"loading\"\n\t\t\t:filterable=\"false\"\n\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:user-select=\"true\"\n\t\t\t:options=\"options\"\n\t\t\tv-model=\"value\"\n\t\t\t@open=\"handleOpen\"\n\t\t\t@search=\"asyncFind\"\n\t\t\t@option:selected=\"addShare\">\n\t\t\t<template #no-options=\"{ search }\">\n\t\t\t\t{{ search ? noResultText : t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\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\tNcSelect,\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\tvalue: null,\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\thandleOpen() {\n\t\t\t// Fix dropdown not opening when viewer is open, see https://github.com/nextcloud/viewer/pull/1319\n\t\t\temit('viewer:trapElements:changed', this.$refs.select.$el)\n\t\t},\n\n\t\tasync asyncFind(query) {\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 occurrences 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 differentiate\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 {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Guest'),\n\t\t\t\t}\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 {\n\t\t\t\t\ticon: 'icon-group',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Group'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Email'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-circle',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Circle'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-room',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Talk conversation'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-deck',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Deck board'),\n\t\t\t\t}\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\t...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\t// Clear the displayed selection\n\t\t\tthis.value = null\n\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\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\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\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\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again on error\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\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-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for=\"sharing-search-input\"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\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&id=47e3ed90&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=47e3ed90&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=47e3ed90&\"\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&id=47e3ed90&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharing-search\"},[_c('label',{attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Search for share recipients')))]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",staticClass:\"sharing-search__input\",attrs:{\"id\":\"sharing-search-input\",\"disabled\":!_vm.canReshare,\"loading\":_vm.loading,\"filterable\":false,\"placeholder\":_vm.inputPlaceholder,\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options},on:{\"open\":_vm.handleOpen,\"search\":_vm.asyncFind,\"option:selected\":_vm.addShare},scopedSlots:_vm._u([{key:\"no-options\",fn:function({ search }){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(search ? _vm.noResultText : _vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\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\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\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.js'\nimport SharesRequests from './ShareRequests.js'\nimport ShareTypes from './ShareTypes.js'\nimport Config from '../services/ConfigService.js'\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 new Date(new Date().setDate(new Date().getDate() + 1))\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 = 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 * @param {string} date a date with YYYY-MM-DD format\n\t\t * @return {Date} date\n\t\t */\n\t\tparseDateString(date) {\n\t\t\tif (!date) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst regex = /([0-9]{4}-[0-9]{2}-[0-9]{2})/i\n\t\t\treturn new Date(date.match(regex)?.pop())\n\t\t},\n\n\t\t/**\n\t\t * @param {Date} date\n\t\t * @return {string} date a date with YYYY-MM-DD format\n\t\t */\n\t\tformatDateToString(date) {\n\t\t\t// Force utc time. Drop time information to be timezone-less\n\t\t\tconst utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\n\t\t\t// Format to YYYY-MM-DD\n\t\t\treturn utcDate.toISOString().split('T')[0]\n\t\t},\n\n\t\t/**\n\t\t * Save given value to expireDate and trigger queueUpdate\n\t\t *\n\t\t * @param {Date} date\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\tthis.share.expireDate = this.formatDateToString(date)\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\tconst message = this.share.itemType === 'file'\n\t\t\t\t\t? t('files_sharing', 'File \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\t\t: t('files_sharing', 'Folder \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\tshowSuccess(message)\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.forEach(name => {\n\t\t\t\t\tif ((typeof this.share[name]) === 'object') {\n\t\t\t\t\t\tproperties[name] = JSON.stringify(this.share[name])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties[name] = this.share[name].toString()\n\t\t\t\t\t}\n\t\t\t\t})\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\t\t\t\t\t\tshowSuccess(t('files_sharing', 'Share {propertyName} saved', { propertyName: propertyNames[0] }))\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\tshowError(t('files_sharing', 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\treturn\n\t\t\t}\n\n\t\t\t// This share does not exists on the server yet\n\t\t\tconsole.debug('Updated local share', this.share)\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\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<NcAvatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t</template>\n\t\t<NcActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</NcActionText>\n\t\t<NcActionLink 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</NcActionLink>\n\t\t<NcActionButton 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</NcActionButton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText'\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\tNcActionButton,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcAvatar,\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=23251e4a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=23251e4a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=23251e4a&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=23251e4a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23251e4a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionText',{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('NcActionLink',{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('NcActionButton',{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)\n}\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:aria-expanded=\"showInheritedShares\">\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<NcActionButton :icon=\"showInheritedSharesIcon\"\n\t\t\t\t:aria-label=\"toggleTooltip\"\n\t\t\t\t:title=\"toggleTooltip\"\n\t\t\t\t@click.prevent.stop=\"toggleInheritedShares\" />\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\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\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\tNcActionButton,\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\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\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=3462b966&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=3462b966&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=3462b966&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=3462b966&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3462b966\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon,\"aria-label\":_vm.toggleTooltip,\"title\":_vm.toggleTooltip},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}})],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share},on:{\"remove:share\":_vm.removeShare}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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 render(){var _vm=this,_c=_vm._self._c;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\")])\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<li>\n\t\t<ul>\n\t\t\t<!-- file -->\n\t\t\t<NcActionCheckbox v-if=\"!isFolder\"\n\t\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<!-- folder -->\n\t\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t\t</NcActionRadio>\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t\t<NcActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<!-- custom permissions -->\n\t\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</ul>\n\t</li>\n</template>\n\n<script>\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionRadio from '@nextcloud/vue/dist/Components/NcActionRadio'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'\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\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionRadio,\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=5e957d09&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=5e957d09&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=5e957d09&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=5e957d09&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e957d09\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',[_c('ul',[(!_vm.isFolder)?_c('NcActionCheckbox',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('NcActionRadio',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{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\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{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\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('NcActionCheckbox',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\\t\")])],1)]:_vm._e()],2)])\n}\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<NcAvatar :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<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\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<NcActions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<NcActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\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</NcActions>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\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<NcActionText 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</NcActionText>\n\t\t\t<NcActionText 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</NcActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<NcActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t<NcActionInput v-if=\"pendingPassword || share.password\"\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</NcActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<NcActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t:hide-label=\"true\"\n\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\ttype=\"date\"\n\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t@input=\"onExpirationChange\">\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</NcActionInput>\n\n\t\t\t<NcActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- actions -->\n\t\t<NcActions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\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<NcActionInput ref=\"label\"\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: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\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<NcActionSeparator />\n\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving || canChangeHideDownload\"\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</NcActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<NcActionCheckbox :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</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\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</NcActionInput>\n\t\t\t\t\t<NcActionText 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</NcActionText>\n\t\t\t\t\t<NcActionText 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</NcActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<NcActionCheckbox :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</NcActionCheckbox>\n\t\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t\t:hide-label=\"true\"\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:value=\"new Date(share.expireDate)\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</NcActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<NcActionCheckbox :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</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\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<NcActionSeparator />\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<NcActionLink 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</NcActionLink>\n\n\t\t\t\t<NcActionButton 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</NcActionButton>\n\t\t\t\t<NcActionButton 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</NcActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<NcActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:title=\"t('files_sharing', 'Create a new share link')\"\n\t\t\t\t:aria-label=\"t('files_sharing', 'Create a 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</NcActions>\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 { showError, showSuccess } from '@nextcloud/dialogs'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText'\nimport NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator'\nimport NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport SharePermissionsEditor from './SharePermissionsEditor.vue'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcActionTextEditable,\n\t\tNcActionSeparator,\n\t\tNcAvatar,\n\t\tExternalShareAction,\n\t\tSharePermissionsEditor,\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\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\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\tif (this.index > 1) {\n\t\t\t\treturn t('files_sharing', 'Share link ({index})', { index: this.index })\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\tconst defaultExpirationDate = this.config.defaultExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\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\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.config.defaultExpireDate))\n\t\t\t}\n\t\t\treturn null\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 * Tooltip message for actions button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tactionsTooltip() {\n\t\t\treturn t('files_sharing', 'Actions for \"{title}\"', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for copy button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy public link of \"{title}\" to clipboard', { title: this.title })\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\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\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.formatDateToString(this.config.defaultExpirationDate)\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\ttry {\n\t\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tthis.pending = false\n\t\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\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 options = {\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\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\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\tconsole.debug('Creating link share with options', options)\n\t\t\t\tconst newShare = await this.createShare(options)\n\n\t\t\t\tthis.open = false\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\t\t\t\tshowSuccess(t('sharing', 'Link share created'))\n\n\t\t\t} catch (data) {\n\t\t\t\tconst message = data?.response?.data?.ocs?.meta?.message\n\t\t\t\tif (!message) {\n\t\t\t\t\tshowError(t('sharing', 'Error while creating the share'))\n\t\t\t\t\tconsole.error(data)\n\t\t\t\t\treturn\n\t\t\t\t}\n\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\tthrow data\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 navigator.clipboard.writeText(this.shareLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\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 submitted.\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</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\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\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=1f50aaec&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=1f50aaec&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=1f50aaec&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=1f50aaec&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f50aaec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('NcAvatar',{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('span',{staticClass:\"sharing-entry__title\",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('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"title\":_vm.copyLinkTooltip,\"aria-label\":_vm.copyLinkTooltip,\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('NcActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('NcActionText',{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('NcActionText',{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('NcActionCheckbox',{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('NcActionInput',{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('NcActionText',{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('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"is-native-picker\":true,\"hide-label\":true,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{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('NcActionButton',{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('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"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('NcActionInput',{ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"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(\" \"),_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('NcActionSeparator'),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving || _vm.canChangeHideDownload},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('NcActionCheckbox',{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('NcActionInput',{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('NcActionText',{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('NcActionText',{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('NcActionCheckbox',{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('NcActionCheckbox',{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('NcActionInput',{ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_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('NcActionCheckbox',{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('NcActionTextEditable',{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('NcActionSeparator'),_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({icon, url, name},index){return _c('NcActionLink',{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('NcActionButton',{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('NcActionButton',{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('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"title\":_vm.t('files_sharing', 'Create a new share link'),\"aria-label\":_vm.t('files_sharing', 'Create a new share link'),\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}}):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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:index=\"shares.length > 1 ? index + 1 : null\"\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=537e15c5&\"\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 render(){var _vm=this,_c=_vm._self._c;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:{\"index\":_vm.shares.length > 1 ? index + 1 : null,\"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(...arguments)}],\"add:share\":function($event){return _vm.addShare(...arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()\n}\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<NcAvatar 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:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\t:title=\"tooltip\"\n\t\t\t:aria-label=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<span>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></span>\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<NcActions 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<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t\t<NcActionCheckbox v-if=\"isSetDownloadButtonVisible\"\n\t\t\t\t\tref=\"canDownload\"\n\t\t\t\t\t:checked.sync=\"canDownload\"\n\t\t\t\t\t:disabled=\"saving || !canSetDownload\">\n\t\t\t\t\t{{ allowDownloadText }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<NcActionCheckbox :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</NcActionCheckbox>\n\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</NcActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<NcActionCheckbox :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</NcActionCheckbox>\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\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<NcActionButton 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</NcActionButton>\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput'\nimport NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionTextEditable,\n\t\tNcAvatar,\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\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 sharer set whether the sharee can download the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDownload() {\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.canDownload() || this.canDownload)\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 * Can the sharee download files or only view them ?\n\t\t */\n\t\tcanDownload: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDownloadPermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDownloadChecked: 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\tconst defaultExpirationDate = this.config.defaultInternalExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\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\tif (!this.isRemote && this.config.isDefaultInternalExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultInternalExpireDate))\n\t\t\t} else if (this.config.isDefaultRemoteExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultRemoteExpireDate))\n\t\t\t}\n\t\t\treturn null\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\t/**\n\t\t * @return {string}\n\t\t */\n\t\tallowDownloadText() {\n\t\t\treturn t('files_sharing', 'Allow download')\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisSetDownloadButtonVisible() {\n\t\t\tconst allowedMimetypes = [\n\t\t\t\t// Office documents\n\t\t\t\t'application/msword',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t\t\t'application/vnd.ms-powerpoint',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t\t\t'application/vnd.ms-excel',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'application/vnd.oasis.opendocument.text',\n\t\t\t\t'application/vnd.oasis.opendocument.spreadsheet',\n\t\t\t\t'application/vnd.oasis.opendocument.presentation',\n\t\t\t]\n\n\t\t\treturn this.isFolder || allowedMimetypes.includes(this.fileInfo.mimetype)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({\n\t\t\tisEditChecked = this.canEdit,\n\t\t\tisCreateChecked = this.canCreate,\n\t\t\tisDeleteChecked = this.canDelete,\n\t\t\tisReshareChecked = this.canReshare,\n\t\t\tisDownloadChecked = this.canDownload,\n\t\t} = {}) {\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\tif (this.share.hasDownloadPermission !== isDownloadChecked) {\n\t\t\t\tthis.share.hasDownloadPermission = isDownloadChecked\n\t\t\t}\n\t\t\tthis.queueUpdate('permissions', 'attributes')\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=13a6a5f0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=13a6a5f0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=13a6a5f0&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=13a6a5f0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13a6a5f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_c('NcAvatar',{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,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"title\":_vm.tooltip,\"aria-label\":_vm.tooltip,\"href\":_vm.share.shareWithLink}},[_c('span',[_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('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('NcActionCheckbox',{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('NcActionCheckbox',{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('NcActionCheckbox',{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('NcActionCheckbox',{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(\" \"),(_vm.isSetDownloadButtonVisible)?_c('NcActionCheckbox',{ref:\"canDownload\",attrs:{\"checked\":_vm.canDownload,\"disabled\":_vm.saving || !_vm.canSetDownload},on:{\"update:checked\":function($event){_vm.canDownload=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.allowDownloadText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{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('NcActionInput',{ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_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('NcActionCheckbox',{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('NcActionTextEditable',{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('NcActionButton',{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)\n}\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 render(){var _vm=this,_c=_vm._self._c;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)\n}\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<div v-else class=\"sharingTab__content\">\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<NcAvatar :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</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=\"projectsEnabled && 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</div>\n\n\t\t<!-- additional 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 NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\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\tNcAvatar,\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\tprojectsEnabled: loadState('core', 'projects_enabled', false),\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\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\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=56c61b11&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=56c61b11&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=56c61b11&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=56c61b11&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"56c61b11\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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))])]):_c('div',{staticClass:\"sharingTab__content\"},[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName}})]},proxy:true}],null,false,3197855346)},'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.projectsEnabled && _vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":`${_vm.fileInfo.id}`,\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],1),_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)\n}\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 { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab.vue'\nimport ShareSearch from './services/ShareSearch.js'\nimport ExternalLinkActions from './services/ExternalLinkActions.js'\nimport ExternalShareActions from './services/ExternalShareActions.js'\nimport TabSections from './services/TabSections.js'\n\n// eslint-disable-next-line node/no-missing-import, import/no-unresolved\nimport ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'\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\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\ticonSvg: ShareVariant,\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-5e957d09] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AAEC,uDACC,mCAAA\",\"sourcesContent\":[\"\\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-13a6a5f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-13a6a5f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-13a6a5f0]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-13a6a5f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-13a6a5f0]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AACA,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.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-23251e4a]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-23251e4a]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-23251e4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-23251e4a]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AACA,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.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-69e43ddc]{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-69e43ddc]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\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-1f50aaec]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1f50aaec]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-1f50aaec]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-1f50aaec]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-1f50aaec]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-1f50aaec] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-1f50aaec]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-1f50aaec]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-1f50aaec]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-1f50aaec],.sharing-entry .action-item~.sharing-entry__loading[data-v-1f50aaec]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-1f50aaec]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,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.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\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\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-9fd256bc]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-9fd256bc]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-9fd256bc]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-9fd256bc]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-9fd256bc]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\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\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tmax-width: inherit;\\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-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA\",\"sourcesContent\":[\"\\n.sharing-search {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 4px;\\n\\n\\tlabel[for=\\\"sharing-search-input\\\"] {\\n\\t\\tmargin-bottom: 2px;\\n\\t}\\n\\n\\t&__input {\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 10px 0;\\n\\t}\\n}\\n\\n.vs__dropdown-menu {\\n\\t// properly style the lookup entry\\n\\tspan[lookup] {\\n\\t\\t.avatardiv {\\n\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tdisplay: none;\\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-3462b966]{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\":\"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\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-56c61b11]{margin:1rem auto}.sharingTab__content[data-v-56c61b11]{padding:0 6px}.sharingTab__additionalContent[data-v-56c61b11]{margin:44px 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA\",\"sourcesContent\":[\"\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\\n.sharingTab {\\n\\t&__content {\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\t&__additionalContent {\\n\\t\\tmargin: 44px 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","// 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__(75104); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","document","getElementsByClassName","dataset","allowPublicUpload","getElementById","value","OC","appConfig","core","federatedCloudShareDoc","this","isDefaultExpireDateEnabled","Date","setDate","getDate","defaultExpireDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","defaultExpireDateEnforced","defaultExpireDateEnabled","defaultInternalExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","defaultRemoteExpireDateEnabled","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","attributes","JSON","parse","e","console","warn","_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","date","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","i","attr","scope","key","setAttribute","attrUpdate","push","can_edit","can_delete","via_fileid","via_path","parent","storage_id","storage","item_source","status","SHARE_TYPES","ShareTypes","name","components","NcActions","props","title","type","default","required","subtitle","isUnique","ariaExpanded","computed","ariaExpandedValue","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","_t","_v","_s","_e","$slots","ref","attrs","NcActionLink","SharingEntrySimple","fileInfo","copied","copySuccess","internalLink","copyLinkTooltip","internalLinkSubtitle","methods","copyLink","navigator","showSuccess","setTimeout","t","scopedSlots","_u","fn","proxy","on","$event","preventDefault","apply","arguments","passwordSet","passwordPolicy","api","generate","axios","request","info","showError","array","Uint8Array","ratio","length","self","crypto","getRandomValues","charAt","shareUrl","generateOcsUrl","createShare","shareType","shareWith","publicUpload","expireDate","error","errorMessage","response","meta","message","Notification","showTemporary","deleteShare","updateShare","properties","Error","NcSelect","mixins","shares","linkShares","reshare","canReshare","loading","query","recommendations","ShareSearch","suggestions","externalResults","inputPlaceholder","isValidQuery","noResultText","mounted","handleOpen","emit","asyncFind","getSuggestions","lookup","params","format","itemType","search","perPage","exact","rawExactSuggestions","rawSuggestions","exactSuggestions","map","sort","lookupEntry","isNoUser","displayName","allSuggestions","nameCounts","desc","debounceGetSuggestions","getRecommendations","rawRecommendations","reduce","concat","filterOutExistingShares","obj","sharesObj","arr","shareTypeToIcon","icon","iconTitle","formatForMultiselect","result","server","user","shareWithDisplayNameUnique","addShare","share","GeneratePassword","component","model","callback","$$v","expression","SharesRequests","Object","Boolean","errors","saving","open","updateQueue","PQueue","concurrency","reactiveState","hasNote","get","set","dateTomorrow","lang","weekdaysShort","window","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","owner","getCurrentUser","uid","checkShare","trim","expirationDate","isValid","parseDateString","match","pop","formatDateToString","UTC","getFullYear","getMonth","toISOString","split","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","onDelete","debug","$emit","propertyNames","forEach","stringify","toString","add","updatedShare","indexOf","propertyName","onSyncError","property","propertyEl","$refs","$el","focusable","querySelector","focus","debounceQueueUpdate","debounce","NcActionButton","NcActionText","NcAvatar","viaFileTargetUrl","fileid","viaFolderName","shareWithDisplayName","initiator","ownerDisplayName","viaPath","viaFileid","folder","canDelete","SharingEntryInherited","loaded","showInheritedShares","showInheritedSharesIcon","mainTitle","subTitle","toggleTooltip","fullPath","watch","toggleInheritedShares","fetchInheritedShares","url","resetState","removeShare","stopPropagation","_l","action","is","_g","_b","tag","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","NcActionCheckbox","NcActionRadio","Tune","ChevronLeft","randomFormName","showCustomPermissionsForm","atomicPermissions","bundledPermissions","sharePermissionsSummary","filter","join","sharePermissionsIsBundle","sharePermissionsSetIsValid","isFolder","fileHasCreatePermission","sharePermissionEqual","shareHasPermissions","setSharePermissions","canToggleSharePermissions","permissionSet","toggleSharePermissions","isPublicUploadEnabled","class","NcActionInput","NcActionTextEditable","NcActionSeparator","ExternalShareAction","SharePermissionsEditor","index","pending","ExternalLegacyLinkActions","ExternalShareActions","hasExpirationDate","dateMaxEnforced","isPasswordProtected","Vue","isTalkEnabled","isPasswordProtectedByTalkAvailable","isPasswordProtectedByTalk","isEmailShareType","canTogglePasswordProtectedByTalkAvailable","pendingPassword","pendingExpirationDate","hasUnsavedPassword","shareLink","actionsTooltip","externalLegacyLinkActions","externalLinkActions","isPasswordPolicyEnabled","canChangeHideDownload","onNewLinkShare","shareDefaults","pushNewLinkShare","newShare","update","onLabelChange","onLabelSubmit","onPasswordChange","onPasswordDisable","onPasswordSubmit","onPasswordProtectedByTalkChange","onMenuClose","onCancel","canEdit","newLabel","hideDownload","newPassword","isDefaultExpireDateEnforced","minLength","SharingEntryLink","canLinkShare","hasLinkShares","hasShares","awaitForShare","resolve","permissionsEdit","permissionsCreate","permissionsDelete","permissionsRead","permissionsShare","tooltip","canHaveNote","isRemote","canSetEdit","canSetCreate","canSetDelete","canSetReshare","canSetDownload","isEditChecked","canCreate","isCreateChecked","isDeleteChecked","isReshareChecked","canDownload","isDownloadChecked","hasRead","hasStatus","allowDownloadText","isSetDownloadButtonVisible","updatePermissions","SHARE_TYPE_USER","shareWithAvatar","shareWithLink","isResharingAllowed","isDefaultInternalExpireDateEnforced","SharingEntry","CollectionList","SharingEntryInternal","SharingInherited","SharingInput","SharingLinkList","SharingList","expirationInterval","sharedWithMe","sections","projectsEnabled","isSharedWithMe","getShares","fetchShares","reshares","fetchSharedWithMe","shared_with_me","Promise","clearInterval","updateExpirationSubtitle","relativetime","processShares","processSharedWithMe","group","escape","circle","conversation","listComponent","emptyContentWithSections","section","refInFor","_state","results","handler","ExternalLinkActions","actions","Array","isArray","values","every","findIndex","check","TabSections","_sections","OCA","Sharing","assign","ShareTabSections","n","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","iconSvg","ShareVariant","mount","el","context","$destroy","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_sharing-files_sharing_tab.js?v=05c2c2240507639e442e","mappings":";6BAAIA,wxBCAJ,IAwBqBC,EAAM,sIA6SzB,SA7SyB,uCAS1B,WACC,OAAOC,SAASC,uBAAuB,oBAAoB,IAC8B,QAArFD,SAASC,uBAAuB,oBAAoB,GAAGC,QAAQC,iBACpE,GAEA,kCAOA,WACC,OAAOH,SAASI,eAAe,uBAC6B,QAAxDJ,SAASI,eAAe,sBAAsBC,KACnD,GAEA,iCAOA,WACC,OAAOC,GAAGC,UAAUC,KAAKC,sBAC1B,GAEA,iCAOA,WACC,OAAIC,KAAKC,2BACD,IAAIC,MAAK,IAAIA,MAAOC,SAAQ,IAAID,MAAOE,UAAYJ,KAAKK,oBAEzD,IACR,GAEA,yCAOA,WACC,OAAIL,KAAKM,mCACD,IAAIJ,MAAK,IAAIA,MAAOC,SAAQ,IAAID,MAAOE,UAAYJ,KAAKO,4BAEzD,IACR,GAEA,6CAOA,WACC,OAAIP,KAAKQ,iCACD,IAAIN,MAAK,IAAIA,MAAOC,SAAQ,IAAID,MAAOE,UAAYJ,KAAKS,0BAEzD,IACR,GAEA,wCAOA,WACC,OAA0D,IAAnDb,GAAGC,UAAUC,KAAKY,4BAC1B,GAEA,uCAOA,WACC,OAAyD,IAAlDd,GAAGC,UAAUC,KAAKa,2BAC1B,GAEA,uCAOA,WACC,OAAuD,IAAhDf,GAAGC,UAAUC,KAAKc,yBAC1B,GAEA,sCAOA,WACC,OAAsD,IAA/ChB,GAAGC,UAAUC,KAAKe,wBAC1B,GAEA,+CAOA,WACC,OAA+D,IAAxDjB,GAAGC,UAAUC,KAAKgB,iCAC1B,GAEA,6CAOA,WACC,OAA6D,IAAtDlB,GAAGC,UAAUC,KAAKiB,+BAC1B,GAEA,8CAOA,WACC,OAA8D,IAAvDnB,GAAGC,UAAUC,KAAKkB,gCAC1B,GAEA,4CAOA,WACC,OAA4D,IAArDpB,GAAGC,UAAUC,KAAKmB,8BAC1B,GAEA,gCAOA,WACC,OAAgD,IAAzCrB,GAAGC,UAAUC,KAAKoB,kBAC1B,GAEA,8BAOA,WAAyB,UAClBC,EAAevB,GAAGwB,kBAExB,YAAoDC,KAA7CF,SAA2B,QAAf,EAAZA,EAAcG,qBAAa,WAAf,EAAZ,EAA6BC,eAEiB,KAAjDJ,SAA2B,QAAf,EAAZA,EAAcG,qBAAa,OAAQ,QAAR,EAA3B,EAA6BE,cAAM,WAAvB,EAAZ,EAAqCC,QAC1C,GAEA,6BAOA,WACC,OAAO7B,GAAGC,UAAUC,KAAKO,iBAC1B,GAEA,qCAOA,WACC,OAAOT,GAAGC,UAAUC,KAAKS,yBAC1B,GAEA,mCAOA,WACC,OAAOX,GAAGC,UAAUC,KAAKW,uBAC1B,GAEA,8BAOA,WACC,OAA8C,IAAvCb,GAAGC,UAAUC,KAAK4B,gBAC1B,GAEA,2CAOA,WACC,YAA2DL,IAAnDzB,GAAGwB,kBAAkBE,cAAcC,aAAqC3B,GAAGwB,kBAAkBE,cAAcC,YAAYI,SAASC,QACzI,GAEA,kCAKA,WAA6B,QAC5B,OAA2E,KAAjC,QAAlC,EAAAhC,GAAGwB,kBAAkBE,qBAAa,OAAQ,QAAR,EAAlC,EAAoCO,cAAM,WAAR,EAAlC,EAA4CC,mBACrD,GAEA,6BAOA,WACC,OAA+C,IAAxClC,GAAGC,UAAUC,KAAKiC,iBAC1B,GAEA,kCAOA,WACC,OAAOC,SAASpC,GAAGqC,OAAO,kCAAmC,KAAO,EACrE,GAEA,iCAQA,WACC,OAAOD,SAASpC,GAAGqC,OAAO,iCAAkC,KAAO,CACpE,GAEA,0BAOA,WACC,IAAMd,EAAevB,GAAGwB,kBACxB,OAAOD,EAAae,gBAAkBf,EAAae,gBAAkB,CAAC,CACvE,0EAAC,EA7SyB,6sBCxB3B,IA2BqBC,EAAK,WASzB,WAAYC,GAAS,YASpB,+FAToB,qIAChBA,EAAQC,KAAOD,EAAQC,IAAIC,MAAQF,EAAQC,IAAIC,KAAK,KACvDF,EAAUA,EAAQC,IAAIC,KAAK,IAI5BF,EAAQG,gBAAkBH,EAAQG,cAClCH,EAAQI,YAAcJ,EAAQI,UAE1BJ,EAAQK,WACX,IACCL,EAAQK,WAAaC,KAAKC,MAAMP,EAAQK,WAGzC,CAFE,MAAOG,GACRC,EAAQC,KAAK,yDAA2DV,EAAQK,WAAa,IAC9F,CAEDL,EAAQK,WAA+B,QAArB,EAAGL,EAAQK,kBAAU,QAAI,GAG3CzC,KAAK+C,OAASX,CACf,SAwlBC,SAtlBD,uBAWA,WACC,OAAOpC,KAAK+C,MACb,GAEA,cAOA,WACC,OAAO/C,KAAK+C,OAAOC,EACpB,GAEA,gBAOA,WACC,OAAOhD,KAAK+C,OAAOE,UACpB,GAEA,uBAQA,WACC,OAAOjD,KAAK+C,OAAOG,WACpB,EAEA,IAkBA,SAAgBA,GACflD,KAAK+C,OAAOG,YAAcA,CAC3B,GAGA,sBAhBA,WACC,OAAOlD,KAAK+C,OAAON,UACpB,GAAC,iBAqBD,WACC,OAAOzC,KAAK+C,OAAOI,SACpB,GAEA,4BAOA,WACC,OAAOnD,KAAK+C,OAAOK,iBACpB,GAGA,qBAOA,WACC,OAAOpD,KAAK+C,OAAOM,UACpB,GAEA,gCAQA,WACC,OAAOrD,KAAK+C,OAAOO,wBACftD,KAAK+C,OAAOM,UACjB,GAEA,sCAQA,WACC,OAAOrD,KAAK+C,OAAOQ,+BACfvD,KAAK+C,OAAOM,UACjB,GAEA,yBAOA,WACC,OAAOrD,KAAK+C,OAAOS,eACpB,GAEA,2BAOA,WACC,OAAOxD,KAAK+C,OAAOU,iBACpB,GAGA,wBAOA,WACC,OAAOzD,KAAK+C,OAAOW,cACpB,GAEA,gCAQA,WACC,OAAO1D,KAAK+C,OAAOY,wBACf3D,KAAK+C,OAAOW,cACjB,GAGA,uBAOA,WACC,OAAO1D,KAAK+C,OAAOa,KACpB,GAEA,sBAOA,WACC,OAAO5D,KAAK+C,OAAOc,UACpB,EAEA,IAMA,SAAeC,GACd9D,KAAK+C,OAAOc,WAAaC,CAC1B,GAGA,iBAOA,WACC,OAAO9D,KAAK+C,OAAOgB,KACpB,GAEA,gBAOA,WACC,OAAO/D,KAAK+C,OAAOiB,IACpB,EAEA,IAMA,SAASA,GACRhE,KAAK+C,OAAOiB,KAAOA,CACpB,GAEA,iBAQA,WACC,OAAOhE,KAAK+C,OAAOkB,KACpB,EAEA,IAOA,SAAUA,GACTjE,KAAK+C,OAAOkB,MAAQA,CACrB,GAEA,oBAOA,WACC,OAAiC,IAA1BjE,KAAK+C,OAAOP,SACpB,GAEA,wBAOA,WACC,OAAqC,IAA9BxC,KAAK+C,OAAOR,aACpB,EAEA,IAMA,SAAiB2B,GAChBlE,KAAK+C,OAAOR,eAA0B,IAAV2B,CAC7B,GAEA,oBAOA,WACC,OAAOlE,KAAK+C,OAAOpB,QACpB,EAEA,IAMA,SAAaA,GACZ3B,KAAK+C,OAAOpB,SAAWA,CACxB,GAEA,kCAOA,WACC,OAAO3B,KAAK+C,OAAOoB,wBACpB,EAEA,IAMA,SAA2BC,GAC1BpE,KAAK+C,OAAOoB,yBAA2BC,CACxC,GAEA,8BAOA,WACC,OAAOpE,KAAK+C,OAAOsB,qBACpB,EAEA,IAOA,SAAuBC,GACtBtE,KAAK+C,OAAOsB,sBAAwBC,CACrC,GAGA,gBAOA,WACC,OAAOtE,KAAK+C,OAAOwB,IACpB,GAEA,oBAOA,WACC,OAAOvE,KAAK+C,OAAOyB,SACpB,GAEA,oBAOA,WACC,OAAOxE,KAAK+C,OAAO0B,QACpB,GAEA,sBAOA,WACC,OAAOzE,KAAK+C,OAAO2B,WACpB,GAEA,sBASA,WACC,OAAO1E,KAAK+C,OAAO4B,WACpB,GAEA,sBAOA,WACC,OAAO3E,KAAK+C,OAAO6B,WACpB,GAIA,6BAOA,WACC,SAAW5E,KAAKkD,YAActD,GAAGiF,gBAClC,GAEA,+BAOA,WACC,SAAW7E,KAAKkD,YAActD,GAAGkF,kBAClC,GAEA,+BAOA,WACC,SAAW9E,KAAKkD,YAActD,GAAGmF,kBAClC,GAEA,+BAOA,WACC,SAAW/E,KAAKkD,YAActD,GAAGoF,kBAClC,GAEA,8BAOA,WACC,SAAWhF,KAAKkD,YAActD,GAAGqF,iBAClC,GAEA,iCAOA,WACC,IAAK,IAAMC,KAAKlF,KAAK+C,OAAON,WAAY,CACvC,IAAM0C,EAAOnF,KAAK+C,OAAON,WAAWyC,GACpC,GAAmB,gBAAfC,EAAKC,OAAwC,aAAbD,EAAKE,IACxC,OAAOF,EAAK1D,OAEd,CAEA,OAAO,CACR,EAAC,IAED,SAA0BA,GACzBzB,KAAKsF,aAAa,cAAe,aAAc7D,EAChD,GAAC,0BAED,SAAa2D,EAAOC,EAAK5D,GACxB,IAAM8D,EAAa,CAClBH,MAAAA,EACAC,IAAAA,EACA5D,QAAAA,GAID,IAAK,IAAMyD,KAAKlF,KAAK+C,OAAON,WAAY,CACvC,IAAM0C,EAAOnF,KAAK+C,OAAON,WAAWyC,GACpC,GAAIC,EAAKC,QAAUG,EAAWH,OAASD,EAAKE,MAAQE,EAAWF,IAE9D,YADArF,KAAK+C,OAAON,WAAWyC,GAAKK,EAG9B,CAEAvF,KAAK+C,OAAON,WAAW+C,KAAKD,EAC7B,GAKA,mBAOA,WACC,OAAgC,IAAzBvF,KAAK+C,OAAO0C,QACpB,GAEA,qBAOA,WACC,OAAkC,IAA3BzF,KAAK+C,OAAO2C,UACpB,GAEA,qBAOA,WACC,OAAO1F,KAAK+C,OAAO4C,UACpB,GAEA,mBAOA,WACC,OAAO3F,KAAK+C,OAAO6C,QACpB,GAEA,kBAEA,WACC,OAAO5F,KAAK+C,OAAO8C,MACpB,GAAC,qBAED,WACC,OAAO7F,KAAK+C,OAAO+C,UACpB,GAAC,mBAED,WACC,OAAO9F,KAAK+C,OAAOgD,OACpB,GAAC,sBAED,WACC,OAAO/F,KAAK+C,OAAOiD,WACpB,GAAC,kBAED,WACC,OAAOhG,KAAK+C,OAAOkD,MACpB,0EAAC,EArnBwB,GCF1B,GACC3D,KAAI,WACH,MAAO,CACN4D,YAAaC,EAAAA,EAEf,sDC9B8L,EC4C/L,CACAC,KAAAA,qBAEAC,WAAAA,CACAC,UAAAA,KAGAC,MAAAA,CACAC,MAAAA,CACAC,KAAAA,OACAC,QAAAA,GACAC,UAAAA,GAEAC,SAAAA,CACAH,KAAAA,OACAC,QAAAA,IAEAG,SAAAA,CACAJ,KAAAA,QACAC,SAAAA,GAEAI,aAAAA,CACAL,KAAAA,QACAC,QAAAA,OAIAK,SAAAA,CACAC,kBAAAA,WACA,gCACA,kBAEA,gCACA,oIClEIC,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WALlD,eCFA,GAXgB,OACd,GCTW,WAAkB,IAAIM,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACE,YAAY,iBAAiB,CAACH,EAAII,GAAG,UAAUJ,EAAIK,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACF,EAAG,OAAO,CAACE,YAAY,wBAAwB,CAACH,EAAIK,GAAGL,EAAIM,GAAGN,EAAIf,UAAUe,EAAIK,GAAG,KAAML,EAAIX,SAAUY,EAAG,IAAI,CAACD,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIX,UAAU,YAAYW,EAAIO,OAAOP,EAAIK,GAAG,KAAML,EAAIQ,OAAgB,QAAGP,EAAG,YAAY,CAACQ,IAAI,mBAAmBN,YAAY,yBAAyBO,MAAM,CAAC,aAAa,QAAQ,gBAAgBV,EAAIP,oBAAoB,CAACO,EAAII,GAAG,YAAY,GAAGJ,EAAIO,MAAM,EACvjB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,4IEQhC,OACA1B,KAAAA,uBAEAC,WAAAA,CACA6B,aAAAA,IACAC,mBAAAA,GAGA5B,MAAAA,CACA6B,SAAAA,CACA3B,KAAAA,OACAC,QAAAA,WAAAA,EACAC,UAAAA,IAIArE,KAAAA,WACA,OACA+F,QAAAA,EACAC,aAAAA,EAEA,EAEAvB,SAAAA,CAMAwB,aAAAA,WACA,mGACA,EAOAC,gBAAAA,WACA,mBACA,iBACA,GAEA,gEAEA,oDACA,EAEAC,qBAAAA,WACA,iCACA,qEAEA,kEACA,GAGAC,QAAAA,CACAC,SAAAA,WAAA,qKAEAC,UAAAA,UAAAA,UAAAA,EAAAA,cAAA,QACAC,EAAAA,EAAAA,IAAAA,EAAAA,gBAAAA,gBAEA,4DACA,iBACA,4DAEA,iBACA,YACAhG,EAAAA,MAAAA,EAAAA,IAAA,QAKA,OALA,UAEAiG,YAAAA,WACA,iBACA,WACA,mQAEA,ICtGiM,eCW7L,EAAU,CAAC,EAEf,EAAQ5B,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICbI,GAAY,OACd,GCTW,WAAkB,IAAIC,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACA,EAAG,qBAAqB,CAACQ,IAAI,mBAAmBN,YAAY,0BAA0BO,MAAM,CAAC,MAAQV,EAAIwB,EAAE,gBAAiB,iBAAiB,SAAWxB,EAAIkB,sBAAsBO,YAAYzB,EAAI0B,GAAG,CAAC,CAAC5D,IAAI,SAAS6D,GAAG,WAAW,MAAO,CAAC1B,EAAG,MAAM,CAACE,YAAY,wCAAwC,EAAEyB,OAAM,MAAS,CAAC5B,EAAIK,GAAG,KAAKJ,EAAG,eAAe,CAACS,MAAM,CAAC,KAAOV,EAAIgB,aAAa,aAAahB,EAAIiB,gBAAgB,MAAQjB,EAAIiB,gBAAgB,OAAS,SAAS,KAAOjB,EAAIc,QAAUd,EAAIe,YAAc,uBAAyB,eAAec,GAAG,CAAC,MAAQ,SAASC,GAAgC,OAAxBA,EAAOC,iBAAwB/B,EAAIoB,SAASY,MAAM,KAAMC,UAAU,MAAM,IAAI,EAC3sB,GACsB,IDUpB,EACA,KACA,WACA,MAIF,EAAe,EAAiB,wZEOhC,IAAMvH,GAAS,IAAI5C,EAEboK,GAAc,uDASL,cAAf,gCAuBC,oDAvBc,+GAEVxH,GAAOyH,eAAeC,MAAO1H,GAAOyH,eAAeC,IAAIC,SAAQ,0CAE3CC,EAAAA,QAAAA,IAAU5H,GAAOyH,eAAeC,IAAIC,UAAS,OAAtD,KAAPE,EAAU,EAAH,MACDxH,KAAKD,IAAIC,KAAKX,SAAU,CAAF,eAC+B,OAAhEkH,EAAAA,EAAAA,IAAYE,EAAE,gBAAiB,kCAAiC,kBACzDe,EAAQxH,KAAKD,IAAIC,KAAKX,UAAQ,yDAGtCkB,GAAQkH,KAAK,iDAAkD,EAAF,KAC7DC,EAAAA,EAAAA,IAAUjB,EAAE,gBAAiB,mDAAkD,QAQjF,IAJMkB,EAAQ,IAAIC,WAAW,IACvBC,EAAQV,GAAYW,OAAS,IACnCC,KAAKC,OAAOC,gBAAgBN,GACxBtI,EAAW,GACNuD,EAAI,EAAGA,EAAI+E,EAAMG,OAAQlF,IACjCvD,GAAY8H,GAAYe,OAAOP,EAAM/E,GAAKiF,GAC1C,yBACMxI,GAAQ,2DACf,+WC5BD,IAAM8I,IAAWC,EAAAA,EAAAA,gBAAe,oCAEhC,IACChC,QAAS,CAkBFiC,YAAW,YAAyH,sKAAJ,OAAlHpG,EAAI,EAAJA,KAAMrB,EAAW,EAAXA,YAAa0H,EAAS,EAATA,UAAWC,EAAS,EAATA,UAAWC,EAAY,EAAZA,aAAcnJ,EAAQ,EAARA,SAAU2C,EAAkB,EAAlBA,mBAAoByG,EAAU,EAAVA,WAAY9G,EAAK,EAALA,MAAOxB,EAAU,EAAVA,WAAU,kBAE9GoH,EAAAA,QAAAA,KAAWY,GAAU,CAAElG,KAAAA,EAAMrB,YAAAA,EAAa0H,UAAAA,EAAWC,UAAAA,EAAWC,aAAAA,EAAcnJ,SAAAA,EAAU2C,mBAAAA,EAAoByG,WAAAA,EAAY9G,MAAAA,EAAOxB,WAAAA,IAAa,OAArJ,GACRqH,OADCA,EAAU,EAAH,OACK,QAAN,EAAPA,EAASxH,YAAI,OAAb,EAAeD,IAAK,CAAF,qBAChByH,EAAO,gCAEP,IAAI3H,EAAM2H,EAAQxH,KAAKD,IAAIC,OAAK,QAOtC,MAPsC,0BAEvCO,GAAQmI,MAAM,6BAA8B,EAAF,IACpCC,EAAY,OAAG,EAAH,mBAAkB,QAAlB,EAAG,KAAOC,gBAAQ,OAAM,QAAN,EAAf,EAAiB5I,YAAI,OAAK,QAAL,EAArB,EAAuBD,WAAG,OAAM,QAAN,EAA1B,EAA4B8I,YAAI,WAAnC,EAAG,EAAkCC,QACvDxL,GAAGyL,aAAaC,cACfL,EAAelC,EAAE,gBAAiB,2CAA4C,CAAEkC,aAAAA,IAAkBlC,EAAE,gBAAiB,4BACrH,CAAEtC,KAAM,UACR,8DAbuI,EAgB1I,EAQM8E,YAAW,SAACvI,GAAI,2KAEE6G,EAAAA,QAAAA,OAAaY,GAAW,IAAH,OAAOzH,IAAK,OAA1C,GACR8G,OADCA,EAAU,EAAH,OACK,QAAN,EAAPA,EAASxH,YAAI,OAAb,EAAeD,IAAK,CAAF,qBAChByH,EAAO,iCAEP,GAAI,OAOV,MAPU,yBAEXjH,GAAQmI,MAAM,6BAA8B,EAAF,IACpCC,EAAY,OAAG,EAAH,mBAAkB,QAAlB,EAAG,KAAOC,gBAAQ,OAAM,QAAN,EAAf,EAAiB5I,YAAI,OAAK,QAAL,EAArB,EAAuBD,WAAG,OAAM,QAAN,EAA1B,EAA4B8I,YAAI,WAAnC,EAAG,EAAkCC,QACvDxL,GAAGyL,aAAaC,cACfL,EAAelC,EAAE,gBAAiB,2CAA4C,CAAEkC,aAAAA,IAAkBlC,EAAE,gBAAiB,4BACrH,CAAEtC,KAAM,UACR,6DAbmB,EAgBtB,EAQM+E,YAAW,SAACxI,EAAIyI,GAAY,6KAEV5B,EAAAA,QAAAA,IAAUY,GAAW,IAAH,OAAOzH,GAAMyI,GAAW,OAAnD,GACR3B,OADCA,EAAU,EAAH,OACK,QAAN,EAAPA,EAASxH,YAAI,OAAb,EAAeD,IAAK,CAAF,qBAChByH,EAAO,gCAENA,EAAQxH,KAAKD,IAAIC,MAAI,+BAWuB,MAXvB,0BAG7BO,GAAQmI,MAAM,6BAA8B,EAAF,IACZ,MAA1B,KAAME,SAASjF,SACZgF,EAAY,OAAG,EAAH,mBAAkB,QAAlB,EAAG,KAAOC,gBAAQ,OAAM,QAAN,EAAf,EAAiB5I,YAAI,OAAK,QAAL,EAArB,EAAuBD,WAAG,OAAM,QAAN,EAA1B,EAA4B8I,YAAI,WAAnC,EAAG,EAAkCC,QACvDxL,GAAGyL,aAAaC,cACfL,EAAelC,EAAE,gBAAiB,2CAA4C,CAAEkC,aAAAA,IAAkBlC,EAAE,gBAAiB,4BACrH,CAAEtC,KAAM,WAGJ2E,EAAU,KAAMF,SAAS5I,KAAKD,IAAI8I,KAAKC,QACvC,IAAIM,MAAMN,GAAQ,yDAlBQ,EAoBlC,giDC7DF,QACAhF,KAAAA,eAEAC,WAAAA,CACAsF,SAAAA,MAGAC,OAAAA,CAAAA,EAAAA,IAEArF,MAAAA,CACAsF,OAAAA,CACApF,KAAAA,MACAC,QAAAA,WAAA,UACAC,UAAAA,GAEAmF,WAAAA,CACArF,KAAAA,MACAC,QAAAA,WAAA,UACAC,UAAAA,GAEAyB,SAAAA,CACA3B,KAAAA,OACAC,QAAAA,WAAAA,EACAC,UAAAA,GAEAoF,QAAAA,CACAtF,KAAAA,EACAC,QAAAA,MAEAsF,WAAAA,CACAvF,KAAAA,QACAE,UAAAA,IAIArE,KAAAA,WACA,OACAL,OAAAA,IAAAA,EACAgK,SAAAA,EACAC,MAAAA,GACAC,gBAAAA,GACAC,YAAAA,IAAAA,QAAAA,YAAAA,MACAC,YAAAA,GACA1M,MAAAA,KAEA,EAEAoH,SAAAA,CASAuF,gBAAAA,WACA,+BACA,EACAC,iBAAAA,WACA,uCAEA,uBAIA,EAIA,0DAHA,qCAJA,6CAQA,EAEAC,aAAAA,WACA,8FACA,EAEAvF,QAAAA,WACA,yBACA,iBAEA,oBACA,EAEAwF,aAAAA,WACA,oBACA,iCAEA,uCACA,GAGAC,QAAAA,WACA,yBACA,EAEAhE,QAAAA,CACAiE,WAAAA,YAEAC,EAAAA,EAAAA,IAAAA,8BAAAA,KAAAA,MAAAA,OAAAA,IACA,EAEAC,UAAAA,SAAAA,GAAA,2IAGA,qBACA,+BAGA,6BACA,sEARA,EAUA,EAQAC,eAAAA,SAAAA,GAAA,qLAuBA,OAvBAC,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,IAAAA,EAAAA,GACA,cAEA,qEACAA,GAAAA,GAGAnC,EAAAA,CACA,8BACA,+BACA,gCACA,sCACA,gCACA,8BACA,+BACA,8BACA,uCAGA,uDACAA,EAAAA,KAAAA,EAAAA,YAAAA,kBAGAd,EAAAA,KAAA,kBAEAD,EAAAA,QAAAA,KAAAA,EAAAA,EAAAA,gBAAAA,qCAAAA,CACAmD,OAAAA,CACAC,OAAAA,OACAC,SAAAA,QAAAA,EAAAA,SAAAA,KAAAA,SAAAA,OACAC,OAAAA,EACAJ,OAAAA,EACAK,QAAAA,EAAAA,OAAAA,uBACAxC,UAAAA,KAEA,OATAd,EAAAA,EAAAA,KAAA,wBAWA,OAXA,0BAWAjH,GAAAA,MAAAA,6BAAAA,EAAAA,IAAA,2BAIAP,EAAAA,EAAAA,KAAAA,IAAAA,KACA+K,EAAAA,EAAAA,KAAAA,IAAAA,KAAAA,MACA/K,EAAAA,MAAAA,GAGAgL,EAAAA,OAAAA,OAAAA,GAAAA,QAAAA,SAAAA,EAAAA,GAAA,yBACAC,EAAAA,OAAAA,OAAAA,GAAAA,QAAAA,SAAAA,EAAAA,GAAA,yBAGAC,EAAAA,EAAAA,wBAAAA,GACAC,KAAAA,SAAAA,GAAA,oCAEAC,MAAAA,SAAAA,EAAAA,GAAA,kCACArB,EAAAA,EAAAA,wBAAAA,GACAoB,KAAAA,SAAAA,GAAA,oCAEAC,MAAAA,SAAAA,EAAAA,GAAA,kCAIAC,EAAAA,GACA,qBACAA,EAAAA,KAAAA,CACA3K,GAAAA,gBACA4K,UAAAA,EACAC,YAAAA,EAAAA,gBAAAA,mBACAd,QAAAA,IAKAT,EAAAA,EAAAA,gBAAAA,QAAAA,SAAAA,GAAA,sCAEAwB,EAAAA,EAAAA,OAAAA,GAAAA,OAAAA,GAAAA,OAAAA,GAGAC,EAAAA,EAAAA,QAAAA,SAAAA,EAAAA,GACA,sBAGA,mBACAA,EAAAA,EAAAA,aAAAA,GAEAA,EAAAA,EAAAA,eACA,GANA,CAOA,OAEA,iCAEA,mCACA,gBAAAC,KAAAA,EAAAA,6BAEA,CACA,IAEA,aACAnL,GAAAA,KAAAA,cAAAA,EAAAA,aAAA,yDAhGA,EAiGA,EAOAoL,uBAAAA,MAAAA,WACA,yCACA,QAKAC,mBAAAA,WAAA,qJAGA,OAFA,aAEApE,EAAAA,KAAA,kBAEAD,EAAAA,QAAAA,KAAAA,EAAAA,EAAAA,gBAAAA,iDAAAA,CACAmD,OAAAA,CACAC,OAAAA,OACAC,SAAAA,EAAAA,SAAAA,QAEA,OALApD,EAAAA,EAAAA,KAAA,uBAOA,OAPA,yBAOAjH,GAAAA,MAAAA,iCAAAA,EAAAA,IAAA,2BAKAyJ,EAAAA,EAAAA,gBAAAA,QAAAA,SAAAA,GAAA,sCAGA6B,EAAAA,OAAAA,OAAAA,EAAAA,KAAAA,IAAAA,KAAAA,OACAC,QAAAA,SAAAA,EAAAA,GAAA,yBAGA,+CACAX,KAAAA,SAAAA,GAAA,oCACAY,OAAAA,GAEA,aACAxL,GAAAA,KAAAA,kBAAAA,EAAAA,iBAAA,wDA7BA,EA8BA,EASAyL,wBAAAA,SAAAA,GAAA,WACA,+BAEA,oBACA,SAEA,IACA,sDAEA,sCACA,SAIA,kDACA,QAEA,CAGA,uDAEA,QADA,oDACA,kCACA,aAEA,CAEA,qCAEA,OADAC,EAAAA,EAAAA,WAAAA,EAAAA,KACA,CACA,OAGA,2BACA,WACAC,EAAAA,KAAAA,EAAAA,MAAAA,UACA,QAEA,CAIAC,EAAAA,KAAAA,EAGA,CAFA,SACA,QACA,CACA,QACA,MACA,EAQAC,gBAAAA,SAAAA,GACA,UACA,uCAKA,OACAC,KAAAA,YACAC,UAAAA,EAAAA,gBAAAA,UAEA,8CACA,uCACA,OACAD,KAAAA,aACAC,UAAAA,EAAAA,gBAAAA,UAEA,uCACA,OACAD,KAAAA,YACAC,UAAAA,EAAAA,gBAAAA,UAEA,wCACA,OACAD,KAAAA,cACAC,UAAAA,EAAAA,gBAAAA,WAEA,sCACA,OACAD,KAAAA,YACAC,UAAAA,EAAAA,gBAAAA,sBAEA,sCACA,OACAD,KAAAA,YACAC,UAAAA,EAAAA,gBAAAA,eAEA,6CACA,OACAD,KAAAA,mBACAC,UAAAA,EAAAA,gBAAAA,iBAEA,QACA,SAEA,EAQAC,qBAAAA,SAAAA,GACA,MACA,8FACAjI,EAAAA,QAAAA,EAAAA,EAAAA,kCAAAA,IAAAA,EAAAA,EAAAA,QACA,2DACAkI,EAAAA,MAAAA,YAAAA,KAAAA,YAAAA,0BACAA,EAAAA,MAAAA,OAEA,yDACAlI,EAAAA,EAAAA,MAAAA,cACA,OACAA,EAAAA,QAAAA,EAAAA,EAAAA,4BAAAA,IAAAA,EAAAA,EAAAA,EACA,MALAA,EAAAA,EAAAA,gBAAAA,cAAAA,CAAAmI,OAAAA,EAAAA,MAAAA,SAOA,WACA/L,GAAAA,GAAAA,OAAAA,EAAAA,MAAAA,UAAAA,KAAAA,OAAAA,EAAAA,MAAAA,WACA6H,UAAAA,EAAAA,MAAAA,UACAD,UAAAA,EAAAA,MAAAA,UACAoE,KAAAA,EAAAA,MAAAA,EAAAA,MAAAA,UACApB,SAAAA,EAAAA,MAAAA,YAAAA,KAAAA,YAAAA,gBACAC,YAAAA,EAAAA,MAAAA,EAAAA,MACAjH,SAAAA,EACAqI,2BAAAA,EAAAA,4BAAAA,IACA,wCAEA,EAOAC,SAAAA,SAAAA,GAAA,uJAEA,iBAEAvP,EAAAA,OAAAA,CAAA,+BACA,oCAKA,OAHA,wBAEA,mCACA,uBACA,cAIAA,EAAAA,QAAAA,CAAA,gCACAA,EAAAA,QAAAA,GAAA,OACA,OADAwP,EAAAA,EAAAA,KACA,iDACA,WAMA,GAHA,aACAtM,GAAAA,MAAAA,wCAAAA,GAAA,UAEAlB,EAAAA,MAEA,uCACAhC,EAAAA,YAAAA,EAAAA,YAAAA,iBAAAA,CAAA,iCACAyP,KAAA,QAAAzN,EAAAA,EAAAA,KAAA,QAGA,OAAA4C,GAAAA,EAAAA,SAAAA,KAAAA,IAAAA,EAAAA,SAAAA,MAAAA,QAAAA,KAAAA,KAAA,UACA,eACAA,KAAAA,EACAqG,UAAAA,EAAAA,UACAC,UAAAA,EAAAA,UACAlJ,SAAAA,EACAuB,YAAAA,EAAAA,SAAAA,iBAAAA,GAAAA,kBAAAA,cAAAA,oBACAT,WAAAA,KAAAA,UAAAA,EAAAA,SAAAA,mBACA,QAPA,GAAA0M,EAAAA,EAAAA,MAUAxN,EAAAA,CAAA,gBAEA,OADAwN,EAAAA,YAAAA,EACA,UACA,yBACA,wBACA,YAFAE,EAAAA,KAMAA,MAAAA,EAAA,wBAGA,gDAGA,kFAEA,wBAEA,mCACA,IACA,oBACAxM,GAAAA,MAAAA,+BAAAA,EAAAA,IAAA,QAEA,OAFA,UAEA,0FAlEA,EAoEA,IC3hByL,kBCWrL,GAAU,CAAC,EAEf,GAAQqE,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAkB,IAAIC,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,kBAAkB,CAACF,EAAG,QAAQ,CAACS,MAAM,CAAC,IAAM,yBAAyB,CAACV,EAAIK,GAAGL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,mCAAmCxB,EAAIK,GAAG,KAAKJ,EAAG,WAAW,CAACQ,IAAI,SAASN,YAAY,wBAAwBO,MAAM,CAAC,GAAK,uBAAuB,UAAYV,EAAIyE,WAAW,QAAUzE,EAAI0E,QAAQ,YAAa,EAAM,YAAc1E,EAAIgF,iBAAiB,uBAAuB,kBAAM,CAAK,EAAC,eAAc,EAAK,QAAUhF,EAAIN,SAASmC,GAAG,CAAC,KAAO7B,EAAIoF,WAAW,OAASpF,EAAIsF,UAAU,kBAAkBtF,EAAI2H,UAAUlG,YAAYzB,EAAI0B,GAAG,CAAC,CAAC5D,IAAI,aAAa6D,GAAG,YAAoB,IAATiE,EAAM,EAANA,OAAU,MAAO,CAAC5F,EAAIK,GAAG,WAAWL,EAAIM,GAAGsF,EAAS5F,EAAIkF,aAAelF,EAAIwB,EAAE,gBAAiB,sCAAsC,UAAU,KAAKuG,MAAM,CAAC3P,MAAO4H,EAAI5H,MAAO4P,SAAS,SAAUC,GAAMjI,EAAI5H,MAAM6P,CAAG,EAAEC,WAAW,YAAY,EAC13B,GACsB,IDUpB,EACA,KACA,KACA,MAIF,GAAe,GAAiB,koBEmBhC,QACC7D,OAAQ,CAAC8D,GAAgBvJ,GAEzBI,MAAO,CACN6B,SAAU,CACT3B,KAAMkJ,OACNjJ,QAAS,WAAO,EAChBC,UAAU,GAEXwI,MAAO,CACN1I,KAAMtE,EACNuE,QAAS,MAEVG,SAAU,CACTJ,KAAMmJ,QACNlJ,SAAS,IAIXpE,KAAI,WAAG,MACN,MAAO,CACNL,OAAQ,IAAI5C,EAGZwQ,OAAQ,CAAC,EAGT5D,SAAS,EACT6D,QAAQ,EACRC,MAAM,EAINC,YAAa,IAAIC,GAAAA,EAAO,CAAEC,YAAa,IAMvCC,cAAyB,QAAZ,EAAEnQ,KAAKmP,aAAK,aAAV,EAAYjL,MAE7B,EAEA6C,SAAU,CAOTqJ,QAAS,CACRC,IAAG,WACF,MAA2B,KAApBrQ,KAAKmP,MAAMnL,IACnB,EACAsM,IAAG,SAAC7O,GACHzB,KAAKmP,MAAMnL,KAAOvC,EACf,KACA,EACJ,GAGD8O,aAAY,WACX,OAAO,IAAIrQ,MAAK,IAAIA,MAAOC,SAAQ,IAAID,MAAOE,UAAY,GAC3D,EAGAoQ,KAAI,WACH,IAAMC,EAAgBC,OAAOC,cAC1BD,OAAOC,cACP,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAC9CC,EAAcF,OAAOG,gBACxBH,OAAOG,gBACP,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAG5F,MAAO,CACNC,aAAc,CACbC,eAJqBL,OAAOM,SAAWN,OAAOM,SAAW,EAKzDJ,YAAAA,EACAK,YAAaR,EACbA,cAAAA,GAEDS,YAAa,MAEf,EAEAC,aAAY,WACX,OAAOnR,KAAKmP,OAASnP,KAAKmP,MAAMiC,SAAUC,EAAAA,EAAAA,MAAiBC,GAC5D,GAID5I,QAAS,CAQR6I,WAAU,SAACpC,GACV,QAAIA,EAAMxN,UACqB,iBAAnBwN,EAAMxN,UAAmD,KAA1BwN,EAAMxN,SAAS6P,WAItDrC,EAAMsC,iBACItC,EAAMsC,eACTC,UAKZ,EAMAC,gBAAe,SAAC7N,GAAM,MACrB,GAAKA,EAIL,OAAO,IAAI5D,KAAsB,QAAlB,EAAC4D,EAAK8N,MADP,wCACmB,aAAjB,EAAmBC,MACpC,EAMAC,mBAAkB,SAAChO,GAIlB,OAFgB,IAAI5D,KAAKA,KAAK6R,IAAIjO,EAAKkO,cAAelO,EAAKmO,WAAYnO,EAAK1D,YAE7D8R,cAAcC,MAAM,KAAK,EACzC,EAOAC,mBAAkB,SAACtO,GAClB9D,KAAKmP,MAAMpE,WAAa/K,KAAK8R,mBAAmBhO,GAChD9D,KAAKqS,YAAY,aAClB,EAQAC,oBAAmB,WAClBtS,KAAKmP,MAAMpE,WAAa,GACxB/K,KAAKqS,YAAY,aAClB,EAOAE,aAAY,SAACvO,GACZhE,KAAKwS,KAAKxS,KAAKmP,MAAO,UAAWnL,EAAKwN,OACvC,EAMAiB,aAAY,WACPzS,KAAKmP,MAAMuD,UACd1S,KAAKmP,MAAMnL,KAAOhE,KAAKmP,MAAMuD,QAC7B1S,KAAK2S,QAAQ3S,KAAKmP,MAAO,WACzBnP,KAAKqS,YAAY,QAEnB,EAKMO,SAAQ,WAAG,iJAGE,OAHF,SAEf,EAAK3G,SAAU,EACf,EAAK8D,MAAO,EAAK,SACX,EAAKxE,YAAY,EAAK4D,MAAMnM,IAAG,OACrCH,GAAQgQ,MAAM,gBAAiB,EAAK1D,MAAMnM,IACpCoI,EAAkC,SAAxB,EAAK+D,MAAMjC,SACxBnE,EAAE,gBAAiB,kCAAmC,CAAExE,KAAM,EAAK4K,MAAM5K,OACzEwE,EAAE,gBAAiB,oCAAqC,CAAExE,KAAM,EAAK4K,MAAM5K,QAC9EsE,EAAAA,EAAAA,IAAYuC,GACZ,EAAK0H,MAAM,eAAgB,EAAK3D,OAAM,kDAGtC,EAAKY,MAAO,EAAI,QAEI,OAFJ,UAEhB,EAAK9D,SAAU,EAAK,4EAfL,EAiBjB,EAOAoG,YAAW,WAAmB,kCAAfU,EAAa,yBAAbA,EAAa,gBAC3B,GAA6B,IAAzBA,EAAc3I,OAAlB,CAKA,GAAIpK,KAAKmP,MAAMnM,GAAI,CAClB,IAAMyI,EAAa,CAAC,EAqCpB,OAlCAsH,EAAcC,SAAQ,SAAA5M,GACa,WAA9B,GAAQ,EAAK+I,MAAM/I,IACtBqF,EAAWrF,GAAQ1D,KAAKuQ,UAAU,EAAK9D,MAAM/I,IAE7CqF,EAAWrF,GAAQ,EAAK+I,MAAM/I,GAAM8M,UAEtC,SAEAlT,KAAKgQ,YAAYmD,IAAG,4BAAC,qGAEJ,OADhB,EAAKrD,QAAS,EACd,EAAKD,OAAS,CAAC,EAAC,kBAEY,EAAKrE,YAAY,EAAK2D,MAAMnM,GAAIyI,GAAW,OAAhE2H,EAAe,EAAH,KAEdL,EAAcM,QAAQ,aAAe,IAExC,EAAKV,QAAQ,EAAKxD,MAAO,eAGzB,EAAKA,MAAM/K,uBAAyBgP,EAAajP,0BAIlD,EAAKwO,QAAQ,EAAK9C,OAAQkD,EAAc,KACxClK,EAAAA,EAAAA,IAAYE,EAAE,gBAAiB,6BAA8B,CAAEuK,aAAcP,EAAc,MAAM,mDACvF3H,EAAO,KAAPA,UACiB,KAAZA,IACd,EAAKmI,YAAYR,EAAc,GAAI3H,IACnCpB,EAAAA,EAAAA,IAAUjB,EAAE,gBAAiBqC,KAC7B,QAEkB,OAFlB,UAED,EAAK0E,QAAS,EAAK,6EAItB,CAGAjN,GAAQgQ,MAAM,sBAAuB7S,KAAKmP,MA5C1C,CA6CD,EAQAoE,YAAW,SAACC,EAAUpI,GAGrB,OADApL,KAAK+P,MAAO,EACJyD,GACR,IAAK,WACL,IAAK,UACL,IAAK,aACL,IAAK,QACL,IAAK,OAEJxT,KAAKwS,KAAKxS,KAAK6P,OAAQ2D,EAAUpI,GAEjC,IAAIqI,EAAazT,KAAK0T,MAAMF,GAC5B,GAAIC,EAAY,CACXA,EAAWE,MACdF,EAAaA,EAAWE,KAGzB,IAAMC,EAAYH,EAAWI,cAAc,cACvCD,GACHA,EAAUE,OAEZ,CACA,MAED,IAAK,qBAEJ9T,KAAKwS,KAAKxS,KAAK6P,OAAQ2D,EAAUpI,GAGjCpL,KAAKmP,MAAM7K,oBAAsBtE,KAAKmP,MAAM7K,mBAI9C,EAQAyP,oBAAqBC,MAAS,SAASR,GACtCxT,KAAKqS,YAAYmB,EAClB,GAAG,OC1V6L,GC4DlM,CACApN,KAAAA,wBAEAC,WAAAA,CACA4N,eAAAA,KACA/L,aAAAA,IACAgM,aAAAA,KACAC,SAAAA,IACAhM,mBAAAA,GAGAyD,OAAAA,CAAAA,IAEArF,MAAAA,CACA4I,MAAAA,CACA1I,KAAAA,EACAE,UAAAA,IAIAI,SAAAA,CACAqN,iBAAAA,WACA,uCACAC,OAAAA,KAAAA,MAAAA,WAEA,EAEAC,cAAAA,WACA,mCACA,gBC9EI,GAAU,CAAC,EAEf,GAAQpN,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAkB,IAAIC,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,qBAAqB,CAACnC,IAAIkC,EAAI4H,MAAMnM,GAAG0E,YAAY,2BAA2BO,MAAM,CAAC,MAAQV,EAAI4H,MAAMoF,sBAAsBvL,YAAYzB,EAAI0B,GAAG,CAAC,CAAC5D,IAAI,SAAS6D,GAAG,WAAW,MAAO,CAAC1B,EAAG,WAAW,CAACE,YAAY,wBAAwBO,MAAM,CAAC,KAAOV,EAAI4H,MAAMtE,UAAU,eAAetD,EAAI4H,MAAMoF,wBAAwB,EAAEpL,OAAM,MAAS,CAAC5B,EAAIK,GAAG,KAAKJ,EAAG,eAAe,CAACS,MAAM,CAAC,KAAO,cAAc,CAACV,EAAIK,GAAG,SAASL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,uBAAwB,CAAEyL,UAAWjN,EAAI4H,MAAMsF,oBAAqB,UAAUlN,EAAIK,GAAG,KAAML,EAAI4H,MAAMuF,SAAWnN,EAAI4H,MAAMwF,UAAWnN,EAAG,eAAe,CAACS,MAAM,CAAC,KAAO,cAAc,KAAOV,EAAI6M,mBAAmB,CAAC7M,EAAIK,GAAG,SAASL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,iBAAkB,CAAC6L,OAAQrN,EAAI+M,iBAAkB,UAAU/M,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAI4H,MAAM0F,UAAWrN,EAAG,iBAAiB,CAACS,MAAM,CAAC,KAAO,cAAcmB,GAAG,CAAC,MAAQ,SAASC,GAAgC,OAAxBA,EAAOC,iBAAwB/B,EAAIqL,SAASrJ,MAAM,KAAMC,UAAU,IAAI,CAACjC,EAAIK,GAAG,SAASL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,YAAY,UAAUxB,EAAIO,MAAM,EACvkC,GACsB,IDUpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,8IEqChC,QACA1B,KAAAA,mBAEAC,WAAAA,CACA4N,eAAAA,KACAa,sBAAAA,GACA3M,mBAAAA,GAGA5B,MAAAA,CACA6B,SAAAA,CACA3B,KAAAA,OACAC,QAAAA,WAAAA,EACAC,UAAAA,IAIArE,KAAAA,WACA,OACAyS,QAAAA,EACA9I,SAAAA,EACA+I,qBAAAA,EACAnJ,OAAAA,GAEA,EACA9E,SAAAA,CACAkO,wBAAAA,WACA,oBACA,qBAEA,yBACA,kBAEA,iBACA,EACAC,UAAAA,WACA,8CACA,EACAC,SAAAA,WACA,wDACApM,EAAAA,gBAAAA,oCACA,EACA,EACAqM,cAAAA,WACA,iCACArM,EAAAA,gBAAAA,uDACAA,EAAAA,gBAAAA,iDACA,EACAsM,SAAAA,WAEA,MADA,6DACA,iBACA,GAEAC,MAAAA,CACAlN,SAAAA,WACA,iBACA,GAEAM,QAAAA,CAIA6M,sBAAAA,WACA,mDACA,yBACA,4BAEA,iBAEA,EAIAC,qBAAAA,WAAA,oJAGA,OAFA,sBAEAC,GAAAA,EAAAA,EAAAA,gBAAAA,qEAAAA,CAAAlR,KAAAA,EAAAA,WAAA,SACAsF,EAAAA,QAAAA,IAAAA,GAAA,OAAAgC,EAAAA,EAAAA,KACA,yBACA4B,KAAAA,SAAAA,GAAA,mBACAC,MAAAA,SAAAA,EAAAA,GAAA,sCACA7K,GAAAA,KAAAA,EAAAA,QACA,8DAEAjD,GAAAA,aAAAA,cAAAA,EAAAA,gBAAAA,oCAAAA,CAAA6G,KAAAA,UAAA,QAEA,OAFA,UAEA,2QAEA,EAIAiP,WAAAA,WACA,eACA,gBACA,4BACA,cACA,EAMAC,YAAAA,SAAAA,GACA,yDAEA,uBACA,ICnK6L,kBCWzL,GAAU,CAAC,EAEf,GAAQzO,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAkB,IAAIC,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACS,MAAM,CAAC,GAAK,6BAA6B,CAACT,EAAG,qBAAqB,CAACE,YAAY,2BAA2BO,MAAM,CAAC,MAAQV,EAAI2N,UAAU,SAAW3N,EAAI4N,SAAS,gBAAgB5N,EAAIyN,qBAAqBhM,YAAYzB,EAAI0B,GAAG,CAAC,CAAC5D,IAAI,SAAS6D,GAAG,WAAW,MAAO,CAAC1B,EAAG,MAAM,CAACE,YAAY,kCAAkC,EAAEyB,OAAM,MAAS,CAAC5B,EAAIK,GAAG,KAAKJ,EAAG,iBAAiB,CAACS,MAAM,CAAC,KAAOV,EAAI0N,wBAAwB,aAAa1N,EAAI6N,cAAc,MAAQ7N,EAAI6N,eAAehM,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOuM,kBAAyBrO,EAAIgO,sBAAsBhM,MAAM,KAAMC,UAAU,MAAM,GAAGjC,EAAIK,GAAG,KAAKL,EAAIsO,GAAItO,EAAIsE,QAAQ,SAASsD,GAAO,OAAO3H,EAAG,wBAAwB,CAACnC,IAAI8J,EAAMnM,GAAGiF,MAAM,CAAC,YAAYV,EAAIa,SAAS,MAAQ+G,GAAO/F,GAAG,CAAC,eAAe7B,EAAIoO,cAAc,KAAI,EACj2B,GACsB,IDUpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,kGEnBgK,GCiChM,CACAvP,KAAAA,sBAEAG,MAAAA,CACAvD,GAAAA,CACAyD,KAAAA,OACAE,UAAAA,GAEAmP,OAAAA,CACArP,KAAAA,OACAC,QAAAA,WAAA,WAEA0B,SAAAA,CACA3B,KAAAA,OACAC,QAAAA,WAAAA,EACAC,UAAAA,GAEAwI,MAAAA,CACA1I,KAAAA,EACAC,QAAAA,OAIAK,SAAAA,CACAzE,KAAAA,WACA,6BACA,ICzCA,IAXgB,OACd,ICRW,WAAkB,IAAIiF,EAAIvH,KAAqB,OAAOwH,EAApBD,EAAIE,MAAMD,IAAaD,EAAIjF,KAAKyT,GAAGxO,EAAIyO,GAAGzO,EAAI0O,GAAG,CAACC,IAAI,aAAa,YAAY3O,EAAIjF,MAAK,GAAOiF,EAAIuO,OAAOK,UAAU,CAAC5O,EAAIK,GAAG,OAAOL,EAAIM,GAAGN,EAAIjF,KAAK8T,MAAM,OACxM,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,+BEInBC,GAAqB,CACjCC,KAAM,EACNC,KAAM,EACNC,OAAQ,EACRC,OAAQ,EACRC,OAAQ,EACRC,MAAO,IAGKC,GAAsB,CAClCC,UAAWR,GAAmBE,KAC9BO,kBAAmBT,GAAmBE,KAAOF,GAAmBG,OAASH,GAAmBI,OAASJ,GAAmBK,OACxHK,UAAWV,GAAmBI,OAC9BO,IAAKX,GAAmBG,OAASH,GAAmBI,OAASJ,GAAmBE,KAAOF,GAAmBK,OAASL,GAAmBM,OAUhI,SAASM,GAAeC,EAAsBC,GACpD,OAAOD,IAAyBb,GAAmBC,OAASY,EAAuBC,KAAwBA,CAC5G,CASO,SAASC,GAAsBC,GAErC,SAAKJ,GAAeI,EAAgBhB,GAAmBE,QAAUU,GAAeI,EAAgBhB,GAAmBI,UAK9GQ,GAAeI,EAAgBhB,GAAmBE,QACtDU,GAAeI,EAAgBhB,GAAmBG,SAAWS,GAAeI,EAAgBhB,GAAmBK,SAMjH,CAkCO,SAASY,GAAkBJ,EAAsBK,GACvD,OAAIN,GAAeC,EAAsBK,GAbnC,SAA6BL,EAAsBM,GACzD,OAAON,GAAwBM,CAChC,CAYSC,CAAoBP,EAAsBK,GA1B5C,SAAwBL,EAAsBQ,GACpD,OAAOR,EAAuBQ,CAC/B,CA0BSC,CAAeT,EAAsBK,EAE9C,6BC9GmM,GC2HnM,CACAnR,KAAAA,yBAEAC,WAAAA,CACA4N,eAAAA,KACA2D,iBAAAA,KACAC,cAAAA,KACAC,KAAAA,GAAAA,EACAC,YAAAA,GAAAA,SAGAnM,OAAAA,CAAAA,IAEAtJ,KAAAA,WACA,OACA0V,eAAAA,KAAAA,SAAAA,SAAAA,IAAAA,UAAAA,GAEAC,2BAAAA,EAEAC,kBAAAA,GACAC,mBAAAA,GAEA,EAEApR,SAAAA,CAMAqR,wBAAAA,WAAA,WACA,6CACAC,QAAAA,SAAAA,GAAA,mCACA5K,KAAAA,SAAAA,GACA,UACA,gCACA,qCACA,8BACA,mCACA,gCACA,mCACA,gCACA,qCACA,QACA,YAEA,IACA4K,QAAAA,SAAAA,GAAA,mBACAC,KAAAA,KACA,EAOAC,yBAAAA,WAAA,WACA,yBACA9K,KAAAA,SAAAA,GAAA,oCACA4K,QAAAA,SAAAA,GAAA,YACAjO,OAAAA,CACA,EAOAoO,2BAAAA,WACA,iCACA,EAQAC,SAAAA,WACA,gCACA,EAQAC,wBAAAA,WACA,6CACA,GAGAhM,QAAAA,WAEA,6DACA,EAEAhE,QAAAA,CAQAiQ,qBAAAA,SAAAA,GAEA,4CACA,EASAC,oBAAAA,SAAAA,GACA,mCACA,EASAC,oBAAAA,SAAAA,GACA,yBACA,+BACA,EASAC,0BAAAA,SAAAA,GACA,OFjJO,SAA8BC,EAAexB,GACnD,OAAOH,GAAsBE,GAAkByB,EAAexB,GAC/D,CE+IA,0BACA,EASAyB,uBAAAA,SAAAA,GACA,oDAEA,4BAIA,+BACA,gBChRI,GAAU,CAAC,EAEf,GAAQ9R,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACA,EAAG,KAAK,CAAGD,EAAIkR,SAAuTlR,EAAIO,KAAjTN,EAAG,mBAAmB,CAACS,MAAM,CAAC,QAAUV,EAAIqR,oBAAoBrR,EAAI2Q,kBAAkB1B,QAAQ,SAAWjP,EAAIuI,QAAQ1G,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIyR,uBAAuBzR,EAAI2Q,kBAAkB1B,OAAO,IAAI,CAACjP,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,kBAAkB,YAAqBxB,EAAIK,GAAG,KAAML,EAAIkR,UAAYlR,EAAImR,yBAA2BnR,EAAItF,OAAOgX,sBAAuB,CAAG1R,EAAI0Q,0BAAkmDzQ,EAAG,OAAO,CAAC0R,MAAM,CAAClO,OAAQzD,EAAIiR,6BAA6B,CAAChR,EAAG,mBAAmB,CAACS,MAAM,CAAC,QAAUV,EAAIqR,oBAAoBrR,EAAI2Q,kBAAkB3B,MAAM,SAAWhP,EAAIuI,SAAWvI,EAAIuR,0BAA0BvR,EAAI2Q,kBAAkB3B,OAAOnN,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIyR,uBAAuBzR,EAAI2Q,kBAAkB3B,KAAK,IAAI,CAAChP,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,SAAS,gBAAgBxB,EAAIK,GAAG,KAAKJ,EAAG,mBAAmB,CAACS,MAAM,CAAC,QAAUV,EAAIqR,oBAAoBrR,EAAI2Q,kBAAkBzB,QAAQ,SAAWlP,EAAIuI,SAAWvI,EAAIuR,0BAA0BvR,EAAI2Q,kBAAkBzB,SAASrN,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIyR,uBAAuBzR,EAAI2Q,kBAAkBzB,OAAO,IAAI,CAAClP,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,WAAW,gBAAgBxB,EAAIK,GAAG,KAAKJ,EAAG,mBAAmB,CAACS,MAAM,CAAC,QAAUV,EAAIqR,oBAAoBrR,EAAI2Q,kBAAkB1B,QAAQ,SAAWjP,EAAIuI,SAAWvI,EAAIuR,0BAA0BvR,EAAI2Q,kBAAkB1B,SAASpN,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIyR,uBAAuBzR,EAAI2Q,kBAAkB1B,OAAO,IAAI,CAACjP,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,SAAS,gBAAgBxB,EAAIK,GAAG,KAAKJ,EAAG,mBAAmB,CAACS,MAAM,CAAC,QAAUV,EAAIqR,oBAAoBrR,EAAI2Q,kBAAkBxB,QAAQ,SAAWnP,EAAIuI,SAAWvI,EAAIuR,0BAA0BvR,EAAI2Q,kBAAkBxB,SAAStN,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIyR,uBAAuBzR,EAAI2Q,kBAAkBxB,OAAO,IAAI,CAACnP,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,WAAW,gBAAgBxB,EAAIK,GAAG,KAAKJ,EAAG,iBAAiB,CAAC4B,GAAG,CAAC,MAAQ,SAASC,GAAQ9B,EAAI0Q,2BAA4B,CAAK,GAAGjP,YAAYzB,EAAI0B,GAAG,CAAC,CAAC5D,IAAI,OAAO6D,GAAG,WAAW,MAAO,CAAC1B,EAAG,eAAe,EAAE2B,OAAM,IAAO,MAAK,EAAM,aAAa,CAAC5B,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,wBAAwB,iBAAiB,GAAx4G,CAACvB,EAAG,gBAAgB,CAACS,MAAM,CAAC,QAAUV,EAAIoR,qBAAqBpR,EAAI4Q,mBAAmBtB,WAAW,MAAQtP,EAAI4Q,mBAAmBtB,UAAU,KAAOtP,EAAIyQ,eAAe,SAAWzQ,EAAIuI,QAAQ1G,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO9B,EAAIsR,oBAAoBtR,EAAI4Q,mBAAmBtB,UAAU,IAAI,CAACtP,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,cAAc,gBAAgBxB,EAAIK,GAAG,KAAKJ,EAAG,gBAAgB,CAACS,MAAM,CAAC,QAAUV,EAAIoR,qBAAqBpR,EAAI4Q,mBAAmBrB,mBAAmB,MAAQvP,EAAI4Q,mBAAmBrB,kBAAkB,SAAWvP,EAAIuI,OAAO,KAAOvI,EAAIyQ,gBAAgB5O,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO9B,EAAIsR,oBAAoBtR,EAAI4Q,mBAAmBrB,kBAAkB,IAAI,CAACvP,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,6BAA6B,gBAAgBxB,EAAIK,GAAG,KAAKJ,EAAG,gBAAgB,CAACE,YAAY,uCAAuCO,MAAM,CAAC,QAAUV,EAAIoR,qBAAqBpR,EAAI4Q,mBAAmBpB,WAAW,MAAQxP,EAAI4Q,mBAAmBpB,UAAU,SAAWxP,EAAIuI,OAAO,KAAOvI,EAAIyQ,gBAAgB5O,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO9B,EAAIsR,oBAAoBtR,EAAI4Q,mBAAmBpB,UAAU,IAAI,CAACxP,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,4BAA4B,gBAAgBxB,EAAIK,GAAG,KAAKJ,EAAG,iBAAiB,CAACS,MAAM,CAAC,MAAQV,EAAIwB,EAAE,gBAAiB,uBAAuBK,GAAG,CAAC,MAAQ,SAASC,GAAQ9B,EAAI0Q,2BAA4B,CAAI,GAAGjP,YAAYzB,EAAI0B,GAAG,CAAC,CAAC5D,IAAI,OAAO6D,GAAG,WAAW,MAAO,CAAC1B,EAAG,QAAQ,EAAE2B,OAAM,IAAO,MAAK,EAAM,YAAY,CAAC5B,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIgR,yBAA2B,GAAKhR,EAAI6Q,yBAAyB,kBAAs1D7Q,EAAIO,MAAM,IACj7H,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,6jBEwRhC,QACA1B,KAAAA,mBAEAC,WAAAA,CACAC,UAAAA,IACA2N,eAAAA,KACA2D,iBAAAA,KACAuB,cAAAA,KACAjR,aAAAA,IACAgM,aAAAA,KACAkF,qBAAAA,KACAC,kBAAAA,KACAlF,SAAAA,IACAmF,oBAAAA,GACAC,uBAAAA,IAGA3N,OAAAA,CAAAA,IAEArF,MAAAA,CACAyF,WAAAA,CACAvF,KAAAA,QACAC,SAAAA,GAEA8S,MAAAA,CACA/S,KAAAA,OACAC,QAAAA,OAIApE,KAAAA,WACA,OACAgG,aAAAA,EACAD,QAAAA,EAGAoR,SAAAA,EAEAC,0BAAAA,IAAAA,QAAAA,oBAAAA,MACAC,qBAAAA,IAAAA,QAAAA,qBAAAA,MAEA,EAEA5S,SAAAA,CAMAP,MAAAA,WAEA,8BACA,mDACA,6BACA,gDACAqE,UAAAA,KAAAA,MAAAA,UACA2J,UAAAA,KAAAA,MAAAA,mBAGA,oDACAA,UAAAA,KAAAA,MAAAA,mBAGA,kDACA,6BACA,0CACAvQ,MAAAA,KAAAA,MAAAA,MAAAA,SAGA,0CACAA,MAAAA,KAAAA,MAAAA,MAAAA,SAGA,yBACA,2BAEA,CACA,oBACA,0CAAAuV,MAAAA,KAAAA,QAEA,+BACA,EAOA5S,SAAAA,WACA,8BACA,kCACA,qBAEA,IACA,EAOAgT,kBAAAA,CACAvJ,IAAAA,WACA,kDACA,qBACA,EACAC,IAAAA,SAAAA,GACA,yCACA,qDACA,wBACA,2BACA,GACAzN,GAAAA,MAAAA,yBAAAA,EAAAA,KAAAA,MAAAA,WACA,GAGAgX,gBAAAA,WACA,+CACA,iFAEA,IACA,EAOAC,oBAAAA,CACAzJ,IAAAA,WACA,mDACA,mBACA,EACAC,IAAAA,SAAAA,GAAA,2IAEA,GAFA,KAEAyJ,EAAAA,GAAA,gKACAA,EAAAA,GAAAA,IAAAA,EAAAA,MAAAA,cAAAA,EAAAA,MAAAA,UAAA,2CAHA,EAIA,GAGA3V,uBAAAA,WACA,4CACA,YAGA,gDAEA,6BAIA,WACA,EAOA4V,cAAAA,WACA,sCACA,EAOAC,mCAAAA,WACA,mDACA,EAOAC,0BAAAA,CACA7J,IAAAA,WACA,oCACA,EACAC,IAAAA,SAAAA,GAAA,2IACA,uEADA,EAEA,GAQA6J,iBAAAA,WACA,oBACA,mDAEA,EAEAC,0CAAAA,WACA,mCAGA,gDAQA,EASAC,gBAAAA,WACA,2EACA,EACAC,sBAAAA,WACA,0EACA,EAIAC,mBAAAA,WACA,sCACA,EAOAC,UAAAA,WACA,mGACA,EAOAC,eAAAA,WACA,kDAAAjU,MAAAA,KAAAA,OACA,EAOAgC,gBAAAA,WACA,mBACA,iBACA,GAEA,gEAEA,gEAAAhC,MAAAA,KAAAA,OACA,EAQAkU,0BAAAA,WACA,6CACA,EAOAC,oBAAAA,WAEA,yCACAtC,QAAAA,SAAAA,GAAA,kDACAvC,EAAAA,UAAAA,SAAAA,EAAAA,EAAAA,iBAAA,GACA,EAEA8E,wBAAAA,WACA,+CACA,EAEAC,sBAAAA,WAGA,2CAFA,gFAGA,GAGAnS,QAAAA,CAIAoS,eAAAA,WAAA,2JAEA,2DAWA,GAPAC,EAAAA,CACA9X,WAAAA,EAAAA,EAAAA,iBAEA,uCAGA8X,EAAAA,WAAAA,EAAAA,mBAAAA,EAAAA,OAAAA,yBAEA,qEACA3L,KAAA,OAAA2L,EAAAA,SAAAA,EAAAA,KAAA,WAIA,8FAGA,GAFA,cAGA,yCAEA,kEAEA,+DAGA,OAHA,2BAEA,aACAlY,GAAAA,MAAAA,EAAAA,IAAA,mBACA,qCAEA,WAGA,OADA,UACAjD,GAAAA,aAAAA,cAAAA,EAAAA,gBAAAA,+DAAA,mBACA,eAMA,wEACAwP,KAAA,QAAA2L,EAAAA,SAAAA,EAAAA,KAAA,QAIA,OAAA5L,EAAAA,IAAAA,EAAAA,GAAA,UACA,yBACA,wBACA,YAFAE,EAAAA,EAAAA,KAMA,UACA,aACAA,EAAAA,MAAAA,EAEA,wBAEA,OAAAF,EAAAA,IAAAA,EAAAA,GAAA,UACA,gFA9DA,EAgEA,EAUA6L,iBAAAA,SAAAA,EAAAA,GAAA,8KAGA,oDACA,UAoBA,OAjBA,aACA,YAEAzW,GAAAA,EAAAA,SAAAA,KAAAA,IAAAA,EAAAA,SAAAA,MAAAA,QAAAA,KAAAA,KACA0C,EAAAA,CACA1C,KAAAA,EACAqG,UAAAA,EAAAA,EAAAA,gBACAjJ,SAAAA,EAAAA,SACAoJ,WAAAA,EAAAA,WACAtI,WAAAA,KAAAA,UAAAA,EAAAA,SAAAA,kBAQAI,GAAAA,MAAAA,mCAAAA,GAAA,UACA,yBAKA,GALAoY,EAAAA,EAAAA,KAEA,UACApY,GAAAA,MAAAA,qBAAAA,IAIAqY,EAAAA,CAAA,iCACA,yBACA,2BACA,YAFA7L,EAAAA,EAAAA,KAAA,yCAOA,yBACA,wBACA,YAFAA,EAAAA,EAAAA,KAAA,QAQA,uCAGAA,EAAAA,YAEAxG,EAAAA,EAAAA,IAAAA,EAAAA,UAAAA,uBAAA,wBAGA,GAHA,0BAGAuC,EAAAA,OAAAA,EAAAA,SAAAA,IAAAA,EAAAA,IAAAA,QAAAA,EAAAA,EAAAA,GAAAA,gBAAAA,IAAAA,GAAAA,QAAAA,EAAAA,EAAAA,YAAAA,IAAAA,GAAAA,QAAAA,EAAAA,EAAAA,WAAAA,IAAAA,GAAAA,QAAAA,EAAAA,EAAAA,YAAAA,IAAAA,OAAAA,EAAAA,EAAAA,QACAA,CAAA,gBAEA,OADApB,EAAAA,EAAAA,IAAAA,EAAAA,UAAAA,mCACAnH,GAAAA,MAAAA,EAAAA,IAAA,2BAUA,MANA,qBACA,4BACA,iBACA,8BAEA,2BACA,aAGA,OAHA,UAGA,yFAxEA,EA0EA,EAOAsY,cAAAA,SAAAA,GACA,yCACA,EAKAC,cAAAA,WACA,uCACA,qCACA,oCACA,0BAEA,EACAzS,SAAAA,WAAA,oKAEAC,UAAAA,UAAAA,UAAAA,EAAAA,WAAA,QACAC,EAAAA,EAAAA,IAAAA,EAAAA,gBAAAA,gBAEA,+BACA,iBACA,4DAEA,iBACA,YACAhG,GAAAA,MAAAA,EAAAA,IAAA,QAKA,OALA,UAEAiG,YAAAA,WACA,iBACA,WACA,mFAhBA,EAkBA,EAYAuS,iBAAAA,SAAAA,GACA,qCACA,EAQAC,kBAAAA,WACA,uBAGA,uCAGA,eACA,4BAEA,EAWAC,iBAAAA,WACA,0BACA,kDACA,6BAEA,EAUAC,gCAAAA,WACA,0BACA,mDAGA,iDACA,EAKAC,YAAAA,WACA,wBACA,mBACA,EAMAC,SAAAA,WAIA,qCACA,ICt2B6L,kBCWzL,GAAU,CAAC,EAEf,GAAQxU,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAkB,IAAIC,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACE,YAAY,oCAAoCwR,MAAM,CAAC,uBAAwB3R,EAAI4H,QAAQ,CAAC3H,EAAG,WAAW,CAACE,YAAY,wBAAwBO,MAAM,CAAC,cAAa,EAAK,aAAaV,EAAI4S,iBAAmB,oCAAsC,yCAAyC5S,EAAIK,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACF,EAAG,OAAO,CAACE,YAAY,uBAAuBO,MAAM,CAAC,MAAQV,EAAIf,QAAQ,CAACe,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIf,OAAO,YAAYe,EAAIK,GAAG,KAAML,EAAIX,SAAUY,EAAG,IAAI,CAACD,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIX,UAAU,YAAYW,EAAIO,OAAOP,EAAIK,GAAG,KAAML,EAAI4H,QAAU5H,EAAI4S,kBAAoB5S,EAAI4H,MAAMpL,MAAOyD,EAAG,YAAY,CAACQ,IAAI,aAAaN,YAAY,uBAAuB,CAACF,EAAG,eAAe,CAACS,MAAM,CAAC,KAAOV,EAAIiT,UAAU,OAAS,SAAS,MAAQjT,EAAIiB,gBAAgB,aAAajB,EAAIiB,gBAAgB,KAAOjB,EAAIc,QAAUd,EAAIe,YAAc,uBAAyB,eAAec,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOuM,kBAAkBvM,EAAOC,iBAAwB/B,EAAIoB,SAASY,MAAM,KAAMC,UAAU,MAAM,GAAGjC,EAAIO,KAAKP,EAAIK,GAAG,KAAOL,EAAIkS,UAAYlS,EAAI8S,kBAAmB9S,EAAI+S,sBAAy0F/S,EAAI0E,QAI12CzE,EAAG,MAAM,CAACE,YAAY,8CAJ61CF,EAAG,YAAY,CAACE,YAAY,yBAAyBO,MAAM,CAAC,aAAaV,EAAIkT,eAAe,aAAa,QAAQ,KAAOlT,EAAIwI,MAAM3G,GAAG,CAAC,cAAc,SAASC,GAAQ9B,EAAIwI,KAAK1G,CAAM,EAAE,MAAQ9B,EAAIkU,cAAc,CAAElU,EAAI4H,MAAO,CAAE5H,EAAI4H,MAAMwM,SAAWpU,EAAIyE,WAAY,CAACxE,EAAG,gBAAgB,CAACQ,IAAI,QAAQkR,MAAM,CAAElO,MAAOzD,EAAIsI,OAAO5L,OAAQgE,MAAM,CAAC,SAAWV,EAAIuI,OAAO,MAAQvI,EAAIwB,EAAE,gBAAiB,eAAe,WAA+B1H,IAAvBkG,EAAI4H,MAAMyM,SAAyBrU,EAAI4H,MAAMyM,SAAWrU,EAAI4H,MAAMlL,MAAM,KAAO,YAAY,UAAY,OAAOmF,GAAG,CAAC,eAAe7B,EAAI4T,cAAc,OAAS5T,EAAI6T,iBAAiB7T,EAAIK,GAAG,KAAKJ,EAAG,yBAAyB,CAACS,MAAM,CAAC,cAAcV,EAAIyE,WAAW,MAAQzE,EAAI4H,MAAM,YAAY5H,EAAIa,UAAUgB,GAAG,CAAC,eAAe,SAASC,GAAQ9B,EAAI4H,MAAM9F,CAAM,KAAK9B,EAAIK,GAAG,KAAKJ,EAAG,qBAAqBD,EAAIK,GAAG,KAAKJ,EAAG,mBAAmB,CAACS,MAAM,CAAC,QAAUV,EAAI4H,MAAM0M,aAAa,SAAWtU,EAAIuI,QAAUvI,EAAIsT,uBAAuBzR,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIiL,KAAKjL,EAAI4H,MAAO,eAAgB9F,EAAO,EAAE,OAAS,SAASA,GAAQ,OAAO9B,EAAI8K,YAAY,eAAe,IAAI,CAAC9K,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,kBAAkB,gBAAgBxB,EAAIK,GAAG,KAAKJ,EAAG,mBAAmB,CAACE,YAAY,+BAA+BO,MAAM,CAAC,QAAUV,EAAIuS,oBAAoB,SAAWvS,EAAItF,OAAOvB,8BAAgC6G,EAAIuI,QAAQ1G,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIuS,oBAAoBzQ,CAAM,EAAE,QAAU9B,EAAI+T,oBAAoB,CAAC/T,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAItF,OAAOvB,6BACl8K6G,EAAIwB,EAAE,gBAAiB,kCACvBxB,EAAIwB,EAAE,gBAAiB,qBAAqB,gBAAgBxB,EAAIK,GAAG,KAAML,EAAIuS,oBAAqBtS,EAAG,gBAAgB,CAACQ,IAAI,WAAWN,YAAY,sBAAsBwR,MAAM,CAAElO,MAAOzD,EAAIsI,OAAOlO,UAAUsG,MAAM,CAAC,SAAWV,EAAIuI,OAAO,SAAWvI,EAAItF,OAAOvB,6BAA6B,MAAQ6G,EAAIgT,mBAAqBhT,EAAI4H,MAAM2M,YAAc,kBAAkB,KAAO,gBAAgB,aAAe,eAAe,KAAOvU,EAAIgT,mBAAqB,OAAQ,YAAYnR,GAAG,CAAC,eAAe7B,EAAI8T,iBAAiB,OAAS9T,EAAIgU,mBAAmB,CAAChU,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,qBAAqB,gBAAgBxB,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAI4S,kBAAoB5S,EAAInD,uBAAwBoD,EAAG,eAAe,CAACS,MAAM,CAAC,KAAO,cAAc,CAACV,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,4CAA6C,CAAC3E,uBAAwBmD,EAAInD,0BAA0B,gBAAiBmD,EAAI4S,kBAAmD,OAA/B5S,EAAInD,uBAAiCoD,EAAG,eAAe,CAACS,MAAM,CAAC,KAAO,eAAe,CAACV,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,qBAAqB,gBAAgBxB,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAI0S,mCAAoCzS,EAAG,mBAAmB,CAACE,YAAY,oCAAoCO,MAAM,CAAC,QAAUV,EAAI2S,0BAA0B,UAAY3S,EAAI6S,2CAA6C7S,EAAIuI,QAAQ1G,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAI2S,0BAA0B7Q,CAAM,EAAE,OAAS9B,EAAIiU,kCAAkC,CAACjU,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,uBAAuB,gBAAgBxB,EAAIO,KAAKP,EAAIK,GAAG,KAAKJ,EAAG,mBAAmB,CAACE,YAAY,kCAAkCO,MAAM,CAAC,QAAUV,EAAIqS,kBAAkB,SAAWrS,EAAItF,OAAO8Z,6BAA+BxU,EAAIuI,QAAQ1G,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIqS,kBAAkBvQ,CAAM,EAAE,QAAU9B,EAAI+K,sBAAsB,CAAC/K,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAItF,OAAO8Z,4BACl4DxU,EAAIwB,EAAE,gBAAiB,8BACvBxB,EAAIwB,EAAE,gBAAiB,wBAAwB,gBAAgBxB,EAAIK,GAAG,KAAML,EAAIqS,kBAAmBpS,EAAG,gBAAgB,CAACQ,IAAI,aAAaN,YAAY,yBAAyBwR,MAAM,CAAElO,MAAOzD,EAAIsI,OAAO9E,YAAY9C,MAAM,CAAC,oBAAmB,EAAK,cAAa,EAAK,SAAWV,EAAIuI,OAAO,MAAQ,IAAI5P,KAAKqH,EAAI4H,MAAMpE,YAAY,KAAO,OAAO,IAAMxD,EAAIgJ,aAAa,IAAMhJ,EAAIsS,iBAAiBzQ,GAAG,CAAC,MAAQ7B,EAAI6K,qBAAqB,CAAC7K,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,iBAAiB,gBAAgBxB,EAAIO,KAAKP,EAAIK,GAAG,KAAKJ,EAAG,mBAAmB,CAACS,MAAM,CAAC,QAAUV,EAAI6I,QAAQ,SAAW7I,EAAIuI,QAAQ1G,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAI6I,QAAQ/G,CAAM,EAAE,QAAU,SAASA,GAAQ,OAAO9B,EAAI8K,YAAY,OAAO,IAAI,CAAC9K,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,sBAAsB,gBAAgBxB,EAAIK,GAAG,KAAML,EAAI6I,QAAS5I,EAAG,uBAAuB,CAACQ,IAAI,OAAOkR,MAAM,CAAElO,MAAOzD,EAAIsI,OAAO7L,MAAMiE,MAAM,CAAC,SAAWV,EAAIuI,OAAO,YAAcvI,EAAIwB,EAAE,gBAAiB,wCAAwC,MAAQxB,EAAI4H,MAAMuD,SAAWnL,EAAI4H,MAAMnL,KAAK,KAAO,aAAaoF,GAAG,CAAC,eAAe7B,EAAIgL,aAAa,OAAShL,EAAIkL,gBAAgBlL,EAAIO,MAAMP,EAAIO,KAAKP,EAAIK,GAAG,KAAKJ,EAAG,qBAAqBD,EAAIK,GAAG,KAAKL,EAAIsO,GAAItO,EAAIoT,qBAAqB,SAAS7E,GAAQ,OAAOtO,EAAG,sBAAsB,CAACnC,IAAIyQ,EAAO9S,GAAGiF,MAAM,CAAC,GAAK6N,EAAO9S,GAAG,OAAS8S,EAAO,YAAYvO,EAAIa,SAAS,MAAQb,EAAI4H,QAAQ,IAAG5H,EAAIK,GAAG,KAAKL,EAAIsO,GAAItO,EAAImT,2BAA2B,WAA2BlB,GAAM,IAAvB7K,EAAI,EAAJA,KAAM8G,EAAG,EAAHA,IAAKrP,EAAI,EAAJA,KAAa,OAAOoB,EAAG,eAAe,CAACnC,IAAImU,EAAMvR,MAAM,CAAC,KAAOwN,EAAIlO,EAAIiT,WAAW,KAAO7L,EAAK,OAAS,WAAW,CAACpH,EAAIK,GAAG,aAAaL,EAAIM,GAAGzB,GAAM,aAAa,IAAGmB,EAAIK,GAAG,KAAML,EAAI4H,MAAM0F,UAAWrN,EAAG,iBAAiB,CAACS,MAAM,CAAC,KAAO,aAAa,SAAWV,EAAIuI,QAAQ1G,GAAG,CAAC,MAAQ,SAASC,GAAgC,OAAxBA,EAAOC,iBAAwB/B,EAAIqL,SAASrJ,MAAM,KAAMC,UAAU,IAAI,CAACjC,EAAIK,GAAG,aAAaL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,YAAY,cAAcxB,EAAIO,KAAKP,EAAIK,GAAG,MAAOL,EAAI4S,kBAAoB5S,EAAIyE,WAAYxE,EAAG,iBAAiB,CAACE,YAAY,iBAAiBO,MAAM,CAAC,KAAO,YAAYmB,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOuM,kBAAyBrO,EAAIuT,eAAevR,MAAM,KAAMC,UAAU,IAAI,CAACjC,EAAIK,GAAG,aAAaL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,qBAAqB,cAAcxB,EAAIO,MAAOP,EAAIyE,WAAYxE,EAAG,iBAAiB,CAACE,YAAY,iBAAiBO,MAAM,CAAC,MAAQV,EAAIwB,EAAE,gBAAiB,2BAA2B,aAAaxB,EAAIwB,EAAE,gBAAiB,2BAA2B,KAAOxB,EAAI0E,QAAU,qBAAuB,YAAY7C,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOuM,kBAAyBrO,EAAIuT,eAAevR,MAAM,KAAMC,UAAU,KAAKjC,EAAIO,MAAM,GAJx8CN,EAAG,YAAY,CAACE,YAAY,yBAAyBO,MAAM,CAAC,aAAaV,EAAIkT,eAAe,aAAa,QAAQ,KAAOlT,EAAIwI,MAAM3G,GAAG,CAAC,cAAc,SAASC,GAAQ9B,EAAIwI,KAAK1G,CAAM,EAAE,MAAQ9B,EAAIuT,iBAAiB,CAAEvT,EAAIsI,OAAO4J,QAASjS,EAAG,eAAe,CAAC0R,MAAM,CAAElO,MAAOzD,EAAIsI,OAAO4J,SAASxR,MAAM,CAAC,KAAO,eAAe,CAACV,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIsI,OAAO4J,SAAS,YAAYjS,EAAG,eAAe,CAACS,MAAM,CAAC,KAAO,cAAc,CAACV,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,8EAA8E,YAAYxB,EAAIK,GAAG,KAAML,EAAI8S,gBAAiB7S,EAAG,eAAe,CAACS,MAAM,CAAC,KAAO,kBAAkB,CAACV,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,mCAAmC,YAAaxB,EAAItF,OAAOtB,4BAA6B6G,EAAG,mBAAmB,CAACE,YAAY,+BAA+BO,MAAM,CAAC,QAAUV,EAAIuS,oBAAoB,SAAWvS,EAAItF,OAAOvB,8BAAgC6G,EAAIuI,QAAQ1G,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIuS,oBAAoBzQ,CAAM,EAAE,QAAU9B,EAAI+T,oBAAoB,CAAC/T,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,wBAAwB,YAAYxB,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAI8S,iBAAmB9S,EAAI4H,MAAMxN,SAAU6F,EAAG,gBAAgB,CAACE,YAAY,sBAAsBO,MAAM,CAAC,MAAQV,EAAI4H,MAAMxN,SAAS,SAAW4F,EAAIuI,OAAO,SAAWvI,EAAItF,OAAOtB,6BAA+B4G,EAAItF,OAAOvB,6BAA6B,UAAY6G,EAAIqT,yBAA2BrT,EAAItF,OAAOyH,eAAesS,UAAU,KAAO,GAAG,aAAe,gBAAgB5S,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAO9B,EAAIiL,KAAKjL,EAAI4H,MAAO,WAAY9F,EAAO,EAAE,OAAS9B,EAAIuT,iBAAiB,CAACvT,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,qBAAqB,YAAYxB,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAI+S,sBAAuB9S,EAAG,eAAe,CAACS,MAAM,CAAC,KAAO,uBAAuB,CAACV,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,+BAA+B,YAAYxB,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAI+S,sBAAuB9S,EAAG,gBAAgB,CAACE,YAAY,yBAAyBO,MAAM,CAAC,SAAWV,EAAIuI,OAAO,oBAAmB,EAAK,cAAa,EAAK,MAAQ,IAAI5P,KAAKqH,EAAI4H,MAAMpE,YAAY,KAAO,OAAO,IAAMxD,EAAIgJ,aAAa,IAAMhJ,EAAIsS,iBAAiBzQ,GAAG,CAAC,MAAQ7B,EAAI6K,qBAAqB,CAAC7K,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,iBAAiB,YAAYxB,EAAIO,KAAKP,EAAIK,GAAG,KAAKJ,EAAG,iBAAiB,CAACS,MAAM,CAAC,KAAO,kBAAkBmB,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOuM,kBAAyBrO,EAAIuT,eAAevR,MAAM,KAAMC,UAAU,IAAI,CAACjC,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,iBAAiB,YAAYxB,EAAIK,GAAG,KAAKJ,EAAG,iBAAiB,CAACS,MAAM,CAAC,KAAO,cAAcmB,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOuM,kBAAyBrO,EAAImU,SAASnS,MAAM,KAAMC,UAAU,IAAI,CAACjC,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,WAAW,aAAa,IAI5xC,EAC7rF,GACsB,IDMpB,EACA,KACA,WACA,MEf0L,GCoD5L,CACA3C,KAAAA,kBAEAC,WAAAA,CACA4V,iBHrCe,GAAiB,SGwChCrQ,OAAAA,CAAAA,GAEArF,MAAAA,CACA6B,SAAAA,CACA3B,KAAAA,OACAC,QAAAA,WAAAA,EACAC,UAAAA,GAEAkF,OAAAA,CACApF,KAAAA,MACAC,QAAAA,WAAA,UACAC,UAAAA,GAEAqF,WAAAA,CACAvF,KAAAA,QACAE,UAAAA,IAIArE,KAAAA,WACA,OACA4Z,aAAAA,GAAAA,kBAAAA,cAAAA,OAAAA,QAEA,EAEAnV,SAAAA,CAQAoV,cAAAA,WAAA,WACA,gGACA,EAOAC,UAAAA,WACA,2BACA,GAGA1T,QAAAA,CAQAwG,SAAAA,SAAAA,EAAAA,GAEA,uBACA,uBACA,EAUAmN,cAAAA,SAAAA,EAAAA,GAAA,WACA,2BACA,0DACA,GACAC,EAAAA,EAEA,GACA,EAOA3G,YAAAA,SAAAA,GACA,yDAEA,uBACA,IC3II,IAAY,OACd,ICRW,WAAkB,IAAIpO,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAQD,EAAI2U,aAAc1U,EAAG,KAAK,CAACE,YAAY,qBAAqB,EAAGH,EAAI4U,eAAiB5U,EAAIyE,WAAYxE,EAAG,mBAAmB,CAACS,MAAM,CAAC,cAAcV,EAAIyE,WAAW,YAAYzE,EAAIa,UAAUgB,GAAG,CAAC,YAAY7B,EAAI2H,YAAY3H,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAI6U,UAAW7U,EAAIsO,GAAItO,EAAIsE,QAAQ,SAASsD,EAAMqK,GAAO,OAAOhS,EAAG,mBAAmB,CAACnC,IAAI8J,EAAMnM,GAAGiF,MAAM,CAAC,MAAQV,EAAIsE,OAAOzB,OAAS,EAAIoP,EAAQ,EAAI,KAAK,cAAcjS,EAAIyE,WAAW,MAAQzE,EAAIsE,OAAO2N,GAAO,YAAYjS,EAAIa,UAAUgB,GAAG,CAAC,eAAe,CAAC,SAASC,GAAQ,OAAO9B,EAAIiL,KAAKjL,EAAIsE,OAAQ2N,EAAOnQ,EAAO,EAAE,SAASA,GAAQ,OAAO9B,EAAI8U,cAAa,MAAjB9U,EAAqBiC,UAAU,GAAG,YAAY,SAASH,GAAQ,OAAO9B,EAAI2H,SAAQ,MAAZ3H,EAAgBiC,UAAU,EAAE,eAAejC,EAAIoO,cAAc,IAAGpO,EAAIO,MAAM,GAAGP,EAAIO,IAChyB,GACsB,IDSpB,EACA,KACA,KACA,MAIF,GAAe,GAAiB,6PEkIhC,QACA1B,KAAAA,eAEAC,WAAAA,CACAC,UAAAA,IACA2N,eAAAA,KACA2D,iBAAAA,KACAuB,cAAAA,KACAC,qBAAAA,KACAjF,SAAAA,KAGAvI,OAAAA,CAAAA,IAEAtJ,KAAAA,WACA,OACAia,gBAAAA,GAAAA,kBACAC,kBAAAA,GAAAA,kBACAC,kBAAAA,GAAAA,kBACAC,gBAAAA,GAAAA,gBACAC,iBAAAA,GAAAA,iBAEA,EAEA5V,SAAAA,CACAP,MAAAA,WACA,sCAYA,OAXA,oDACAA,GAAAA,KAAAA,OAAAA,EAAAA,gBAAAA,SAAAA,KACA,mDACAA,GAAAA,KAAAA,OAAAA,EAAAA,gBAAAA,gBAAAA,KACA,qDACAA,GAAAA,KAAAA,OAAAA,EAAAA,gBAAAA,UAAAA,KACA,2DACAA,GAAAA,KAAAA,OAAAA,EAAAA,gBAAAA,gBAAAA,KACA,sDACAA,GAAAA,KAAAA,OAAAA,EAAAA,gBAAAA,SAAAA,MAEA,CACA,EAEAoW,QAAAA,WACA,+CACA,OAGA5N,KAAAA,KAAAA,MAAAA,qBACAoC,MAAAA,KAAAA,MAAAA,kBAEA,2DACA,+DACA,mDACA,sEAGA,oDACA,CACA,WACA,EAEAyL,YAAAA,WACA,oBACA,EAEAC,SAAAA,WACA,6DACA,0DACA,EAOAC,WAAAA,WAIA,wEACA,EAOAC,aAAAA,WAIA,0EACA,EAOAC,aAAAA,WAIA,0EACA,EAOAC,cAAAA,WAIA,0EACA,EAOAC,eAAAA,WAIA,oDACA,EAKAxB,QAAAA,CACAtL,IAAAA,WACA,qCACA,EACAC,IAAAA,SAAAA,GACA,wBAAA8M,cAAAA,GACA,GAMAC,UAAAA,CACAhN,IAAAA,WACA,qCACA,EACAC,IAAAA,SAAAA,GACA,wBAAAgN,gBAAAA,GACA,GAMAzI,UAAAA,CACAxE,IAAAA,WACA,qCACA,EACAC,IAAAA,SAAAA,GACA,wBAAAiN,gBAAAA,GACA,GAMAvR,WAAAA,CACAqE,IAAAA,WACA,oCACA,EACAC,IAAAA,SAAAA,GACA,wBAAAkN,iBAAAA,GACA,GAMAC,YAAAA,CACApN,IAAAA,WACA,uCACA,EACAC,IAAAA,SAAAA,GACA,wBAAAoN,kBAAAA,GACA,GAOAC,QAAAA,CACAtN,IAAAA,WACA,mCACA,GAQAoI,SAAAA,WACA,gCACA,EAOAmB,kBAAAA,CACAvJ,IAAAA,WACA,+EACA,EACAC,IAAAA,SAAAA,GACA,iDACA,qDACA,wBACA,2BACA,GACAzN,GAAAA,MAAAA,yBAAAA,EAAAA,KAAAA,MAAAA,WACA,GAGAgX,gBAAAA,WACA,sEACA,2FACA,8CACA,yFAEA,IACA,EAKA+D,UAAAA,WACA,2DAIA,mEACA,EAKAC,kBAAAA,WACA,0CACA,EAKAC,2BAAAA,WAcA,sBAbA,CAEA,qBACA,0EACA,gCACA,4EACA,2BACA,oEACA,0CACA,iDACA,mDAGA,gCACA,GAGApV,QAAAA,CACAqV,kBAAAA,WAMA,oEALAX,cAAAA,OAAAA,IAAAA,EAAAA,KAAAA,QAAAA,EAAA,IACAE,gBAAAA,OAAAA,IAAAA,EAAAA,KAAAA,UAAAA,EAAA,IACAC,gBAAAA,OAAAA,IAAAA,EAAAA,KAAAA,UAAAA,EAAA,IACAC,iBAAAA,OAAAA,IAAAA,EAAAA,KAAAA,WAAAA,EAAA,IACAE,kBAAAA,OAAAA,IAAAA,EAAAA,KAAAA,YAAAA,EAGA,KACA,sCACAJ,EAAAA,KAAAA,kBAAAA,IACAC,EAAAA,KAAAA,kBAAAA,IACAH,EAAAA,KAAAA,gBAAAA,IACAI,EAAAA,KAAAA,iBAAAA,GAEA,yBACA,uCACA,oCAEA,4CACA,EAKA/B,YAAAA,WACA,mBACA,ICncyL,kBCWrL,GAAU,CAAC,EAEf,GAAQvU,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAkB,IAAIC,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACE,YAAY,iBAAiB,CAACF,EAAG,WAAW,CAACE,YAAY,wBAAwBO,MAAM,CAAC,aAAaV,EAAI4H,MAAM1I,OAASc,EAAIrB,YAAY8X,gBAAgB,KAAOzW,EAAI4H,MAAMtE,UAAU,eAAetD,EAAI4H,MAAMoF,qBAAqB,gBAAgB,OAAO,IAAMhN,EAAI4H,MAAM8O,mBAAmB1W,EAAIK,GAAG,KAAKJ,EAAGD,EAAI4H,MAAM+O,cAAgB,IAAM,MAAM,CAAChI,IAAI,YAAYxO,YAAY,sBAAsBO,MAAM,CAAC,MAAQV,EAAIqV,QAAQ,aAAarV,EAAIqV,QAAQ,KAAOrV,EAAI4H,MAAM+O,gBAAgB,CAAC1W,EAAG,OAAO,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIf,QAAUe,EAAIV,SAAgIU,EAAIO,KAA1HN,EAAG,OAAO,CAACE,YAAY,8BAA8B,CAACH,EAAIK,GAAG,KAAKL,EAAIM,GAAGN,EAAI4H,MAAMF,4BAA4B,SAAkB1H,EAAIK,GAAG,KAAML,EAAIqW,UAAWpW,EAAG,IAAI,CAACA,EAAG,OAAO,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAI4H,MAAMlJ,OAAO0I,MAAQ,OAAOpH,EAAIK,GAAG,KAAKJ,EAAG,OAAO,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAI4H,MAAMlJ,OAAOmF,SAAW,SAAS7D,EAAIO,OAAOP,EAAIK,GAAG,KAAKJ,EAAG,YAAY,CAACE,YAAY,yBAAyBO,MAAM,CAAC,aAAa,SAASmB,GAAG,CAAC,MAAQ7B,EAAIkU,cAAc,CAAElU,EAAI4H,MAAMwM,QAAS,CAACnU,EAAG,mBAAmB,CAACQ,IAAI,UAAUC,MAAM,CAAC,QAAUV,EAAIoU,QAAQ,MAAQpU,EAAIgV,gBAAgB,SAAWhV,EAAIuI,SAAWvI,EAAIwV,YAAY3T,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIoU,QAAQtS,CAAM,IAAI,CAAC9B,EAAIK,GAAG,aAAaL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,kBAAkB,cAAcxB,EAAIK,GAAG,KAAML,EAAIkR,SAAUjR,EAAG,mBAAmB,CAACQ,IAAI,YAAYC,MAAM,CAAC,QAAUV,EAAI8V,UAAU,MAAQ9V,EAAIiV,kBAAkB,SAAWjV,EAAIuI,SAAWvI,EAAIyV,cAAc5T,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAI8V,UAAUhU,CAAM,IAAI,CAAC9B,EAAIK,GAAG,aAAaL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,mBAAmB,cAAcxB,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAIkR,SAAUjR,EAAG,mBAAmB,CAACQ,IAAI,YAAYC,MAAM,CAAC,QAAUV,EAAIsN,UAAU,MAAQtN,EAAIkV,kBAAkB,SAAWlV,EAAIuI,SAAWvI,EAAI0V,cAAc7T,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIsN,UAAUxL,CAAM,IAAI,CAAC9B,EAAIK,GAAG,aAAaL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,mBAAmB,cAAcxB,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAItF,OAAOkc,mBAAoB3W,EAAG,mBAAmB,CAACQ,IAAI,aAAaC,MAAM,CAAC,QAAUV,EAAIyE,WAAW,MAAQzE,EAAIoV,iBAAiB,SAAWpV,EAAIuI,SAAWvI,EAAI2V,eAAe9T,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIyE,WAAW3C,CAAM,IAAI,CAAC9B,EAAIK,GAAG,aAAaL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,oBAAoB,cAAcxB,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAIuW,2BAA4BtW,EAAG,mBAAmB,CAACQ,IAAI,cAAcC,MAAM,CAAC,QAAUV,EAAIkW,YAAY,SAAWlW,EAAIuI,SAAWvI,EAAI4V,gBAAgB/T,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIkW,YAAYpU,CAAM,IAAI,CAAC9B,EAAIK,GAAG,aAAaL,EAAIM,GAAGN,EAAIsW,mBAAmB,cAActW,EAAIO,KAAKP,EAAIK,GAAG,KAAKJ,EAAG,mBAAmB,CAACS,MAAM,CAAC,QAAUV,EAAIqS,kBAAkB,SAAWrS,EAAItF,OAAOmc,qCAAuC7W,EAAIuI,QAAQ1G,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIqS,kBAAkBvQ,CAAM,EAAE,QAAU9B,EAAI+K,sBAAsB,CAAC/K,EAAIK,GAAG,aAAaL,EAAIM,GAAGN,EAAItF,OAAOmc,oCACv2F7W,EAAIwB,EAAE,gBAAiB,4BACvBxB,EAAIwB,EAAE,gBAAiB,wBAAwB,cAAcxB,EAAIK,GAAG,KAAML,EAAIqS,kBAAmBpS,EAAG,gBAAgB,CAACQ,IAAI,aAAakR,MAAM,CAAElO,MAAOzD,EAAIsI,OAAO9E,YAAY9C,MAAM,CAAC,oBAAmB,EAAK,cAAa,EAAK,SAAWV,EAAIuI,OAAO,MAAQ,IAAI5P,KAAKqH,EAAI4H,MAAMpE,YAAY,KAAO,OAAO,IAAMxD,EAAIgJ,aAAa,IAAMhJ,EAAIsS,iBAAiBzQ,GAAG,CAAC,MAAQ7B,EAAI6K,qBAAqB,CAAC7K,EAAIK,GAAG,aAAaL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,iBAAiB,cAAcxB,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAIsV,YAAa,CAACrV,EAAG,mBAAmB,CAACS,MAAM,CAAC,QAAUV,EAAI6I,QAAQ,SAAW7I,EAAIuI,QAAQ1G,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAI6I,QAAQ/G,CAAM,EAAE,QAAU,SAASA,GAAQ,OAAO9B,EAAI8K,YAAY,OAAO,IAAI,CAAC9K,EAAIK,GAAG,eAAeL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,sBAAsB,gBAAgBxB,EAAIK,GAAG,KAAML,EAAI6I,QAAS5I,EAAG,uBAAuB,CAACQ,IAAI,OAAOkR,MAAM,CAAElO,MAAOzD,EAAIsI,OAAO7L,MAAMiE,MAAM,CAAC,SAAWV,EAAIuI,OAAO,MAAQvI,EAAI4H,MAAMuD,SAAWnL,EAAI4H,MAAMnL,KAAK,KAAO,aAAaoF,GAAG,CAAC,eAAe7B,EAAIgL,aAAa,OAAShL,EAAIkL,gBAAgBlL,EAAIO,MAAMP,EAAIO,MAAMP,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAI4H,MAAM0F,UAAWrN,EAAG,iBAAiB,CAACS,MAAM,CAAC,KAAO,aAAa,SAAWV,EAAIuI,QAAQ1G,GAAG,CAAC,MAAQ,SAASC,GAAgC,OAAxBA,EAAOC,iBAAwB/B,EAAIqL,SAASrJ,MAAM,KAAMC,UAAU,IAAI,CAACjC,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIwB,EAAE,gBAAiB,YAAY,YAAYxB,EAAIO,MAAM,IAAI,EAC31C,GACsB,IDQpB,EACA,KACA,WACA,iHEwBF,ICvCwL,GDuCxL,CACA1B,KAAAA,cAEAC,WAAAA,CACAgY,aFxBe,GAAiB,SE2BhCzS,OAAAA,CAAAA,GAEArF,MAAAA,CACA6B,SAAAA,CACA3B,KAAAA,OACAC,QAAAA,WAAAA,EACAC,UAAAA,GAEAkF,OAAAA,CACApF,KAAAA,MACAC,QAAAA,WAAA,UACAC,UAAAA,IAIAI,SAAAA,CACAqV,UAAAA,WACA,6BACA,EACAvV,SAAAA,WAAA,WACA,mBACA,2pBACA,8FACA,mBACA,CACA,GAGA6B,QAAAA,CAMAiN,YAAAA,SAAAA,GACA,yDAEA,uBACA,IElEA,IAXgB,OACd,ICRW,WAAkB,IAAIpO,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACE,YAAY,uBAAuBH,EAAIsO,GAAItO,EAAIsE,QAAQ,SAASsD,GAAO,OAAO3H,EAAG,eAAe,CAACnC,IAAI8J,EAAMnM,GAAGiF,MAAM,CAAC,YAAYV,EAAIa,SAAS,MAAQ+G,EAAM,YAAY5H,EAAIV,SAASsI,IAAQ/F,GAAG,CAAC,eAAe7B,EAAIoO,cAAc,IAAG,EACjT,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,+bEuFhC,QACAvP,KAAAA,aAEAC,WAAAA,CACA8N,SAAAA,IACAmK,eAAAA,EAAAA,EACAC,qBAAAA,EACApW,mBAAAA,EACAqW,iBAAAA,GACAC,aAAAA,GACAC,gBAAAA,GACAC,YAAAA,IAGA/S,OAAAA,CAAAA,GAEAtJ,KAAAA,WACA,OACAL,OAAAA,IAAAA,EAEA+I,MAAAA,GACA4T,mBAAAA,KACA3S,SAAAA,EAEA7D,SAAAA,KAGA2D,QAAAA,KACA8S,aAAAA,CAAAA,EACAhT,OAAAA,GACAC,WAAAA,GAEAgT,SAAAA,IAAAA,QAAAA,iBAAAA,cACAC,iBAAAA,EAAAA,EAAAA,GAAAA,OAAAA,oBAAAA,GAEA,EAEAhY,SAAAA,CAMAiY,eAAAA,WACA,8CACA,EAEAhT,WAAAA,WACA,4DACA,8EACA,GAGAtD,QAAAA,CAMAwS,OAAAA,SAAAA,GAAA,2IACA,aACA,eACA,wDAHA,EAIA,EAKA+D,UAAAA,WAAA,uKA0BA,OA1BA,SAEA,aAGAxU,GAAAA,EAAAA,EAAAA,gBAAAA,oCACAwC,EAAAA,OAEA1I,GAAAA,EAAAA,SAAAA,KAAAA,IAAAA,EAAAA,SAAAA,MAAAA,QAAAA,KAAAA,KAGA2a,EAAAA,EAAAA,QAAAA,IAAAA,EAAAA,CACAlS,OAAAA,CACAC,OAAAA,EACA1I,KAAAA,EACA4a,UAAAA,KAGAC,EAAAA,EAAAA,QAAAA,IAAAA,EAAAA,CACApS,OAAAA,CACAC,OAAAA,EACA1I,KAAAA,EACA8a,gBAAAA,KAIA,SACAC,QAAAA,IAAAA,CAAAA,EAAAA,IAAA,26BAAAzT,EAAAA,EAAAA,GAAAgT,EAAAA,EAAAA,GACA,aAGA,yBACA,qEAEA,kHACA,4CAEA,4DAEA,aACAhc,GAAAA,MAAAA,gCAAAA,EAAAA,IAAA,gEAxCA,EA0CA,EAKA6S,WAAAA,WACA6J,cAAAA,KAAAA,oBACA,gBACA,cACA,qBACA,eACA,kBACA,EAQAC,yBAAAA,SAAAA,GACA,kCACA,mFACAC,aAAAA,GAAAA,KAAAA,qBAAAA,IAAAA,MAIA,oBACAF,cAAAA,KAAAA,oBAEA,sFAEA,EASAG,cAAAA,SAAAA,GAAA,oBACA,2CAEA,iBACAjS,KAAAA,SAAAA,GAAA,mBACAC,MAAAA,SAAAA,EAAAA,GAAA,sCAEA,gIACA,4HAEA7K,GAAAA,MAAAA,YAAAA,KAAAA,WAAAA,OAAAA,iBACAA,GAAAA,MAAAA,YAAAA,KAAAA,OAAAA,OAAAA,WACA,CACA,EASA8c,oBAAAA,SAAAA,GAAA,aACA,qCACA,eACA,EChQuB,SAASxQ,GAC/B,OAAIA,EAAM1I,OAASN,EAAAA,EAAAA,iBACX4C,EACN,gBACA,mDACA,CACC6W,MAAOzQ,EAAMoF,qBACbnD,MAAOjC,EAAMsF,uBAEdpT,EACA,CAAEwe,QAAQ,IAED1Q,EAAM1I,OAASN,EAAAA,EAAAA,kBAClB4C,EACN,gBACA,0CACA,CACC+W,OAAQ3Q,EAAMoF,qBACdnD,MAAOjC,EAAMsF,uBAEdpT,EACA,CAAEwe,QAAQ,IAED1Q,EAAM1I,OAASN,EAAAA,EAAAA,gBACrBgJ,EAAMoF,qBACFxL,EACN,gBACA,iEACA,CACCgX,aAAc5Q,EAAMoF,qBACpBnD,MAAOjC,EAAMsF,uBAEdpT,EACA,CAAEwe,QAAQ,IAGJ9W,EACN,gBACA,+CACA,CACCqI,MAAOjC,EAAMsF,uBAEdpT,EACA,CAAEwe,QAAQ,IAIL9W,EACN,gBACA,6BACA,CAAEqI,MAAOjC,EAAMsF,uBACfpT,EACA,CAAEwe,QAAQ,GAGb,CDyMA,IACA,qBACA,UAEA,mBACAhS,YAAAA,EACArH,MAAAA,EACAwI,KAAAA,GAEA,eAIA,4DAEA,iCAEA,yEAEA,wGAEA,mBACAnB,YAAAA,KAAAA,SAAAA,WACArH,MAAAA,EACA,gBACA,6BACA,CAAA4K,MAAAA,KAAAA,SAAAA,iBACA/P,EACA,CAAAwe,QAAAA,IAEA7Q,KAAAA,KAAAA,SAAAA,cAGA,EASAE,SAAAA,SAAAA,GAAA,0EAGA,2CACA,2BAEA,uBAEA,uBACA,EAUAmN,cAAAA,SAAAA,EAAAA,GACA,2BAGA,6CACA2D,EAAAA,KAAAA,MAAAA,eAGA,2BACA,0DACA,GACA1D,EAAAA,EAEA,GACA,IEpWuL,kBCWnL,GAAU,CAAC,EAEf,GAAQpV,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIvH,KAAKwH,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAAC0R,MAAM,CAAE,eAAgB3R,EAAI0E,UAAW,CAAE1E,EAAIyD,MAAOxD,EAAG,MAAM,CAACE,YAAY,eAAewR,MAAM,CAAE+G,yBAA0B1Y,EAAIuX,SAAS1U,OAAS,IAAK,CAAC5C,EAAG,MAAM,CAACE,YAAY,oBAAoBH,EAAIK,GAAG,KAAKJ,EAAG,KAAK,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIyD,YAAYxD,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAAEH,EAAIyX,eAAgBxX,EAAG,qBAAqBD,EAAI0O,GAAG,CAACvO,YAAY,yBAAyBsB,YAAYzB,EAAI0B,GAAG,CAAC,CAAC5D,IAAI,SAAS6D,GAAG,WAAW,MAAO,CAAC1B,EAAG,WAAW,CAACE,YAAY,wBAAwBO,MAAM,CAAC,KAAOV,EAAIsX,aAAa7P,KAAK,eAAezH,EAAIsX,aAAahR,eAAe,EAAE1E,OAAM,IAAO,MAAK,EAAM,aAAa,qBAAqB5B,EAAIsX,cAAa,IAAQtX,EAAIO,KAAKP,EAAIK,GAAG,KAAOL,EAAI0E,QAAiM1E,EAAIO,KAA5LN,EAAG,eAAe,CAACS,MAAM,CAAC,cAAcV,EAAIyE,WAAW,YAAYzE,EAAIa,SAAS,cAAcb,EAAIuE,WAAW,QAAUvE,EAAIwE,QAAQ,OAASxE,EAAIsE,QAAQzC,GAAG,CAAC,YAAY7B,EAAI2H,YAAqB3H,EAAIK,GAAG,KAAOL,EAAI0E,QAA2I1E,EAAIO,KAAtIN,EAAG,kBAAkB,CAACQ,IAAI,gBAAgBC,MAAM,CAAC,cAAcV,EAAIyE,WAAW,YAAYzE,EAAIa,SAAS,OAASb,EAAIuE,cAAuBvE,EAAIK,GAAG,KAAOL,EAAI0E,QAAkG1E,EAAIO,KAA7FN,EAAG,cAAc,CAACQ,IAAI,YAAYC,MAAM,CAAC,OAASV,EAAIsE,OAAO,YAAYtE,EAAIa,YAAqBb,EAAIK,GAAG,KAAML,EAAIyE,aAAezE,EAAI0E,QAASzE,EAAG,mBAAmB,CAACS,MAAM,CAAC,YAAYV,EAAIa,YAAYb,EAAIO,KAAKP,EAAIK,GAAG,KAAKJ,EAAG,uBAAuB,CAACS,MAAM,CAAC,YAAYV,EAAIa,YAAYb,EAAIK,GAAG,KAAML,EAAIwX,iBAAmBxX,EAAIa,SAAUZ,EAAG,iBAAiB,CAACS,MAAM,CAAC,GAAI,UAAIV,EAAIa,SAASpF,IAAK,KAAO,OAAO,KAAOuE,EAAIa,SAAShC,QAAQmB,EAAIO,MAAM,GAAGP,EAAIK,GAAG,KAAKL,EAAIsO,GAAItO,EAAIuX,UAAU,SAASoB,EAAQ1G,GAAO,OAAOhS,EAAG,MAAM,CAACnC,IAAImU,EAAMxR,IAAI,WAAawR,EAAM2G,UAAS,EAAKzY,YAAY,iCAAiC,CAACF,EAAG0Y,EAAQ3Y,EAAImM,MAAM,WAAW8F,GAAQjS,EAAIa,UAAU,CAAC8N,IAAI,YAAYjO,MAAM,CAAC,YAAYV,EAAIa,aAAa,EAAE,KAAI,EACt1D,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,itBEnBhC,IAsBqBgE,GAAW,WAI/B,oHAAc,sIAEbpM,KAAKogB,OAAS,CAAC,EAGfpgB,KAAKogB,OAAOC,QAAU,GACtBxd,GAAQgQ,MAAM,sCACf,SAmCC,SAjCD,uBAOA,WACC,OAAO7S,KAAKogB,MACb,GAEA,0BAcA,SAAatR,GACZ,MAAkC,KAA9BA,EAAOjB,YAAY2D,QACO,mBAAnB1C,EAAOwR,SACjBtgB,KAAKogB,OAAOC,QAAQ7a,KAAKsJ,IAClB,IAERjM,GAAQmI,MAAM,iCAAkC8D,IACzC,EACR,2EAAC,EA9C8B,4sBCtBhC,IAsBqByR,GAAmB,WAIvC,oHAAc,sIAEbvgB,KAAKogB,OAAS,CAAC,EAGfpgB,KAAKogB,OAAOI,QAAU,GACtB3d,GAAQgQ,MAAM,8CACf,SA6BC,SA3BD,uBAOA,WACC,OAAO7S,KAAKogB,MACb,GAEA,4BAOA,SAAetK,GAGd,OAFAjT,GAAQC,KAAK,8FAES,WAAlB,GAAOgT,IAAuBA,EAAOnH,MAAQmH,EAAO1P,MAAQ0P,EAAOL,KACtEzV,KAAKogB,OAAOI,QAAQhb,KAAKsQ,IAClB,IAERjT,GAAQmI,MAAM,0BAA2B8K,IAClC,EACR,2EAAC,EAxCsC,4sBCtBxC,IAsBqB6D,GAAoB,WAIxC,oHAAc,sIAEb3Z,KAAKogB,OAAS,CAAC,EAGfpgB,KAAKogB,OAAOI,QAAU,GACtB3d,GAAQgQ,MAAM,+CACf,SA4CC,SA1CD,uBAOA,WACC,OAAO7S,KAAKogB,MACb,GAEA,4BAUA,SAAetK,GAEd,MAAsB,WAAlB,GAAOA,IACc,iBAAdA,EAAO9S,IACS,mBAAhB8S,EAAOxT,MACbme,MAAMC,QAAQ5K,EAAOlL,YACK,WAA3B,GAAOkL,EAAOK,WACbxG,OAAOgR,OAAO7K,EAAOK,UAAUyK,OAAM,SAAAN,GAAO,MAAuB,mBAAZA,CAAsB,IAM7DtgB,KAAKogB,OAAOI,QAAQK,WAAU,SAAAC,GAAK,OAAIA,EAAM9d,KAAO8S,EAAO9S,EAAE,KAAK,GAEtFH,GAAQmI,MAAM,8BAAD,OAA+B8K,EAAO9S,GAAE,mBAAmB8S,IACjE,IAGR9V,KAAKogB,OAAOI,QAAQhb,KAAKsQ,IAClB,IAZNjT,GAAQmI,MAAM,0BAA2B8K,IAClC,EAYT,2EAAC,EAvDuC,gsBCtBzC,IAsBqBiL,GAAW,WAI/B,oHAAc,yIACb/gB,KAAKghB,UAAY,EAClB,SAWC,SATD,mCAGA,SAAgBd,GACflgB,KAAKghB,UAAUxb,KAAK0a,EACrB,GAAC,yBAED,WACC,OAAOlgB,KAAKghB,SACb,2EAAC,EAjB8B,yICc3BtQ,OAAOuQ,IAAIC,UACfxQ,OAAOuQ,IAAIC,QAAU,CAAC,GAEvBvR,OAAOwR,OAAOzQ,OAAOuQ,IAAIC,QAAS,CAAE9U,YAAa,IAAIA,KACrDuD,OAAOwR,OAAOzQ,OAAOuQ,IAAIC,QAAS,CAAEX,oBAAqB,IAAIA,KAC7D5Q,OAAOwR,OAAOzQ,OAAOuQ,IAAIC,QAAS,CAAEvH,qBAAsB,IAAIA,KAC9DhK,OAAOwR,OAAOzQ,OAAOuQ,IAAIC,QAAS,CAAEE,iBAAkB,IAAIL,KAE1DhH,EAAAA,GAAAA,UAAAA,EAAkBhR,EAAAA,GAClBgR,EAAAA,GAAAA,UAAAA,EAAkBsH,EAAAA,GAGlB,IAAMC,GAAOvH,EAAAA,GAAAA,OAAWwH,IACpBC,GAAc,KAElB9Q,OAAO+Q,iBAAiB,oBAAoB,WACvCR,IAAIS,OAAST,IAAIS,MAAMC,SAC1BV,IAAIS,MAAMC,QAAQC,YAAY,IAAIX,IAAIS,MAAMC,QAAQE,IAAI,CACvD7e,GAAI,UACJoD,MAAM2C,EAAAA,EAAAA,IAAE,gBAAiB,WACzB+Y,QAASC,GAEHC,MAAK,SAACC,EAAI7Z,EAAU8Z,GAAS,+HAQlC,OAPIV,IACHA,GAAYW,WAEbX,GAAc,IAAIF,GAAK,CAEtBzb,OAAQqc,IAET,SACMV,GAAYtG,OAAO9S,GAAS,OAClCoZ,GAAYY,OAAOH,GAAG,kOACvB,EACA/G,OAAM,SAAC9S,GACNoZ,GAAYtG,OAAO9S,EACpB,EACAia,QAAO,WACNb,GAAYW,WACZX,GAAc,IACf,IAGH,8DC5EIc,QAA0B,GAA4B,KAE1DA,EAAwB9c,KAAK,CAAC+c,EAAOvf,GAAI,8FAA+F,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4EAA4E,MAAQ,GAAG,SAAW,mBAAmB,eAAiB,CAAC,gHAAgH,WAAa,MAEva,gECJIsf,QAA0B,GAA4B,KAE1DA,EAAwB9c,KAAK,CAAC+c,EAAOvf,GAAI,2aAA4a,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,MAAQ,GAAG,SAAW,qJAAqJ,eAAiB,CAAC,wZAAwZ,WAAa,MAEppC,gECJIsf,QAA0B,GAA4B,KAE1DA,EAAwB9c,KAAK,CAAC+c,EAAOvf,GAAI,0VAA2V,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2EAA2E,MAAQ,GAAG,SAAW,oIAAoI,eAAiB,CAAC,oVAAoV,WAAa,MAEv/B,gECJIsf,QAA0B,GAA4B,KAE1DA,EAAwB9c,KAAK,CAAC+c,EAAOvf,GAAI,8QAA+Q,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0EAA0E,MAAQ,GAAG,SAAW,iGAAiG,eAAiB,CAAC,wSAAwS,WAAa,MAE31B,gECJIsf,QAA0B,GAA4B,KAE1DA,EAAwB9c,KAAK,CAAC+c,EAAOvf,GAAI,8lCAA+lC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sEAAsE,MAAQ,GAAG,SAAW,gUAAgU,eAAiB,CAAC,6kCAA6kC,WAAa,MAE3qF,+DCJIsf,QAA0B,GAA4B,KAE1DA,EAAwB9c,KAAK,CAAC+c,EAAOvf,GAAI,kcAAmc,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wEAAwE,MAAQ,GAAG,SAAW,oLAAoL,eAAiB,CAAC,ocAAoc,WAAa,MAE5vC,gECJIsf,QAA0B,GAA4B,KAE1DA,EAAwB9c,KAAK,CAAC+c,EAAOvf,GAAI,4bAA6b,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,MAAQ,GAAG,SAAW,qJAAqJ,eAAiB,CAAC,ikBAAmkB,WAAa,MAEh1C,gECJIsf,QAA0B,GAA4B,KAE1DA,EAAwB9c,KAAK,CAAC+c,EAAOvf,GAAI,mMAAoM,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iEAAiE,MAAQ,GAAG,SAAW,iFAAiF,eAAiB,CAAC,sPAAsP,WAAa,MAErsB,gECJIsf,QAA0B,GAA4B,KAE1DA,EAAwB9c,KAAK,CAAC+c,EAAOvf,GAAI,iLAAkL,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,MAAQ,GAAG,SAAW,mDAAmD,eAAiB,CAAC,8KAA8K,WAAa,MAEvkB,QCNIwf,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBrhB,IAAjBshB,EACH,OAAOA,EAAaC,QAGrB,IAAIL,EAASC,EAAyBE,GAAY,CACjD1f,GAAI0f,EACJ3N,QAAQ,EACR6N,QAAS,CAAC,GAUX,OANAC,EAAoBH,GAAUI,KAAKP,EAAOK,QAASL,EAAQA,EAAOK,QAASH,GAG3EF,EAAOxN,QAAS,EAGTwN,EAAOK,OACf,CAGAH,EAAoBM,EAAIF,EhF5BpBzjB,EAAW,GACfqjB,EAAoBO,EAAI,SAASlU,EAAQmU,EAAU/Z,EAAIga,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASle,EAAI,EAAGA,EAAI9F,EAASgL,OAAQlF,IAAK,CACrC+d,EAAW7jB,EAAS8F,GAAG,GACvBgE,EAAK9J,EAAS8F,GAAG,GACjBge,EAAW9jB,EAAS8F,GAAG,GAE3B,IAJA,IAGIme,GAAY,EACPC,EAAI,EAAGA,EAAIL,EAAS7Y,OAAQkZ,MACpB,EAAXJ,GAAsBC,GAAgBD,IAAavT,OAAO4T,KAAKd,EAAoBO,GAAGpC,OAAM,SAASvb,GAAO,OAAOod,EAAoBO,EAAE3d,GAAK4d,EAASK,GAAK,IAChKL,EAASO,OAAOF,IAAK,IAErBD,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbjkB,EAASokB,OAAOte,IAAK,GACrB,IAAIue,EAAIva,SACE7H,IAANoiB,IAAiB3U,EAAS2U,EAC/B,CACD,CACA,OAAO3U,CArBP,CAJCoU,EAAWA,GAAY,EACvB,IAAI,IAAIhe,EAAI9F,EAASgL,OAAQlF,EAAI,GAAK9F,EAAS8F,EAAI,GAAG,GAAKge,EAAUhe,IAAK9F,EAAS8F,GAAK9F,EAAS8F,EAAI,GACrG9F,EAAS8F,GAAK,CAAC+d,EAAU/Z,EAAIga,EAwB/B,EiF5BAT,EAAoBpB,EAAI,SAASkB,GAChC,IAAImB,EAASnB,GAAUA,EAAOoB,WAC7B,WAAa,OAAOpB,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAE,EAAoBmB,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CACR,ECNAjB,EAAoBmB,EAAI,SAAShB,EAASkB,GACzC,IAAI,IAAIze,KAAOye,EACXrB,EAAoBsB,EAAED,EAAYze,KAASod,EAAoBsB,EAAEnB,EAASvd,IAC5EsK,OAAOqU,eAAepB,EAASvd,EAAK,CAAE4e,YAAY,EAAM5T,IAAKyT,EAAWze,IAG3E,ECPAod,EAAoByB,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOnkB,MAAQ,IAAIokB,SAAS,cAAb,EAGhB,CAFE,MAAOxhB,GACR,GAAsB,iBAAX8N,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB+R,EAAoBsB,EAAI,SAASxV,EAAK8V,GAAQ,OAAO1U,OAAO2U,UAAUC,eAAezB,KAAKvU,EAAK8V,EAAO,ECCtG5B,EAAoBgB,EAAI,SAASb,GACX,oBAAX4B,QAA0BA,OAAOC,aAC1C9U,OAAOqU,eAAepB,EAAS4B,OAAOC,YAAa,CAAE9kB,MAAO,WAE7DgQ,OAAOqU,eAAepB,EAAS,aAAc,CAAEjjB,OAAO,GACvD,ECNA8iB,EAAoBiC,IAAM,SAASnC,GAGlC,OAFAA,EAAOoC,MAAQ,GACVpC,EAAOqC,WAAUrC,EAAOqC,SAAW,IACjCrC,CACR,ECJAE,EAAoBa,EAAI,gBCAxBb,EAAoBoC,EAAIvlB,SAASwlB,SAAWza,KAAK0a,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaPxC,EAAoBO,EAAEM,EAAI,SAAS4B,GAAW,OAAoC,IAA7BD,EAAgBC,EAAgB,EAGrF,IAAIC,EAAuB,SAASC,EAA4B9iB,GAC/D,IAKIogB,EAAUwC,EALVjC,EAAW3gB,EAAK,GAChB+iB,EAAc/iB,EAAK,GACnBgjB,EAAUhjB,EAAK,GAGI4C,EAAI,EAC3B,GAAG+d,EAASsC,MAAK,SAASviB,GAAM,OAA+B,IAAxBiiB,EAAgBjiB,EAAW,IAAI,CACrE,IAAI0f,KAAY2C,EACZ5C,EAAoBsB,EAAEsB,EAAa3C,KACrCD,EAAoBM,EAAEL,GAAY2C,EAAY3C,IAGhD,GAAG4C,EAAS,IAAIxW,EAASwW,EAAQ7C,EAClC,CAEA,IADG2C,GAA4BA,EAA2B9iB,GACrD4C,EAAI+d,EAAS7Y,OAAQlF,IACzBggB,EAAUjC,EAAS/d,GAChBud,EAAoBsB,EAAEkB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOzC,EAAoBO,EAAElU,EAC9B,EAEI0W,EAAqBnb,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1Fmb,EAAmBxS,QAAQmS,EAAqBM,KAAK,KAAM,IAC3DD,EAAmBhgB,KAAO2f,EAAqBM,KAAK,KAAMD,EAAmBhgB,KAAKigB,KAAKD,OClDvF/C,EAAoBiD,QAAKrkB,ECGzB,IAAIskB,EAAsBlD,EAAoBO,OAAE3hB,EAAW,CAAC,OAAO,WAAa,OAAOohB,EAAoB,MAAQ,IACnHkD,EAAsBlD,EAAoBO,EAAE2C","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?1b73","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?0c02","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?00d7","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?6c02","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?9a14","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?65df","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?4cb0","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?77d5","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?42d8","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?45a6","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?82b4","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?b011","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f69b","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?f1d3","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?64e9","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?de0b","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?16b5","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?f8d7","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?e340","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?8704","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?0ae8","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=5e957d09&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=13a6a5f0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=23251e4a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=69e43ddc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=1f50aaec&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=9fd256bc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&id=43c265ae&prod&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=3462b966&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=56c61b11&prod&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 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.getElementsByClassName('files-filestable')[0]\n\t\t\t&& document.getElementsByClassName('files-filestable')[0].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\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDate() {\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default internal expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDate() {\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default remote expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate))\n\t\t}\n\t\treturn null\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 * Is there a default expiration date for new remote shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnabled === 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\tif (ocsData.attributes) {\n\t\t\ttry {\n\t\t\t\tocsData.attributes = JSON.parse(ocsData.attributes)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Could not parse share attributes returned by server: \"' + ocsData.attributes + '\"')\n\t\t\t}\n\t\t}\n\t\tocsData.attributes = ocsData.attributes ?? []\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 * Get the share attributes\n\t *\n\t * @return {Array}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget attributes() {\n\t\treturn this._share.attributes\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\n\t *\n\t * @return {string} date with YYYY-MM-DD format\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\n\t *\n\t * @param {string} date the share expiration date with YYYY-MM-DD format\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 expiration 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/**\n\t * Does this share have download permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDownloadPermission() {\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\treturn attr.enabled\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tset hasDownloadPermission(enabled) {\n\t\tthis.setAttribute('permissions', 'download', !!enabled)\n\t}\n\n\tsetAttribute(scope, key, enabled) {\n\t\tconst attrUpdate = {\n\t\t\tscope,\n\t\t\tkey,\n\t\t\tenabled,\n\t\t}\n\n\t\t// try and replace existing\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n\t\t\t\tthis._share.attributes[i] = attrUpdate\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis._share.attributes.push(attrUpdate)\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 class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\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<NcActions ref=\"actionsComponent\"\n\t\t\tv-if=\"$slots['default']\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:aria-expanded=\"ariaExpandedValue\">\n\t\t\t<slot />\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tNcActions,\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\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\tariaExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tariaExpandedValue() {\n\t\t\tif (this.ariaExpanded === null) {\n\t\t\t\treturn this.ariaExpanded\n\t\t\t}\n\t\t\treturn this.ariaExpanded ? 'true' : 'false'\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\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\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\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=9fd256bc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=9fd256bc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=9fd256bc&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=9fd256bc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9fd256bc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\"},[_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('NcActions',{ref:\"actionsComponent\",staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"aria-expanded\":_vm.ariaExpandedValue}},[_vm._t(\"default\")],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<ul>\n\t\t<SharingEntrySimple ref=\"shareEntrySimple\"\n\t\t\tclass=\"sharing-entry__internal\"\n\t\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t\t</template>\n\n\t\t\t<NcActionLink :href=\"internalLink\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t:title=\"copyLinkTooltip\"\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.prevent=\"copyLink\" />\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showSuccess } from '@nextcloud/dialogs'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink'\nimport SharingEntrySimple from './SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tNcActionLink,\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 * Tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy internal link 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 navigator.clipboard.writeText(this.internalLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip (note: cannot set ref on NcActionLink)\n\t\t\t\tthis.$refs.shareEntrySimple.$refs.actionsComponent.$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=69e43ddc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=69e43ddc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=69e43ddc&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=69e43ddc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69e43ddc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('SharingEntrySimple',{ref:\"shareEntrySimple\",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('NcActionLink',{attrs:{\"href\":_vm.internalLink,\"aria-label\":_vm.copyLinkTooltip,\"title\":_vm.copyLinkTooltip,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1)],1)\n}\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'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\n\nconst config = new Config()\n// note: some chars removed on purpose to make them human friendly when read out\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\tshowSuccess(t('files_sharing', 'Password created successfully'))\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\tshowError(t('files_sharing', 'Error generating password from password policy'))\n\t\t}\n\t}\n\n\tconst array = new Uint8Array(10)\n\tconst ratio = passwordSet.length / 255\n\tself.crypto.getRandomValues(array)\n\tlet password = ''\n\tfor (let i = 0; i < array.length; i++) {\n\t\tpassword += passwordSet.charAt(array[i] * ratio)\n\t}\n\treturn password\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 * @param {string} [data.attributes=null] Share attributes encoded as json\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, attributes }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes })\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<div class=\"sharing-search\">\n\t\t<label for=\"sharing-search-input\">{{ t('files_sharing', 'Search for share recipients') }}</label>\n\t\t<NcSelect ref=\"select\"\n\t\t\tid=\"sharing-search-input\"\n\t\t\tclass=\"sharing-search__input\"\n\t\t\t:disabled=\"!canReshare\"\n\t\t\t:loading=\"loading\"\n\t\t\t:filterable=\"false\"\n\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:user-select=\"true\"\n\t\t\t:options=\"options\"\n\t\t\tv-model=\"value\"\n\t\t\t@open=\"handleOpen\"\n\t\t\t@search=\"asyncFind\"\n\t\t\t@option:selected=\"addShare\">\n\t\t\t<template #no-options=\"{ search }\">\n\t\t\t\t{{ search ? noResultText : t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\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\tNcSelect,\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\tvalue: null,\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\thandleOpen() {\n\t\t\t// Fix dropdown not opening when viewer is open, see https://github.com/nextcloud/viewer/pull/1319\n\t\t\temit('viewer:trapElements:changed', this.$refs.select.$el)\n\t\t},\n\n\t\tasync asyncFind(query) {\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\tthis.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH,\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 occurrences 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 differentiate\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 {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Guest'),\n\t\t\t\t}\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 {\n\t\t\t\t\ticon: 'icon-group',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Group'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Email'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-circle',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Circle'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-room',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Talk conversation'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-deck',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Deck board'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-sciencemesh',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Science Mesh'),\n\t\t\t\t}\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\t...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\t// Clear the displayed selection\n\t\t\tthis.value = null\n\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\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\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\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\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again on error\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\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-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for=\"sharing-search-input\"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\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&id=43c265ae&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=43c265ae&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=43c265ae&\"\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&id=43c265ae&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharing-search\"},[_c('label',{attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Search for share recipients')))]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",staticClass:\"sharing-search__input\",attrs:{\"id\":\"sharing-search-input\",\"disabled\":!_vm.canReshare,\"loading\":_vm.loading,\"filterable\":false,\"placeholder\":_vm.inputPlaceholder,\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options},on:{\"open\":_vm.handleOpen,\"search\":_vm.asyncFind,\"option:selected\":_vm.addShare},scopedSlots:_vm._u([{key:\"no-options\",fn:function({ search }){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(search ? _vm.noResultText : _vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\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\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\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.js'\nimport SharesRequests from './ShareRequests.js'\nimport ShareTypes from './ShareTypes.js'\nimport Config from '../services/ConfigService.js'\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 new Date(new Date().setDate(new Date().getDate() + 1))\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 = 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 * @param {string} date a date with YYYY-MM-DD format\n\t\t * @return {Date} date\n\t\t */\n\t\tparseDateString(date) {\n\t\t\tif (!date) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst regex = /([0-9]{4}-[0-9]{2}-[0-9]{2})/i\n\t\t\treturn new Date(date.match(regex)?.pop())\n\t\t},\n\n\t\t/**\n\t\t * @param {Date} date\n\t\t * @return {string} date a date with YYYY-MM-DD format\n\t\t */\n\t\tformatDateToString(date) {\n\t\t\t// Force utc time. Drop time information to be timezone-less\n\t\t\tconst utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\n\t\t\t// Format to YYYY-MM-DD\n\t\t\treturn utcDate.toISOString().split('T')[0]\n\t\t},\n\n\t\t/**\n\t\t * Save given value to expireDate and trigger queueUpdate\n\t\t *\n\t\t * @param {Date} date\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\tthis.share.expireDate = this.formatDateToString(date)\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\tconst message = this.share.itemType === 'file'\n\t\t\t\t\t? t('files_sharing', 'File \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\t\t: t('files_sharing', 'Folder \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\tshowSuccess(message)\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.forEach(name => {\n\t\t\t\t\tif ((typeof this.share[name]) === 'object') {\n\t\t\t\t\t\tproperties[name] = JSON.stringify(this.share[name])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties[name] = this.share[name].toString()\n\t\t\t\t\t}\n\t\t\t\t})\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\t\t\t\t\t\tshowSuccess(t('files_sharing', 'Share {propertyName} saved', { propertyName: propertyNames[0] }))\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\tshowError(t('files_sharing', 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\treturn\n\t\t\t}\n\n\t\t\t// This share does not exists on the server yet\n\t\t\tconsole.debug('Updated local share', this.share)\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\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<NcAvatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t</template>\n\t\t<NcActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</NcActionText>\n\t\t<NcActionLink 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</NcActionLink>\n\t\t<NcActionButton 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</NcActionButton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText'\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\tNcActionButton,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcAvatar,\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=23251e4a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=23251e4a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=23251e4a&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=23251e4a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23251e4a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionText',{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('NcActionLink',{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('NcActionButton',{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)\n}\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:aria-expanded=\"showInheritedShares\">\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<NcActionButton :icon=\"showInheritedSharesIcon\"\n\t\t\t\t:aria-label=\"toggleTooltip\"\n\t\t\t\t:title=\"toggleTooltip\"\n\t\t\t\t@click.prevent.stop=\"toggleInheritedShares\" />\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\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\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\tNcActionButton,\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\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\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=3462b966&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=3462b966&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=3462b966&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=3462b966&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3462b966\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon,\"aria-label\":_vm.toggleTooltip,\"title\":_vm.toggleTooltip},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}})],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share},on:{\"remove:share\":_vm.removeShare}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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 render(){var _vm=this,_c=_vm._self._c;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\")])\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<li>\n\t\t<ul>\n\t\t\t<!-- file -->\n\t\t\t<NcActionCheckbox v-if=\"!isFolder\"\n\t\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<!-- folder -->\n\t\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t\t</NcActionRadio>\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t\t<NcActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<!-- custom permissions -->\n\t\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</ul>\n\t</li>\n</template>\n\n<script>\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionRadio from '@nextcloud/vue/dist/Components/NcActionRadio'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'\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\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionRadio,\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=5e957d09&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=5e957d09&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=5e957d09&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=5e957d09&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e957d09\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',[_c('ul',[(!_vm.isFolder)?_c('NcActionCheckbox',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('NcActionRadio',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{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\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{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\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('NcActionCheckbox',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{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\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\\t\")])],1)]:_vm._e()],2)])\n}\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<NcAvatar :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<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\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<NcActions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<NcActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\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</NcActions>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\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<NcActionText 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</NcActionText>\n\t\t\t<NcActionText 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</NcActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<NcActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t<NcActionInput v-if=\"pendingPassword || share.password\"\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</NcActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<NcActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t:hide-label=\"true\"\n\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\ttype=\"date\"\n\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t@input=\"onExpirationChange\">\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</NcActionInput>\n\n\t\t\t<NcActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- actions -->\n\t\t<NcActions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\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<NcActionInput ref=\"label\"\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: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\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<NcActionSeparator />\n\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving || canChangeHideDownload\"\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</NcActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<NcActionCheckbox :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</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\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</NcActionInput>\n\t\t\t\t\t<NcActionText 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</NcActionText>\n\t\t\t\t\t<NcActionText 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</NcActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<NcActionCheckbox :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</NcActionCheckbox>\n\t\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t\t:hide-label=\"true\"\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:value=\"new Date(share.expireDate)\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</NcActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<NcActionCheckbox :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</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\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<NcActionSeparator />\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<NcActionLink 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</NcActionLink>\n\n\t\t\t\t<NcActionButton 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</NcActionButton>\n\t\t\t\t<NcActionButton 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</NcActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<NcActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:title=\"t('files_sharing', 'Create a new share link')\"\n\t\t\t\t:aria-label=\"t('files_sharing', 'Create a 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</NcActions>\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 { showError, showSuccess } from '@nextcloud/dialogs'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText'\nimport NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator'\nimport NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport SharePermissionsEditor from './SharePermissionsEditor.vue'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcActionTextEditable,\n\t\tNcActionSeparator,\n\t\tNcAvatar,\n\t\tExternalShareAction,\n\t\tSharePermissionsEditor,\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\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\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\tif (this.index > 1) {\n\t\t\t\treturn t('files_sharing', 'Share link ({index})', { index: this.index })\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\tconst defaultExpirationDate = this.config.defaultExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\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\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.config.defaultExpireDate))\n\t\t\t}\n\t\t\treturn null\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 * Tooltip message for actions button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tactionsTooltip() {\n\t\t\treturn t('files_sharing', 'Actions for \"{title}\"', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for copy button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy public link of \"{title}\" to clipboard', { title: this.title })\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\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\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.formatDateToString(this.config.defaultExpirationDate)\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\ttry {\n\t\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tthis.pending = false\n\t\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\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 options = {\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\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\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\tconsole.debug('Creating link share with options', options)\n\t\t\t\tconst newShare = await this.createShare(options)\n\n\t\t\t\tthis.open = false\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\t\t\t\tshowSuccess(t('sharing', 'Link share created'))\n\n\t\t\t} catch (data) {\n\t\t\t\tconst message = data?.response?.data?.ocs?.meta?.message\n\t\t\t\tif (!message) {\n\t\t\t\t\tshowError(t('sharing', 'Error while creating the share'))\n\t\t\t\t\tconsole.error(data)\n\t\t\t\t\treturn\n\t\t\t\t}\n\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\tthrow data\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 navigator.clipboard.writeText(this.shareLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\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 submitted.\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</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\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\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=1f50aaec&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=1f50aaec&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=1f50aaec&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=1f50aaec&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f50aaec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('NcAvatar',{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('span',{staticClass:\"sharing-entry__title\",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('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"title\":_vm.copyLinkTooltip,\"aria-label\":_vm.copyLinkTooltip,\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('NcActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('NcActionText',{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('NcActionText',{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('NcActionCheckbox',{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('NcActionInput',{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('NcActionText',{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('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"is-native-picker\":true,\"hide-label\":true,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{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('NcActionButton',{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('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"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('NcActionInput',{ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"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(\" \"),_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('NcActionSeparator'),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving || _vm.canChangeHideDownload},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('NcActionCheckbox',{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('NcActionInput',{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('NcActionText',{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('NcActionText',{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('NcActionCheckbox',{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('NcActionCheckbox',{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('NcActionInput',{ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_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('NcActionCheckbox',{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('NcActionTextEditable',{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('NcActionSeparator'),_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({icon, url, name},index){return _c('NcActionLink',{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('NcActionButton',{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('NcActionButton',{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('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"title\":_vm.t('files_sharing', 'Create a new share link'),\"aria-label\":_vm.t('files_sharing', 'Create a new share link'),\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}}):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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:index=\"shares.length > 1 ? index + 1 : null\"\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=537e15c5&\"\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 render(){var _vm=this,_c=_vm._self._c;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:{\"index\":_vm.shares.length > 1 ? index + 1 : null,\"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(...arguments)}],\"add:share\":function($event){return _vm.addShare(...arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()\n}\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<NcAvatar 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:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\t:title=\"tooltip\"\n\t\t\t:aria-label=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<span>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></span>\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<NcActions 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<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<NcActionCheckbox 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</NcActionCheckbox>\n\n\t\t\t\t<NcActionCheckbox v-if=\"isSetDownloadButtonVisible\"\n\t\t\t\t\tref=\"canDownload\"\n\t\t\t\t\t:checked.sync=\"canDownload\"\n\t\t\t\t\t:disabled=\"saving || !canSetDownload\">\n\t\t\t\t\t{{ allowDownloadText }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<NcActionCheckbox :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</NcActionCheckbox>\n\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</NcActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<NcActionCheckbox :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</NcActionCheckbox>\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\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<NcActionButton 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</NcActionButton>\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput'\nimport NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionTextEditable,\n\t\tNcAvatar,\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\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 sharer set whether the sharee can download the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDownload() {\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.canDownload() || this.canDownload)\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 * Can the sharee download files or only view them ?\n\t\t */\n\t\tcanDownload: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDownloadPermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDownloadChecked: 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\tconst defaultExpirationDate = this.config.defaultInternalExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\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\tif (!this.isRemote && this.config.isDefaultInternalExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultInternalExpireDate))\n\t\t\t} else if (this.config.isDefaultRemoteExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultRemoteExpireDate))\n\t\t\t}\n\t\t\treturn null\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\t/**\n\t\t * @return {string}\n\t\t */\n\t\tallowDownloadText() {\n\t\t\treturn t('files_sharing', 'Allow download')\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisSetDownloadButtonVisible() {\n\t\t\tconst allowedMimetypes = [\n\t\t\t\t// Office documents\n\t\t\t\t'application/msword',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t\t\t'application/vnd.ms-powerpoint',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t\t\t'application/vnd.ms-excel',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'application/vnd.oasis.opendocument.text',\n\t\t\t\t'application/vnd.oasis.opendocument.spreadsheet',\n\t\t\t\t'application/vnd.oasis.opendocument.presentation',\n\t\t\t]\n\n\t\t\treturn this.isFolder || allowedMimetypes.includes(this.fileInfo.mimetype)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({\n\t\t\tisEditChecked = this.canEdit,\n\t\t\tisCreateChecked = this.canCreate,\n\t\t\tisDeleteChecked = this.canDelete,\n\t\t\tisReshareChecked = this.canReshare,\n\t\t\tisDownloadChecked = this.canDownload,\n\t\t} = {}) {\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\tif (this.share.hasDownloadPermission !== isDownloadChecked) {\n\t\t\t\tthis.share.hasDownloadPermission = isDownloadChecked\n\t\t\t}\n\t\t\tthis.queueUpdate('permissions', 'attributes')\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=13a6a5f0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=13a6a5f0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=13a6a5f0&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=13a6a5f0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13a6a5f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_c('NcAvatar',{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,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"title\":_vm.tooltip,\"aria-label\":_vm.tooltip,\"href\":_vm.share.shareWithLink}},[_c('span',[_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('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('NcActionCheckbox',{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('NcActionCheckbox',{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('NcActionCheckbox',{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('NcActionCheckbox',{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(\" \"),(_vm.isSetDownloadButtonVisible)?_c('NcActionCheckbox',{ref:\"canDownload\",attrs:{\"checked\":_vm.canDownload,\"disabled\":_vm.saving || !_vm.canSetDownload},on:{\"update:checked\":function($event){_vm.canDownload=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.allowDownloadText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{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('NcActionInput',{ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_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('NcActionCheckbox',{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('NcActionTextEditable',{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('NcActionButton',{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)\n}\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 render(){var _vm=this,_c=_vm._self._c;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)\n}\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<div v-else class=\"sharingTab__content\">\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<NcAvatar :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</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=\"projectsEnabled && 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</div>\n\n\t\t<!-- additional 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 NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\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\tNcAvatar,\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\tprojectsEnabled: loadState('core', 'projects_enabled', false),\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\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\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=56c61b11&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=56c61b11&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=56c61b11&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=56c61b11&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"56c61b11\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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))])]):_c('div',{staticClass:\"sharingTab__content\"},[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName}})]},proxy:true}],null,false,3197855346)},'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.projectsEnabled && _vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":`${_vm.fileInfo.id}`,\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],1),_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)\n}\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 { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab.vue'\nimport ShareSearch from './services/ShareSearch.js'\nimport ExternalLinkActions from './services/ExternalLinkActions.js'\nimport ExternalShareActions from './services/ExternalShareActions.js'\nimport TabSections from './services/TabSections.js'\n\n// eslint-disable-next-line node/no-missing-import, import/no-unresolved\nimport ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'\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\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\ticonSvg: ShareVariant,\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-5e957d09] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AAEC,uDACC,mCAAA\",\"sourcesContent\":[\"\\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-13a6a5f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-13a6a5f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-13a6a5f0]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-13a6a5f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-13a6a5f0]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AACA,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.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-23251e4a]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-23251e4a]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-23251e4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-23251e4a]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AACA,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.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-69e43ddc]{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-69e43ddc]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\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-1f50aaec]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1f50aaec]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-1f50aaec]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-1f50aaec]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-1f50aaec]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-1f50aaec] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-1f50aaec]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-1f50aaec]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-1f50aaec]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-1f50aaec],.sharing-entry .action-item~.sharing-entry__loading[data-v-1f50aaec]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-1f50aaec]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,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.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\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\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-9fd256bc]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-9fd256bc]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-9fd256bc]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-9fd256bc]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-9fd256bc]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\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\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tmax-width: inherit;\\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-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA\",\"sourcesContent\":[\"\\n.sharing-search {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 4px;\\n\\n\\tlabel[for=\\\"sharing-search-input\\\"] {\\n\\t\\tmargin-bottom: 2px;\\n\\t}\\n\\n\\t&__input {\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 10px 0;\\n\\t}\\n}\\n\\n.vs__dropdown-menu {\\n\\t// properly style the lookup entry\\n\\tspan[lookup] {\\n\\t\\t.avatardiv {\\n\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tdisplay: none;\\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-3462b966]{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\":\"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\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-56c61b11]{margin:1rem auto}.sharingTab__content[data-v-56c61b11]{padding:0 6px}.sharingTab__additionalContent[data-v-56c61b11]{margin:44px 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA\",\"sourcesContent\":[\"\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\\n.sharingTab {\\n\\t&__content {\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\t&__additionalContent {\\n\\t\\tmargin: 44px 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","// 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__(84017); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","document","getElementsByClassName","dataset","allowPublicUpload","getElementById","value","OC","appConfig","core","federatedCloudShareDoc","this","isDefaultExpireDateEnabled","Date","setDate","getDate","defaultExpireDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","defaultExpireDateEnforced","defaultExpireDateEnabled","defaultInternalExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","defaultRemoteExpireDateEnabled","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","attributes","JSON","parse","e","console","warn","_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","date","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","i","attr","scope","key","setAttribute","attrUpdate","push","can_edit","can_delete","via_fileid","via_path","parent","storage_id","storage","item_source","status","SHARE_TYPES","ShareTypes","name","components","NcActions","props","title","type","default","required","subtitle","isUnique","ariaExpanded","computed","ariaExpandedValue","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","_t","_v","_s","_e","$slots","ref","attrs","NcActionLink","SharingEntrySimple","fileInfo","copied","copySuccess","internalLink","copyLinkTooltip","internalLinkSubtitle","methods","copyLink","navigator","showSuccess","setTimeout","t","scopedSlots","_u","fn","proxy","on","$event","preventDefault","apply","arguments","passwordSet","passwordPolicy","api","generate","axios","request","info","showError","array","Uint8Array","ratio","length","self","crypto","getRandomValues","charAt","shareUrl","generateOcsUrl","createShare","shareType","shareWith","publicUpload","expireDate","error","errorMessage","response","meta","message","Notification","showTemporary","deleteShare","updateShare","properties","Error","NcSelect","mixins","shares","linkShares","reshare","canReshare","loading","query","recommendations","ShareSearch","suggestions","externalResults","inputPlaceholder","isValidQuery","noResultText","mounted","handleOpen","emit","asyncFind","getSuggestions","lookup","params","format","itemType","search","perPage","exact","rawExactSuggestions","rawSuggestions","exactSuggestions","map","sort","lookupEntry","isNoUser","displayName","allSuggestions","nameCounts","desc","debounceGetSuggestions","getRecommendations","rawRecommendations","reduce","concat","filterOutExistingShares","obj","sharesObj","arr","shareTypeToIcon","icon","iconTitle","formatForMultiselect","result","server","user","shareWithDisplayNameUnique","addShare","share","GeneratePassword","component","model","callback","$$v","expression","SharesRequests","Object","Boolean","errors","saving","open","updateQueue","PQueue","concurrency","reactiveState","hasNote","get","set","dateTomorrow","lang","weekdaysShort","window","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","owner","getCurrentUser","uid","checkShare","trim","expirationDate","isValid","parseDateString","match","pop","formatDateToString","UTC","getFullYear","getMonth","toISOString","split","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","onDelete","debug","$emit","propertyNames","forEach","stringify","toString","add","updatedShare","indexOf","propertyName","onSyncError","property","propertyEl","$refs","$el","focusable","querySelector","focus","debounceQueueUpdate","debounce","NcActionButton","NcActionText","NcAvatar","viaFileTargetUrl","fileid","viaFolderName","shareWithDisplayName","initiator","ownerDisplayName","viaPath","viaFileid","folder","canDelete","SharingEntryInherited","loaded","showInheritedShares","showInheritedSharesIcon","mainTitle","subTitle","toggleTooltip","fullPath","watch","toggleInheritedShares","fetchInheritedShares","url","resetState","removeShare","stopPropagation","_l","action","is","_g","_b","tag","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","NcActionCheckbox","NcActionRadio","Tune","ChevronLeft","randomFormName","showCustomPermissionsForm","atomicPermissions","bundledPermissions","sharePermissionsSummary","filter","join","sharePermissionsIsBundle","sharePermissionsSetIsValid","isFolder","fileHasCreatePermission","sharePermissionEqual","shareHasPermissions","setSharePermissions","canToggleSharePermissions","permissionSet","toggleSharePermissions","isPublicUploadEnabled","class","NcActionInput","NcActionTextEditable","NcActionSeparator","ExternalShareAction","SharePermissionsEditor","index","pending","ExternalLegacyLinkActions","ExternalShareActions","hasExpirationDate","dateMaxEnforced","isPasswordProtected","Vue","isTalkEnabled","isPasswordProtectedByTalkAvailable","isPasswordProtectedByTalk","isEmailShareType","canTogglePasswordProtectedByTalkAvailable","pendingPassword","pendingExpirationDate","hasUnsavedPassword","shareLink","actionsTooltip","externalLegacyLinkActions","externalLinkActions","isPasswordPolicyEnabled","canChangeHideDownload","onNewLinkShare","shareDefaults","pushNewLinkShare","newShare","update","onLabelChange","onLabelSubmit","onPasswordChange","onPasswordDisable","onPasswordSubmit","onPasswordProtectedByTalkChange","onMenuClose","onCancel","canEdit","newLabel","hideDownload","newPassword","isDefaultExpireDateEnforced","minLength","SharingEntryLink","canLinkShare","hasLinkShares","hasShares","awaitForShare","resolve","permissionsEdit","permissionsCreate","permissionsDelete","permissionsRead","permissionsShare","tooltip","canHaveNote","isRemote","canSetEdit","canSetCreate","canSetDelete","canSetReshare","canSetDownload","isEditChecked","canCreate","isCreateChecked","isDeleteChecked","isReshareChecked","canDownload","isDownloadChecked","hasRead","hasStatus","allowDownloadText","isSetDownloadButtonVisible","updatePermissions","SHARE_TYPE_USER","shareWithAvatar","shareWithLink","isResharingAllowed","isDefaultInternalExpireDateEnforced","SharingEntry","CollectionList","SharingEntryInternal","SharingInherited","SharingInput","SharingLinkList","SharingList","expirationInterval","sharedWithMe","sections","projectsEnabled","isSharedWithMe","getShares","fetchShares","reshares","fetchSharedWithMe","shared_with_me","Promise","clearInterval","updateExpirationSubtitle","relativetime","processShares","processSharedWithMe","group","escape","circle","conversation","listComponent","emptyContentWithSections","section","refInFor","_state","results","handler","ExternalLinkActions","actions","Array","isArray","values","every","findIndex","check","TabSections","_sections","OCA","Sharing","assign","ShareTabSections","n","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","iconSvg","ShareVariant","mount","el","context","$destroy","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files_sharing-main.js b/dist/files_sharing-main.js
index 93e87f942e7..76443e56ef3 100644
--- a/dist/files_sharing-main.js
+++ b/dist/files_sharing-main.js
@@ -1,3 +1,3 @@
/*! For license information please see files_sharing-main.js.LICENSE.txt */
-Object.assign(OC,{Share:{SHARE_TYPE_USER:0,SHARE_TYPE_GROUP:1,SHARE_TYPE_LINK:3,SHARE_TYPE_EMAIL:4,SHARE_TYPE_REMOTE:6,SHARE_TYPE_CIRCLE:7,SHARE_TYPE_GUEST:8,SHARE_TYPE_REMOTE_GROUP:9,SHARE_TYPE_ROOM:10,SHARE_TYPE_DECK:12}});
-//# sourceMappingURL=files_sharing-main.js.map?v=4c7ee07633a21133e94e \ No newline at end of file
+Object.assign(OC,{Share:{SHARE_TYPE_USER:0,SHARE_TYPE_GROUP:1,SHARE_TYPE_LINK:3,SHARE_TYPE_EMAIL:4,SHARE_TYPE_REMOTE:6,SHARE_TYPE_CIRCLE:7,SHARE_TYPE_GUEST:8,SHARE_TYPE_REMOTE_GROUP:9,SHARE_TYPE_ROOM:10,SHARE_TYPE_DECK:12,SHARE_TYPE_SCIENCEMESH:15}});
+//# sourceMappingURL=files_sharing-main.js.map?v=325eef5d4954bda3055f \ No newline at end of file
diff --git a/dist/files_sharing-main.js.map b/dist/files_sharing-main.js.map
index d92302c0b3f..1e9f4c425f7 100644
--- a/dist/files_sharing-main.js.map
+++ b/dist/files_sharing-main.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_sharing-main.js?v=4c7ee07633a21133e94e","mappings":";AAwBAA,OAAOC,OAAOC,GAAI,CACjBC,MAAO,CACNC,gBAAiB,EACjBC,iBAAkB,EAClBC,gBAAiB,EACjBC,iBAAkB,EAClBC,kBAAmB,EACnBC,kBAAmB,EACnBC,iBAAkB,EAClBC,wBAAyB,EACzBC,gBAAiB,GACjBC,gBAAiB","sources":["webpack:///nextcloud/apps/files_sharing/src/index.js"],"sourcesContent":["/**\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\n// register default shares types\nObject.assign(OC, {\n\tShare: {\n\t\tSHARE_TYPE_USER: 0,\n\t\tSHARE_TYPE_GROUP: 1,\n\t\tSHARE_TYPE_LINK: 3,\n\t\tSHARE_TYPE_EMAIL: 4,\n\t\tSHARE_TYPE_REMOTE: 6,\n\t\tSHARE_TYPE_CIRCLE: 7,\n\t\tSHARE_TYPE_GUEST: 8,\n\t\tSHARE_TYPE_REMOTE_GROUP: 9,\n\t\tSHARE_TYPE_ROOM: 10,\n\t\tSHARE_TYPE_DECK: 12,\n\t},\n})\n"],"names":["Object","assign","OC","Share","SHARE_TYPE_USER","SHARE_TYPE_GROUP","SHARE_TYPE_LINK","SHARE_TYPE_EMAIL","SHARE_TYPE_REMOTE","SHARE_TYPE_CIRCLE","SHARE_TYPE_GUEST","SHARE_TYPE_REMOTE_GROUP","SHARE_TYPE_ROOM","SHARE_TYPE_DECK"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_sharing-main.js?v=325eef5d4954bda3055f","mappings":";AAwBAA,OAAOC,OAAOC,GAAI,CACjBC,MAAO,CACNC,gBAAiB,EACjBC,iBAAkB,EAClBC,gBAAiB,EACjBC,iBAAkB,EAClBC,kBAAmB,EACnBC,kBAAmB,EACnBC,iBAAkB,EAClBC,wBAAyB,EACzBC,gBAAiB,GACjBC,gBAAiB,GACjBC,uBAAwB","sources":["webpack:///nextcloud/apps/files_sharing/src/index.js"],"sourcesContent":["/**\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\n// register default shares types\nObject.assign(OC, {\n\tShare: {\n\t\tSHARE_TYPE_USER: 0,\n\t\tSHARE_TYPE_GROUP: 1,\n\t\tSHARE_TYPE_LINK: 3,\n\t\tSHARE_TYPE_EMAIL: 4,\n\t\tSHARE_TYPE_REMOTE: 6,\n\t\tSHARE_TYPE_CIRCLE: 7,\n\t\tSHARE_TYPE_GUEST: 8,\n\t\tSHARE_TYPE_REMOTE_GROUP: 9,\n\t\tSHARE_TYPE_ROOM: 10,\n\t\tSHARE_TYPE_DECK: 12,\n\t\tSHARE_TYPE_SCIENCEMESH: 15,\n\t},\n})\n"],"names":["Object","assign","OC","Share","SHARE_TYPE_USER","SHARE_TYPE_GROUP","SHARE_TYPE_LINK","SHARE_TYPE_EMAIL","SHARE_TYPE_REMOTE","SHARE_TYPE_CIRCLE","SHARE_TYPE_GUEST","SHARE_TYPE_REMOTE_GROUP","SHARE_TYPE_ROOM","SHARE_TYPE_DECK","SHARE_TYPE_SCIENCEMESH"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index 1f1d60f29f4..819a83f2e40 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -58,6 +58,7 @@ OC.L10N.register(
"Avatar image is not square" : "Изображение аватара не квадратное",
"Files" : "Файлы",
"View profile" : "Открыть профиль",
+ "Local time: %s" : "Местное время: %s",
"today" : "сегодня",
"tomorrow" : "завтра",
"yesterday" : "вчера",
@@ -102,6 +103,8 @@ OC.L10N.register(
"Users" : "Пользователи",
"Email" : "Адрес эл. почты",
"Mail %s" : "Написать %s",
+ "Fediverse" : "Федиверс",
+ "View %s on the fediverse" : "Открыть %s в Федиверс",
"Phone" : "Телефон",
"Call %s" : "Позвонить %s",
"Twitter" : "Твиттер",
@@ -203,6 +206,7 @@ OC.L10N.register(
"A valid password must be provided" : "Укажите допустимый пароль",
"The username is already being used" : "Имя пользователя уже используется",
"Could not create user" : "Не удалось создать пользователя",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", spaces and \"_.@-'\"" : "В имени пользователя допускаются следующие символы: «a–z», «A–Z», «0–9» и «_.@-'»",
"A valid username must be provided" : "Укажите допустимое имя пользователя",
"Username contains whitespace at the beginning or at the end" : "Имя пользователя содержит пробел в начале или в конце",
"Username must not consist of dots only" : "Имя пользователя должно состоять не только из точек",
diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json
index f3a5a476dcb..a0d8e3b647a 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -56,6 +56,7 @@
"Avatar image is not square" : "Изображение аватара не квадратное",
"Files" : "Файлы",
"View profile" : "Открыть профиль",
+ "Local time: %s" : "Местное время: %s",
"today" : "сегодня",
"tomorrow" : "завтра",
"yesterday" : "вчера",
@@ -100,6 +101,8 @@
"Users" : "Пользователи",
"Email" : "Адрес эл. почты",
"Mail %s" : "Написать %s",
+ "Fediverse" : "Федиверс",
+ "View %s on the fediverse" : "Открыть %s в Федиверс",
"Phone" : "Телефон",
"Call %s" : "Позвонить %s",
"Twitter" : "Твиттер",
@@ -201,6 +204,7 @@
"A valid password must be provided" : "Укажите допустимый пароль",
"The username is already being used" : "Имя пользователя уже используется",
"Could not create user" : "Не удалось создать пользователя",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", spaces and \"_.@-'\"" : "В имени пользователя допускаются следующие символы: «a–z», «A–Z», «0–9» и «_.@-'»",
"A valid username must be provided" : "Укажите допустимое имя пользователя",
"Username contains whitespace at the beginning or at the end" : "Имя пользователя содержит пробел в начале или в конце",
"Username must not consist of dots only" : "Имя пользователя должно состоять не только из точек",
diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js
index e5786d61ba3..d5572c40f87 100644
--- a/lib/l10n/uk.js
+++ b/lib/l10n/uk.js
@@ -93,9 +93,9 @@ OC.L10N.register(
"__language_name__" : "Українська",
"This is an automatically sent email, please do not reply." : "Це автоматично надісланий електронний лист, будь ласка, не відповідайте.",
"Help" : "Допомога",
- "Appearance and accessibility" : "Вигляд та доступність",
+ "Appearance and accessibility" : "Тема та вигляд",
"Apps" : "Застосунки",
- "Personal settings" : "Особисте",
+ "Personal settings" : "Мої налаштування",
"Administration settings" : "Адміністрування",
"Settings" : "Налаштування",
"Log out" : "Вихід",
diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json
index 8f810d5923b..f832eae7404 100644
--- a/lib/l10n/uk.json
+++ b/lib/l10n/uk.json
@@ -91,9 +91,9 @@
"__language_name__" : "Українська",
"This is an automatically sent email, please do not reply." : "Це автоматично надісланий електронний лист, будь ласка, не відповідайте.",
"Help" : "Допомога",
- "Appearance and accessibility" : "Вигляд та доступність",
+ "Appearance and accessibility" : "Тема та вигляд",
"Apps" : "Застосунки",
- "Personal settings" : "Особисте",
+ "Personal settings" : "Мої налаштування",
"Administration settings" : "Адміністрування",
"Settings" : "Налаштування",
"Log out" : "Вихід",
diff --git a/lib/private/Config.php b/lib/private/Config.php
index a9ecaf2c825..3ea822101df 100644
--- a/lib/private/Config.php
+++ b/lib/private/Config.php
@@ -286,10 +286,12 @@ class Config {
}
// Never write file back if disk space should be too low
- $df = disk_free_space($this->configDir);
- $size = strlen($content) + 10240;
- if ($df !== false && $df < (float)$size) {
- throw new \Exception($this->configDir . " does not have enough space for writing the config file! Not writing it back!");
+ if (function_exists('disk_free_space')) {
+ $df = disk_free_space($this->configDir);
+ $size = strlen($content) + 10240;
+ if ($df !== false && $df < (float)$size) {
+ throw new \Exception($this->configDir . " does not have enough space for writing the config file! Not writing it back!");
+ }
}
// Try to acquire a file lock
diff --git a/lib/private/Files/Node/LazyUserFolder.php b/lib/private/Files/Node/LazyUserFolder.php
index c85a356ddd3..81009532dbf 100644
--- a/lib/private/Files/Node/LazyUserFolder.php
+++ b/lib/private/Files/Node/LazyUserFolder.php
@@ -26,6 +26,7 @@ namespace OC\Files\Node;
use OCP\Files\FileInfo;
use OCP\Constants;
use OCP\Files\IRootFolder;
+use OCP\Files\Mount\IMountManager;
use OCP\Files\NotFoundException;
use OCP\IUser;
@@ -33,10 +34,12 @@ class LazyUserFolder extends LazyFolder {
private IRootFolder $root;
private IUser $user;
private string $path;
+ private IMountManager $mountManager;
- public function __construct(IRootFolder $rootFolder, IUser $user) {
+ public function __construct(IRootFolder $rootFolder, IUser $user, IMountManager $mountManager) {
$this->root = $rootFolder;
$this->user = $user;
+ $this->mountManager = $mountManager;
$this->path = '/' . $user->getUID() . '/files';
parent::__construct(function () use ($user) {
try {
@@ -61,9 +64,20 @@ class LazyUserFolder extends LazyFolder {
/**
* @param int $id
- * @return \OC\Files\Node\Node[]
+ * @return \OCP\Files\Node[]
*/
public function getById($id) {
return $this->root->getByIdInPath((int)$id, $this->getPath());
}
+
+ public function getMountPoint() {
+ if ($this->folder !== null) {
+ return $this->folder->getMountPoint();
+ }
+ $mountPoint = $this->mountManager->find('/' . $this->user->getUID());
+ if (is_null($mountPoint)) {
+ throw new \Exception("No mountpoint for user folder");
+ }
+ return $mountPoint;
+ }
}
diff --git a/lib/private/Files/Node/Root.php b/lib/private/Files/Node/Root.php
index 29cdbb987c3..e9fb14e5364 100644
--- a/lib/private/Files/Node/Root.php
+++ b/lib/private/Files/Node/Root.php
@@ -395,7 +395,7 @@ class Root extends Folder implements IRootFolder {
$folder = $this->newFolder('/' . $userId . '/files');
}
} else {
- $folder = new LazyUserFolder($this, $userObject);
+ $folder = new LazyUserFolder($this, $userObject, $this->mountManager);
}
$this->userFolderCache->set($userId, $folder);
diff --git a/lib/private/Setup/PostgreSQL.php b/lib/private/Setup/PostgreSQL.php
index 8359f7b7563..490cbba69a9 100644
--- a/lib/private/Setup/PostgreSQL.php
+++ b/lib/private/Setup/PostgreSQL.php
@@ -80,7 +80,7 @@ class PostgreSQL extends AbstractDatabase {
// Therefore we assume that the database is only used by one user/service which is Nextcloud
// Additional services should get installed in a separate database in order to stay secure
// Also see https://www.postgresql.org/docs/15/ddl-schemas.html#DDL-SCHEMAS-PATTERNS
- $connectionMainDatabase->executeQuery('GRANT CREATE ON SCHEMA public TO ' . addslashes($this->dbUser));
+ $connectionMainDatabase->executeQuery('GRANT CREATE ON SCHEMA public TO "' . addslashes($this->dbUser) . '"');
$connectionMainDatabase->close();
}
}
@@ -122,7 +122,7 @@ class PostgreSQL extends AbstractDatabase {
private function createDatabase(Connection $connection) {
if (!$this->databaseExists($connection)) {
//The database does not exists... let's create it
- $query = $connection->prepare("CREATE DATABASE " . addslashes($this->dbName) . " OWNER " . addslashes($this->dbUser));
+ $query = $connection->prepare("CREATE DATABASE " . addslashes($this->dbName) . " OWNER \"" . addslashes($this->dbUser) . '"');
try {
$query->execute();
} catch (DatabaseException $e) {
@@ -172,10 +172,10 @@ class PostgreSQL extends AbstractDatabase {
}
// create the user
- $query = $connection->prepare("CREATE USER " . addslashes($this->dbUser) . " CREATEDB PASSWORD '" . addslashes($this->dbPassword) . "'");
+ $query = $connection->prepare("CREATE USER \"" . addslashes($this->dbUser) . "\" CREATEDB PASSWORD '" . addslashes($this->dbPassword) . "'");
$query->execute();
if ($this->databaseExists($connection)) {
- $query = $connection->prepare('GRANT CONNECT ON DATABASE ' . addslashes($this->dbName) . ' TO '.addslashes($this->dbUser));
+ $query = $connection->prepare('GRANT CONNECT ON DATABASE ' . addslashes($this->dbName) . ' TO "' . addslashes($this->dbUser) . '"');
$query->execute();
}
} catch (DatabaseException $e) {
diff --git a/lib/private/Share/Constants.php b/lib/private/Share/Constants.php
index 03c4c2ba828..0c8fad17e07 100644
--- a/lib/private/Share/Constants.php
+++ b/lib/private/Share/Constants.php
@@ -74,6 +74,8 @@ class Constants {
public const SHARE_TYPE_DECK = 12;
// const SHARE_TYPE_DECK_USER = 13; // Internal type used by DeckShareProvider
+ // Note to developers: Do not add new share types here
+
public const FORMAT_NONE = -1;
public const FORMAT_STATUSES = -2;
public const FORMAT_SOURCES = -3; // ToDo Check if it is still in use otherwise remove it
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 7fd99545668..f84ed1671ba 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -244,6 +244,7 @@ class Manager implements IManager {
}
} elseif ($share->getShareType() === IShare::TYPE_ROOM) {
} elseif ($share->getShareType() === IShare::TYPE_DECK) {
+ } elseif ($share->getShareType() === IShare::TYPE_SCIENCEMESH) {
} else {
// We cannot handle other types yet
throw new \InvalidArgumentException('unknown share type');
diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php
index 16f9a17ee42..6abfb372a4d 100644
--- a/lib/private/Share20/ProviderFactory.php
+++ b/lib/private/Share20/ProviderFactory.php
@@ -340,6 +340,8 @@ class ProviderFactory implements IProviderFactory {
$provider = $this->getRoomShareProvider();
} elseif ($shareType === IShare::TYPE_DECK) {
$provider = $this->getProvider('deck');
+ } elseif ($shareType === IShare::TYPE_SCIENCEMESH) {
+ $provider = $this->getProvider('sciencemesh');
}
diff --git a/lib/public/Share/IShare.php b/lib/public/Share/IShare.php
index f8f75be4c41..40548c6c73d 100644
--- a/lib/public/Share/IShare.php
+++ b/lib/public/Share/IShare.php
@@ -118,6 +118,11 @@ interface IShare {
public const TYPE_DECK_USER = 13;
/**
+ * @since 26.0.0
+ */
+ public const TYPE_SCIENCEMESH = 15;
+
+ /**
* @since 18.0.0
*/
public const STATUS_PENDING = 0;
diff --git a/resources/config/mimetypemapping.dist.json b/resources/config/mimetypemapping.dist.json
index ff321657da5..7b631466972 100644
--- a/resources/config/mimetypemapping.dist.json
+++ b/resources/config/mimetypemapping.dist.json
@@ -203,6 +203,7 @@
"vstm": ["application/vnd.ms-visio.template.macroEnabled.12"],
"vstx": ["application/vnd.ms-visio.template"],
"wav": ["audio/wav"],
+ "weba": ["audio/webm"],
"webloc": ["application/internet-shortcut"],
"webm": ["video/webm"],
"webp": ["image/webp"],