aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/comments/l10n/pt_BR.js2
-rw-r--r--apps/comments/l10n/pt_BR.json2
-rw-r--r--apps/dav/l10n/uk.js5
-rw-r--r--apps/dav/l10n/uk.json5
-rw-r--r--apps/dav/lib/Migration/ChunkCleanup.php1
-rw-r--r--apps/federatedfilesharing/l10n/et_EE.js1
-rw-r--r--apps/federatedfilesharing/l10n/et_EE.json1
-rw-r--r--apps/federatedfilesharing/l10n/pt_BR.js4
-rw-r--r--apps/federatedfilesharing/l10n/pt_BR.json4
-rw-r--r--apps/federation/l10n/pt_BR.js6
-rw-r--r--apps/federation/l10n/pt_BR.json6
-rw-r--r--apps/files/l10n/ko.js11
-rw-r--r--apps/files/l10n/ko.json11
-rw-r--r--apps/files/l10n/pt_BR.js14
-rw-r--r--apps/files/l10n/pt_BR.json14
-rw-r--r--apps/files/l10n/uk.js2
-rw-r--r--apps/files/l10n/uk.json2
-rw-r--r--apps/files_sharing/l10n/de.js4
-rw-r--r--apps/files_sharing/l10n/de.json4
-rw-r--r--apps/files_sharing/l10n/de_DE.js4
-rw-r--r--apps/files_sharing/l10n/de_DE.json4
-rw-r--r--apps/files_sharing/l10n/ru.js6
-rw-r--r--apps/files_sharing/l10n/ru.json6
-rw-r--r--apps/files_sharing/lib/Controller/ShareAPIController.php4
-rw-r--r--apps/files_sharing/lib/MountProvider.php16
-rw-r--r--apps/files_sharing/lib/SharedMount.php21
-rw-r--r--apps/files_sharing/src/mixins/ShareRequests.js6
-rw-r--r--apps/files_sharing/src/views/SharingDetailsTab.vue14
-rw-r--r--apps/files_sharing/tests/MountProviderTest.php4
-rw-r--r--apps/files_trashbin/l10n/pt_BR.js12
-rw-r--r--apps/files_trashbin/l10n/pt_BR.json12
-rw-r--r--apps/files_versions/l10n/pt_BR.js4
-rw-r--r--apps/files_versions/l10n/pt_BR.json4
-rw-r--r--apps/lookup_server_connector/l10n/et_EE.js4
-rw-r--r--apps/lookup_server_connector/l10n/et_EE.json4
-rw-r--r--apps/profile/l10n/et_EE.js5
-rw-r--r--apps/profile/l10n/et_EE.json5
-rw-r--r--apps/provisioning_api/l10n/pt_BR.js10
-rw-r--r--apps/provisioning_api/l10n/pt_BR.json10
-rw-r--r--apps/settings/l10n/br.js22
-rw-r--r--apps/settings/l10n/br.json22
-rw-r--r--apps/settings/l10n/et_EE.js3
-rw-r--r--apps/settings/l10n/et_EE.json3
-rw-r--r--apps/settings/l10n/pt_BR.js2
-rw-r--r--apps/settings/l10n/pt_BR.json2
-rw-r--r--apps/settings/l10n/uk.js39
-rw-r--r--apps/settings/l10n/uk.json39
-rw-r--r--apps/settings/templates/help.php2
-rw-r--r--apps/theming/l10n/et_EE.js8
-rw-r--r--apps/theming/l10n/et_EE.json8
-rw-r--r--apps/theming/l10n/pt_BR.js40
-rw-r--r--apps/theming/l10n/pt_BR.json40
-rw-r--r--apps/updatenotification/l10n/uk.js4
-rw-r--r--apps/updatenotification/l10n/uk.json4
-rw-r--r--apps/user_ldap/l10n/cs.js1
-rw-r--r--apps/user_ldap/l10n/cs.json1
-rw-r--r--apps/user_ldap/l10n/de.js1
-rw-r--r--apps/user_ldap/l10n/de.json1
-rw-r--r--apps/user_ldap/l10n/de_DE.js1
-rw-r--r--apps/user_ldap/l10n/de_DE.json1
-rw-r--r--apps/user_ldap/l10n/en_GB.js1
-rw-r--r--apps/user_ldap/l10n/en_GB.json1
-rw-r--r--apps/user_ldap/l10n/et_EE.js4
-rw-r--r--apps/user_ldap/l10n/et_EE.json4
-rw-r--r--apps/user_ldap/l10n/pt_BR.js15
-rw-r--r--apps/user_ldap/l10n/pt_BR.json15
-rw-r--r--apps/user_ldap/l10n/sr.js1
-rw-r--r--apps/user_ldap/l10n/sr.json1
-rw-r--r--apps/user_ldap/l10n/zh_CN.js1
-rw-r--r--apps/user_ldap/l10n/zh_CN.json1
-rw-r--r--apps/user_ldap/l10n/zh_HK.js1
-rw-r--r--apps/user_ldap/l10n/zh_HK.json1
-rw-r--r--apps/user_ldap/l10n/zh_TW.js1
-rw-r--r--apps/user_ldap/l10n/zh_TW.json1
-rw-r--r--build/psalm-baseline.xml5
-rw-r--r--core/Listener/BeforeTemplateRenderedListener.php2
-rw-r--r--core/js/tests/specs/coreSpec.js2
-rw-r--r--core/l10n/br.js8
-rw-r--r--core/l10n/br.json8
-rw-r--r--core/l10n/ko.js19
-rw-r--r--core/l10n/ko.json19
-rw-r--r--core/l10n/pt_BR.js46
-rw-r--r--core/l10n/pt_BR.json46
-rw-r--r--cypress/e2e/settings/users.cy.ts5
-rw-r--r--dist/4542-4542.js2
-rw-r--r--dist/4542-4542.js.map1
l---------dist/4542-4542.js.map.license1
-rw-r--r--dist/4672-4672.js2
-rw-r--r--dist/4672-4672.js.license (renamed from dist/4542-4542.js.license)0
-rw-r--r--dist/4672-4672.js.map1
l---------dist/4672-4672.js.map.license1
-rw-r--r--dist/files_sharing-files_sharing_tab.js4
-rw-r--r--dist/files_sharing-files_sharing_tab.js.map2
-rw-r--r--lib/base.php2
-rw-r--r--lib/l10n/ar.js4
-rw-r--r--lib/l10n/ar.json4
-rw-r--r--lib/l10n/br.js32
-rw-r--r--lib/l10n/br.json32
-rw-r--r--lib/l10n/ca.js4
-rw-r--r--lib/l10n/ca.json4
-rw-r--r--lib/l10n/cs.js4
-rw-r--r--lib/l10n/cs.json4
-rw-r--r--lib/l10n/da.js4
-rw-r--r--lib/l10n/da.json4
-rw-r--r--lib/l10n/de.js4
-rw-r--r--lib/l10n/de.json4
-rw-r--r--lib/l10n/de_DE.js4
-rw-r--r--lib/l10n/de_DE.json4
-rw-r--r--lib/l10n/en_GB.js4
-rw-r--r--lib/l10n/en_GB.json4
-rw-r--r--lib/l10n/es.js4
-rw-r--r--lib/l10n/es.json4
-rw-r--r--lib/l10n/es_MX.js4
-rw-r--r--lib/l10n/es_MX.json4
-rw-r--r--lib/l10n/et_EE.js41
-rw-r--r--lib/l10n/et_EE.json41
-rw-r--r--lib/l10n/eu.js4
-rw-r--r--lib/l10n/eu.json4
-rw-r--r--lib/l10n/fr.js4
-rw-r--r--lib/l10n/fr.json4
-rw-r--r--lib/l10n/ga.js4
-rw-r--r--lib/l10n/ga.json4
-rw-r--r--lib/l10n/gl.js4
-rw-r--r--lib/l10n/gl.json4
-rw-r--r--lib/l10n/ja.js4
-rw-r--r--lib/l10n/ja.json4
-rw-r--r--lib/l10n/pl.js4
-rw-r--r--lib/l10n/pl.json4
-rw-r--r--lib/l10n/pt_BR.js28
-rw-r--r--lib/l10n/pt_BR.json28
-rw-r--r--lib/l10n/ru.js4
-rw-r--r--lib/l10n/ru.json4
-rw-r--r--lib/l10n/sk.js4
-rw-r--r--lib/l10n/sk.json4
-rw-r--r--lib/l10n/sr.js4
-rw-r--r--lib/l10n/sr.json4
-rw-r--r--lib/l10n/sv.js4
-rw-r--r--lib/l10n/sv.json4
-rw-r--r--lib/l10n/tr.js4
-rw-r--r--lib/l10n/tr.json4
-rw-r--r--lib/l10n/ug.js4
-rw-r--r--lib/l10n/ug.json4
-rw-r--r--lib/l10n/uk.js4
-rw-r--r--lib/l10n/uk.json4
-rw-r--r--lib/l10n/zh_CN.js4
-rw-r--r--lib/l10n/zh_CN.json4
-rw-r--r--lib/l10n/zh_HK.js4
-rw-r--r--lib/l10n/zh_HK.json4
-rw-r--r--lib/l10n/zh_TW.js4
-rw-r--r--lib/l10n/zh_TW.json4
-rw-r--r--lib/private/Federation/CloudId.php42
-rw-r--r--lib/private/Federation/CloudIdManager.php16
-rw-r--r--lib/private/Image.php2
-rw-r--r--lib/private/NavigationManager.php3
-rw-r--r--lib/private/RichObjectStrings/Validator.php6
-rw-r--r--lib/private/Setup.php86
-rw-r--r--lib/private/Share20/Manager.php15
-rw-r--r--lib/private/Share20/ShareDisableChecker.php7
-rw-r--r--lib/private/Template/JSConfigHelper.php7
-rw-r--r--lib/private/Template/functions.php5
-rw-r--r--lib/private/legacy/OC_Util.php161
-rw-r--r--lib/public/Share/IManager.php4
-rw-r--r--lib/public/Util.php23
-rw-r--r--tests/lib/Comments/ManagerTest.php12
-rw-r--r--tests/lib/Federation/CloudIdManagerTest.php15
-rw-r--r--tests/lib/Federation/CloudIdTest.php38
-rw-r--r--tests/lib/RichObjectStrings/ValidatorTest.php5
-rw-r--r--tests/lib/Share20/ManagerTest.php2
-rw-r--r--tests/lib/UtilTest.php20
169 files changed, 952 insertions, 641 deletions
diff --git a/apps/comments/l10n/pt_BR.js b/apps/comments/l10n/pt_BR.js
index 62cbdd8d4a2..035edefd0bc 100644
--- a/apps/comments/l10n/pt_BR.js
+++ b/apps/comments/l10n/pt_BR.js
@@ -11,7 +11,7 @@ OC.L10N.register(
"<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos",
"Files" : "Arquivos",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário de uma conta que já foi excluída",
- "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário em \"{file}\"",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário sobre \"{file}\"",
"Files app plugin to add comments to files" : "Complemento do aplicativo Files para adicionar comentários",
"Edit comment" : "Editar comentário",
"Delete comment" : "Excluir comentário",
diff --git a/apps/comments/l10n/pt_BR.json b/apps/comments/l10n/pt_BR.json
index 0fed08d9fc0..c1cb3d4c814 100644
--- a/apps/comments/l10n/pt_BR.json
+++ b/apps/comments/l10n/pt_BR.json
@@ -9,7 +9,7 @@
"<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos",
"Files" : "Arquivos",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário de uma conta que já foi excluída",
- "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário em \"{file}\"",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário sobre \"{file}\"",
"Files app plugin to add comments to files" : "Complemento do aplicativo Files para adicionar comentários",
"Edit comment" : "Editar comentário",
"Delete comment" : "Excluir comentário",
diff --git a/apps/dav/l10n/uk.js b/apps/dav/l10n/uk.js
index 84cd5cf9f9f..d9e61d6cdb8 100644
--- a/apps/dav/l10n/uk.js
+++ b/apps/dav/l10n/uk.js
@@ -213,6 +213,9 @@ OC.L10N.register(
"Completed on %s" : "Завершено %s",
"Due on %s by %s" : "До %s з боку %s",
"Due on %s" : "До %s",
+ "System Address Book" : "Системна адресна книга",
+ "The system address book contains contact information for all users in your instance." : "Системна адресна книга містить контактну інформацію для всіх користувачів вашого примірника хмари.",
+ "Enable System Address Book" : "Увімкнути системну адресну книгу",
"DAV system address book" : "Системна адресна книга DAV",
"No outstanding DAV system address book sync." : "Немає незавершеної синхронізації системної адресної книги DAV.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Синхронізація системної адресної книги DAV ще не запускалася, оскільки, або ваша система вже має понад 1000 користувачів, або сталася помилка. Будь ласка, запустіть синхронізацію вручну за допомогою команди \"occ dav:sync-system-addressbook\".",
@@ -231,7 +234,7 @@ OC.L10N.register(
"First day" : "Перший день",
"Last day (inclusive)" : "Останній день (включно)",
"Out of office replacement (optional)" : "Заміна під час відсутності (необов'язково)",
- "Name of the replacement" : "Ім'я того, хто вас замінятиме",
+ "Name of the replacement" : "Ім'я заступника",
"No results." : "Відсутні результати.",
"Start typing." : "Почніть вводити.",
"Short absence status" : "Короткий статус відсутности",
diff --git a/apps/dav/l10n/uk.json b/apps/dav/l10n/uk.json
index c0b0855ef07..5df09055596 100644
--- a/apps/dav/l10n/uk.json
+++ b/apps/dav/l10n/uk.json
@@ -211,6 +211,9 @@
"Completed on %s" : "Завершено %s",
"Due on %s by %s" : "До %s з боку %s",
"Due on %s" : "До %s",
+ "System Address Book" : "Системна адресна книга",
+ "The system address book contains contact information for all users in your instance." : "Системна адресна книга містить контактну інформацію для всіх користувачів вашого примірника хмари.",
+ "Enable System Address Book" : "Увімкнути системну адресну книгу",
"DAV system address book" : "Системна адресна книга DAV",
"No outstanding DAV system address book sync." : "Немає незавершеної синхронізації системної адресної книги DAV.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Синхронізація системної адресної книги DAV ще не запускалася, оскільки, або ваша система вже має понад 1000 користувачів, або сталася помилка. Будь ласка, запустіть синхронізацію вручну за допомогою команди \"occ dav:sync-system-addressbook\".",
@@ -229,7 +232,7 @@
"First day" : "Перший день",
"Last day (inclusive)" : "Останній день (включно)",
"Out of office replacement (optional)" : "Заміна під час відсутності (необов'язково)",
- "Name of the replacement" : "Ім'я того, хто вас замінятиме",
+ "Name of the replacement" : "Ім'я заступника",
"No results." : "Відсутні результати.",
"Start typing." : "Почніть вводити.",
"Short absence status" : "Короткий статус відсутности",
diff --git a/apps/dav/lib/Migration/ChunkCleanup.php b/apps/dav/lib/Migration/ChunkCleanup.php
index 681b38404b9..edd9a26109e 100644
--- a/apps/dav/lib/Migration/ChunkCleanup.php
+++ b/apps/dav/lib/Migration/ChunkCleanup.php
@@ -37,6 +37,7 @@ class ChunkCleanup implements IRepairStep {
// If we already ran this onec there is no need to run it again
if ($this->config->getAppValue('dav', 'chunks_migrated', '0') === '1') {
$output->info('Cleanup not required');
+ return;
}
$output->startProgress();
diff --git a/apps/federatedfilesharing/l10n/et_EE.js b/apps/federatedfilesharing/l10n/et_EE.js
index c7636328a6f..ad6794f8894 100644
--- a/apps/federatedfilesharing/l10n/et_EE.js
+++ b/apps/federatedfilesharing/l10n/et_EE.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Sharing" : "Jagamine",
"Federated file sharing" : "Failide jagamine liitpilves",
"Provide federated file sharing across servers" : "Toeta failide jagamist liitpilves üle serverite",
+ "Confirm data upload to lookup server" : "Kinnita andmete üleslaadimine tuvastusserverisse",
"Disable upload" : "Keela üleslaadimine",
"Enable data upload" : "Luba andmete üleslaadimine",
"Disable querying" : "Keela päringute tegemine",
diff --git a/apps/federatedfilesharing/l10n/et_EE.json b/apps/federatedfilesharing/l10n/et_EE.json
index b3fee999e97..e54f79f5a57 100644
--- a/apps/federatedfilesharing/l10n/et_EE.json
+++ b/apps/federatedfilesharing/l10n/et_EE.json
@@ -21,6 +21,7 @@
"Sharing" : "Jagamine",
"Federated file sharing" : "Failide jagamine liitpilves",
"Provide federated file sharing across servers" : "Toeta failide jagamist liitpilves üle serverite",
+ "Confirm data upload to lookup server" : "Kinnita andmete üleslaadimine tuvastusserverisse",
"Disable upload" : "Keela üleslaadimine",
"Enable data upload" : "Luba andmete üleslaadimine",
"Disable querying" : "Keela päringute tegemine",
diff --git a/apps/federatedfilesharing/l10n/pt_BR.js b/apps/federatedfilesharing/l10n/pt_BR.js
index 162540b8f76..d76b63526c4 100644
--- a/apps/federatedfilesharing/l10n/pt_BR.js
+++ b/apps/federatedfilesharing/l10n/pt_BR.js
@@ -66,10 +66,10 @@ OC.L10N.register(
"Remote share" : "Compartilhamento remoto",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Deseja adicionar o compartilhamento remoto {name} de {owner}@{remote}?",
"Remote share password" : "Senha do compartilhamento remoto",
- "Incoming share could not be processed" : "A participação não pôde ser processada",
+ "Incoming share could not be processed" : "O compartilhamento recebido não pôde ser processado",
"Clipboard is not available" : "A área de transferência não está disponível",
"Your Federated Cloud ID:" : "Sua ID de Nuvem Federada:",
"Twitter" : "Twitter",
- "Diaspora" : "Diáspora"
+ "Diaspora" : "Diaspora"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/federatedfilesharing/l10n/pt_BR.json b/apps/federatedfilesharing/l10n/pt_BR.json
index 3cf64900999..11e31f16c6d 100644
--- a/apps/federatedfilesharing/l10n/pt_BR.json
+++ b/apps/federatedfilesharing/l10n/pt_BR.json
@@ -64,10 +64,10 @@
"Remote share" : "Compartilhamento remoto",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Deseja adicionar o compartilhamento remoto {name} de {owner}@{remote}?",
"Remote share password" : "Senha do compartilhamento remoto",
- "Incoming share could not be processed" : "A participação não pôde ser processada",
+ "Incoming share could not be processed" : "O compartilhamento recebido não pôde ser processado",
"Clipboard is not available" : "A área de transferência não está disponível",
"Your Federated Cloud ID:" : "Sua ID de Nuvem Federada:",
"Twitter" : "Twitter",
- "Diaspora" : "Diáspora"
+ "Diaspora" : "Diaspora"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/federation/l10n/pt_BR.js b/apps/federation/l10n/pt_BR.js
index f711999350e..9423314eeef 100644
--- a/apps/federation/l10n/pt_BR.js
+++ b/apps/federation/l10n/pt_BR.js
@@ -9,10 +9,10 @@ OC.L10N.register(
"Could not add server" : "Não foi possível adicionar servidor",
"Trusted servers" : "Servidores confiáveis",
"Federation" : "Federação",
- "Federation allows you to connect with other trusted servers to exchange the account directory." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório da conta.",
- "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório da conta. Por exemplo, isso será usado para preencher automaticamente contas externas para compartilhamento federado.",
+ "Federation allows you to connect with other trusted servers to exchange the account directory." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório de contas.",
+ "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório de contas. Por exemplo, isso será usado para preencher automaticamente contas externas para compartilhamento federado.",
"External documentation for Federated Cloud Sharing" : "Documentação externa para Compartilhamento de Nuvem Federada",
- "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório da conta. Por exemplo, isso será usado para preencher automaticamente contas externas para compartilhamento federado. Não é necessário adicionar um servidor como servidor confiável para criar um compartilhamento federado.",
+ "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório de contas. Por exemplo, isso será usado para preencher automaticamente contas externas para compartilhamento federado. Não é necessário adicionar um servidor como servidor confiável para criar um compartilhamento federado.",
"Each server must validate the other. This process may require a few cron cycles." : "Cada servidor deve validar o outro. Esse processo pode exigir alguns ciclos de cron.",
"+ Add trusted server" : "+Adicionar servidores confiáveis",
"Trusted server" : "Servidores confiáveis",
diff --git a/apps/federation/l10n/pt_BR.json b/apps/federation/l10n/pt_BR.json
index 4ef98435507..712e1f33687 100644
--- a/apps/federation/l10n/pt_BR.json
+++ b/apps/federation/l10n/pt_BR.json
@@ -7,10 +7,10 @@
"Could not add server" : "Não foi possível adicionar servidor",
"Trusted servers" : "Servidores confiáveis",
"Federation" : "Federação",
- "Federation allows you to connect with other trusted servers to exchange the account directory." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório da conta.",
- "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório da conta. Por exemplo, isso será usado para preencher automaticamente contas externas para compartilhamento federado.",
+ "Federation allows you to connect with other trusted servers to exchange the account directory." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório de contas.",
+ "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório de contas. Por exemplo, isso será usado para preencher automaticamente contas externas para compartilhamento federado.",
"External documentation for Federated Cloud Sharing" : "Documentação externa para Compartilhamento de Nuvem Federada",
- "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório da conta. Por exemplo, isso será usado para preencher automaticamente contas externas para compartilhamento federado. Não é necessário adicionar um servidor como servidor confiável para criar um compartilhamento federado.",
+ "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "A federação permite que você se conecte a outros servidores confiáveis ​​para trocar o diretório de contas. Por exemplo, isso será usado para preencher automaticamente contas externas para compartilhamento federado. Não é necessário adicionar um servidor como servidor confiável para criar um compartilhamento federado.",
"Each server must validate the other. This process may require a few cron cycles." : "Cada servidor deve validar o outro. Esse processo pode exigir alguns ciclos de cron.",
"+ Add trusted server" : "+Adicionar servidores confiáveis",
"Trusted server" : "Servidores confiáveis",
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index afc4d7adfc4..fdab5fe77c0 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -48,6 +48,9 @@ OC.L10N.register(
"Folder not found" : "폴더를 찾을 수 없음",
"The file cannot be found" : "파일을 찾을 수 없습니다",
"The destination path does not exist: %1$s" : "목표한 경로가 존재하지 않습니다: %1$s",
+ "You do not have permission to create a file at the specified location" : "지정한 위치에 파일을 생성할 권한이 없습니다.",
+ "The file could not be converted." : "파일이 변환될 수 없습니다.",
+ "Could not get relative path to converted file" : "변환될 파일의 상대 경로를 알 수 없습니다",
"Favorite files" : "즐겨찾는 파일",
"No favorites" : "즐겨찾는 항목 없음",
"More favorites" : "즐겨찾기 더 불러오기",
@@ -77,6 +80,7 @@ OC.L10N.register(
"Go to the \"{dir}\" directory" : "\"{dir}\" 경로로 이동",
"Current directory path" : "현재 디렉토리 경로",
"Your have used your space quota and cannot upload files anymore" : "저장소 할당량을 모두 사용하여 더 이상 파일을 업로드할 수 없습니다",
+ "You do not have permission to upload or create files here." : "여기에 업로드하거나 파일을 생성할 권한이 없습니다.",
"Drag and drop files here to upload" : "이곳에 파일을 드래그 앤 드롭해 업로드",
"Favorite" : "즐겨찾기",
"Back" : "뒤로",
@@ -102,6 +106,7 @@ OC.L10N.register(
"Toggle selection for all files and folders" : "모든 파일 선택/선택해제",
"Name" : "이름",
"Size" : "크기",
+ "\"{displayName}\" failed on some elements" : "\"{displayName}\" 일부 요소로 실패",
"\"{displayName}\" batch action executed successfully" : "\"{displayName}\" 일괄 작업을 성공적으로 실행함",
"\"{displayName}\" action failed" : "\"{displayName}\" 작업을 실패함",
"Actions" : "작업",
@@ -124,6 +129,7 @@ OC.L10N.register(
"This name is already in use." : "이 이름은 이미 사용 중입니다.",
"Create" : "생성",
"Fill template fields" : "양식 입력란 채우기",
+ "Submitting fields …" : "항목 제출 중 ...",
"Submit" : "제출",
"Choose a file or folder to transfer" : "이전할 파일이나 폴더 고르기",
"Transfer" : "이전",
@@ -136,11 +142,15 @@ OC.L10N.register(
"Choose file or folder to transfer" : "이전할 파일이나 폴더 고르기",
"Change" : "변경",
"New owner" : "새 소유자",
+ "Keep {old}" : "{old} 보관",
+ "Keep without extension" : "연장하지 않고 보관",
+ "Use {new}" : "{new}사용",
"Remove extension" : "확장자 제거",
"Change file extension" : "파일 확장자 변경",
"Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "\"{old}\" 파일 확장자를 \"{new}\"(으)로 바꾸면 파일을 읽지 못할 수 있습니다.",
"Removing the file extension \"{old}\" may render the file unreadable." : "\"{old}\" 파일 확장자를 제거하면 파일을 읽지 못할 수 있습니다.",
"Adding the file extension \"{new}\" may render the file unreadable." : "\"{new}\" 파일 확장자를 추가하면 파일을 읽지 못할 수 있습니다.",
+ "Do not show this dialog again." : "이 알림을 다시 보여주지 마세요.",
"Select file or folder to link to" : "링크할 파일이나 폴더 선택",
"Choose {file}" : "{file} 선택",
"Share" : "공유하기",
@@ -148,6 +158,7 @@ OC.L10N.register(
"Shared" : "공유됨",
"Switch to list view" : "목록 보기로 전환",
"Switch to grid view" : "그리드뷰로 전환",
+ "The file could not be found" : "파일을 찾을 수 없음",
"Upload was cancelled by user" : "사용자에 의해 업로드가 취소됨",
"Not enough free space" : "남은 공간이 부족함",
"Operation is blocked by access control" : "접근 설정에 의해 동작이 차단됨",
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index 148ad7e8d79..726018caecd 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -46,6 +46,9 @@
"Folder not found" : "폴더를 찾을 수 없음",
"The file cannot be found" : "파일을 찾을 수 없습니다",
"The destination path does not exist: %1$s" : "목표한 경로가 존재하지 않습니다: %1$s",
+ "You do not have permission to create a file at the specified location" : "지정한 위치에 파일을 생성할 권한이 없습니다.",
+ "The file could not be converted." : "파일이 변환될 수 없습니다.",
+ "Could not get relative path to converted file" : "변환될 파일의 상대 경로를 알 수 없습니다",
"Favorite files" : "즐겨찾는 파일",
"No favorites" : "즐겨찾는 항목 없음",
"More favorites" : "즐겨찾기 더 불러오기",
@@ -75,6 +78,7 @@
"Go to the \"{dir}\" directory" : "\"{dir}\" 경로로 이동",
"Current directory path" : "현재 디렉토리 경로",
"Your have used your space quota and cannot upload files anymore" : "저장소 할당량을 모두 사용하여 더 이상 파일을 업로드할 수 없습니다",
+ "You do not have permission to upload or create files here." : "여기에 업로드하거나 파일을 생성할 권한이 없습니다.",
"Drag and drop files here to upload" : "이곳에 파일을 드래그 앤 드롭해 업로드",
"Favorite" : "즐겨찾기",
"Back" : "뒤로",
@@ -100,6 +104,7 @@
"Toggle selection for all files and folders" : "모든 파일 선택/선택해제",
"Name" : "이름",
"Size" : "크기",
+ "\"{displayName}\" failed on some elements" : "\"{displayName}\" 일부 요소로 실패",
"\"{displayName}\" batch action executed successfully" : "\"{displayName}\" 일괄 작업을 성공적으로 실행함",
"\"{displayName}\" action failed" : "\"{displayName}\" 작업을 실패함",
"Actions" : "작업",
@@ -122,6 +127,7 @@
"This name is already in use." : "이 이름은 이미 사용 중입니다.",
"Create" : "생성",
"Fill template fields" : "양식 입력란 채우기",
+ "Submitting fields …" : "항목 제출 중 ...",
"Submit" : "제출",
"Choose a file or folder to transfer" : "이전할 파일이나 폴더 고르기",
"Transfer" : "이전",
@@ -134,11 +140,15 @@
"Choose file or folder to transfer" : "이전할 파일이나 폴더 고르기",
"Change" : "변경",
"New owner" : "새 소유자",
+ "Keep {old}" : "{old} 보관",
+ "Keep without extension" : "연장하지 않고 보관",
+ "Use {new}" : "{new}사용",
"Remove extension" : "확장자 제거",
"Change file extension" : "파일 확장자 변경",
"Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "\"{old}\" 파일 확장자를 \"{new}\"(으)로 바꾸면 파일을 읽지 못할 수 있습니다.",
"Removing the file extension \"{old}\" may render the file unreadable." : "\"{old}\" 파일 확장자를 제거하면 파일을 읽지 못할 수 있습니다.",
"Adding the file extension \"{new}\" may render the file unreadable." : "\"{new}\" 파일 확장자를 추가하면 파일을 읽지 못할 수 있습니다.",
+ "Do not show this dialog again." : "이 알림을 다시 보여주지 마세요.",
"Select file or folder to link to" : "링크할 파일이나 폴더 선택",
"Choose {file}" : "{file} 선택",
"Share" : "공유하기",
@@ -146,6 +156,7 @@
"Shared" : "공유됨",
"Switch to list view" : "목록 보기로 전환",
"Switch to grid view" : "그리드뷰로 전환",
+ "The file could not be found" : "파일을 찾을 수 없음",
"Upload was cancelled by user" : "사용자에 의해 업로드가 취소됨",
"Not enough free space" : "남은 공간이 부족함",
"Operation is blocked by access control" : "접근 설정에 의해 동작이 차단됨",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index 9480f76f35e..d98dcbf0e3c 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -9,7 +9,7 @@ OC.L10N.register(
"File changes" : "Mudanças nos arquivos",
"Created by {user}" : "Criado por {user}",
"Changed by {user}" : "Modificado por {user}",
- "Deleted by {user}" : "Apagado por {user}",
+ "Deleted by {user}" : "Excluído por {user}",
"Restored by {user}" : "Restaurado por {user}",
"Renamed by {user}" : "Renomeado por {user}",
"Moved by {user}" : "Movido por {user}",
@@ -46,10 +46,10 @@ OC.L10N.register(
"Failed to authorize" : "Falha ao autorizar",
"Invalid folder path" : "Caminho de pasta inválido",
"Folder not found" : "Pasta não encontrada",
- "The file cannot be found" : "O arquivo não pôde ser encontrado",
+ "The file cannot be found" : "O arquivo não pode ser encontrado",
"The destination path does not exist: %1$s" : "O caminho de destino não existe: %1$s",
- "You do not have permission to create a file at the specified location" : "VocÊ não tem permissão para criar um arquivo no local especificado",
- "The file could not be converted." : "Esse arquivo não pôde ser convertido.",
+ "You do not have permission to create a file at the specified location" : "Você não tem permissão para criar um arquivo no local especificado",
+ "The file could not be converted." : "Não foi possível converter o arquivo.",
"Could not get relative path to converted file" : "Não foi possível obter o caminho relativo do arquivo convertido",
"Favorite files" : "Arquivos favoritos",
"No favorites" : "Sem favoritos",
@@ -60,7 +60,7 @@ OC.L10N.register(
"Incoming ownership transfer from {user}" : "Transferência de propriedade recebida de {user}",
"Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Deseja aceitar {path}?\n\nObservação: O processo de transferência pode levar até 1 hora.",
"Ownership transfer denied" : "Transferência de propriedade negada",
- "Your ownership transfer of {path} was denied by {user}." : "Sua transferência de propriedade de {path} foi negado por {user}.",
+ "Your ownership transfer of {path} was denied by {user}." : "Sua transferência de propriedade de {path} foi negada por {user}.",
"Ownership transfer failed" : "Erro na transferência da propriedade",
"Your ownership transfer of {path} to {user} failed." : "Erro na transferência da sua propriedade de {path} para {user}.",
"The ownership transfer of {path} from {user} failed." : "Erro na transferência da propriedade de {path} de {user}.",
@@ -122,8 +122,8 @@ OC.L10N.register(
"{relative}% used" : "{relative}% usado",
"Could not refresh storage stats" : "Não foi possível atualizar as estatísticas de armazenamento",
"Your storage is full, files can not be updated or synced anymore!" : "Seu armazenamento está cheio e arquivos não podem mais ser atualizados ou sincronizados!",
- "Storage information" : "Informações do armazenamento",
- "Storage quota" : "Quantidade de armazenamento",
+ "Storage information" : "Informações de armazenamento",
+ "Storage quota" : "Cota de armazenamento",
"New folder" : "Nova pasta",
"Create new folder" : "Criar nova pasta",
"This name is already in use." : "Este nome já está em uso.",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index f9dda7ffe0d..c47889b8956 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -7,7 +7,7 @@
"File changes" : "Mudanças nos arquivos",
"Created by {user}" : "Criado por {user}",
"Changed by {user}" : "Modificado por {user}",
- "Deleted by {user}" : "Apagado por {user}",
+ "Deleted by {user}" : "Excluído por {user}",
"Restored by {user}" : "Restaurado por {user}",
"Renamed by {user}" : "Renomeado por {user}",
"Moved by {user}" : "Movido por {user}",
@@ -44,10 +44,10 @@
"Failed to authorize" : "Falha ao autorizar",
"Invalid folder path" : "Caminho de pasta inválido",
"Folder not found" : "Pasta não encontrada",
- "The file cannot be found" : "O arquivo não pôde ser encontrado",
+ "The file cannot be found" : "O arquivo não pode ser encontrado",
"The destination path does not exist: %1$s" : "O caminho de destino não existe: %1$s",
- "You do not have permission to create a file at the specified location" : "VocÊ não tem permissão para criar um arquivo no local especificado",
- "The file could not be converted." : "Esse arquivo não pôde ser convertido.",
+ "You do not have permission to create a file at the specified location" : "Você não tem permissão para criar um arquivo no local especificado",
+ "The file could not be converted." : "Não foi possível converter o arquivo.",
"Could not get relative path to converted file" : "Não foi possível obter o caminho relativo do arquivo convertido",
"Favorite files" : "Arquivos favoritos",
"No favorites" : "Sem favoritos",
@@ -58,7 +58,7 @@
"Incoming ownership transfer from {user}" : "Transferência de propriedade recebida de {user}",
"Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Deseja aceitar {path}?\n\nObservação: O processo de transferência pode levar até 1 hora.",
"Ownership transfer denied" : "Transferência de propriedade negada",
- "Your ownership transfer of {path} was denied by {user}." : "Sua transferência de propriedade de {path} foi negado por {user}.",
+ "Your ownership transfer of {path} was denied by {user}." : "Sua transferência de propriedade de {path} foi negada por {user}.",
"Ownership transfer failed" : "Erro na transferência da propriedade",
"Your ownership transfer of {path} to {user} failed." : "Erro na transferência da sua propriedade de {path} para {user}.",
"The ownership transfer of {path} from {user} failed." : "Erro na transferência da propriedade de {path} de {user}.",
@@ -120,8 +120,8 @@
"{relative}% used" : "{relative}% usado",
"Could not refresh storage stats" : "Não foi possível atualizar as estatísticas de armazenamento",
"Your storage is full, files can not be updated or synced anymore!" : "Seu armazenamento está cheio e arquivos não podem mais ser atualizados ou sincronizados!",
- "Storage information" : "Informações do armazenamento",
- "Storage quota" : "Quantidade de armazenamento",
+ "Storage information" : "Informações de armazenamento",
+ "Storage quota" : "Cota de armazenamento",
"New folder" : "Nova pasta",
"Create new folder" : "Criar nova pasta",
"This name is already in use." : "Este nome já está em uso.",
diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js
index 5e3f06b9dbf..c78d0ac00e5 100644
--- a/apps/files/l10n/uk.js
+++ b/apps/files/l10n/uk.js
@@ -70,7 +70,7 @@ OC.L10N.register(
"in %s" : "в %s",
"Transferred from %1$s on %2$s" : "Перенесено від %1$s до %2$s",
"Files compatibility" : "Сумісність файлів",
- "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Дозволити обмежувати імена файлів для забезпечення сумісності з різними клієнтами. Типово всі імена файлів, які відповідають моделі POSIX (напр. Linux, macOS) дозволені.",
+ "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Дозволити обмежувати імена файлів для забезпечення сумісності з різними клієнтами. Типово всі імена файлів, які відповідають моделі POSIX (напр., Linux, macOS), дозволені.",
"Enforce Windows compatibility" : "Увімкнути сумісність із Windows",
"This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Це унеможливить використання імен файлів, які не сумісні з системами Windows, напр., використанння зарезервованих імен або спеціальних символів. Зауважте, що це не обмежить сумісність за регістром символів.",
"File Management" : "Керування файлами",
diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json
index d9a5f648eea..81b7c4a493b 100644
--- a/apps/files/l10n/uk.json
+++ b/apps/files/l10n/uk.json
@@ -68,7 +68,7 @@
"in %s" : "в %s",
"Transferred from %1$s on %2$s" : "Перенесено від %1$s до %2$s",
"Files compatibility" : "Сумісність файлів",
- "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Дозволити обмежувати імена файлів для забезпечення сумісності з різними клієнтами. Типово всі імена файлів, які відповідають моделі POSIX (напр. Linux, macOS) дозволені.",
+ "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Дозволити обмежувати імена файлів для забезпечення сумісності з різними клієнтами. Типово всі імена файлів, які відповідають моделі POSIX (напр., Linux, macOS), дозволені.",
"Enforce Windows compatibility" : "Увімкнути сумісність із Windows",
"This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Це унеможливить використання імен файлів, які не сумісні з системами Windows, напр., використанння зарезервованих імен або спеціальних символів. Зауважте, що це не обмежить сумісність за регістром символів.",
"File Management" : "Керування файлами",
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index e06e205b86f..0c9bb4d7429 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -263,8 +263,8 @@ OC.L10N.register(
"Submit name" : "Name übermitteln",
"{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} hat einen Ordner mit dir geteilt.",
"To upload files, you need to provide your name first." : "Um Dateien hochzuladen, musst du zunächst deinen Namen angeben.",
- "Nickname" : "Spitzname",
- "Enter your nickname" : "Gib deinen Spitznamen ein",
+ "Nickname" : "Name",
+ "Enter your nickname" : "Gib deinen Namen ein",
"Share with {userName}" : "Mit {userName} teilen",
"Share with email {email}" : "Per E-Mail {email} teilen",
"Share with group" : "Mit Gruppe teilen",
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index b7c8705ea22..3adc7dc5635 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -261,8 +261,8 @@
"Submit name" : "Name übermitteln",
"{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} hat einen Ordner mit dir geteilt.",
"To upload files, you need to provide your name first." : "Um Dateien hochzuladen, musst du zunächst deinen Namen angeben.",
- "Nickname" : "Spitzname",
- "Enter your nickname" : "Gib deinen Spitznamen ein",
+ "Nickname" : "Name",
+ "Enter your nickname" : "Gib deinen Namen ein",
"Share with {userName}" : "Mit {userName} teilen",
"Share with email {email}" : "Per E-Mail {email} teilen",
"Share with group" : "Mit Gruppe teilen",
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index 21b7da2d2c2..56ae7037328 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -263,8 +263,8 @@ OC.L10N.register(
"Submit name" : "Name übermitteln",
"{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} hat einen Ordner mit Ihnen geteilt.",
"To upload files, you need to provide your name first." : "Um Dateien hochzuladen, müssen Sie zunächst Ihren Namen angeben.",
- "Nickname" : "Spitzname",
- "Enter your nickname" : "Geben Sie Ihren Spitznamen ein",
+ "Nickname" : "Name",
+ "Enter your nickname" : "Geben Sie Ihren Namen ein",
"Share with {userName}" : "Mit {userName} teilen",
"Share with email {email}" : "Mit E-Mail {email} teilen",
"Share with group" : "Mit Gruppe teilen",
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index f72a9ae7cfe..4d8e690d399 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -261,8 +261,8 @@
"Submit name" : "Name übermitteln",
"{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} hat einen Ordner mit Ihnen geteilt.",
"To upload files, you need to provide your name first." : "Um Dateien hochzuladen, müssen Sie zunächst Ihren Namen angeben.",
- "Nickname" : "Spitzname",
- "Enter your nickname" : "Geben Sie Ihren Spitznamen ein",
+ "Nickname" : "Name",
+ "Enter your nickname" : "Geben Sie Ihren Namen ein",
"Share with {userName}" : "Mit {userName} teilen",
"Share with email {email}" : "Mit E-Mail {email} teilen",
"Share with group" : "Mit Gruppe teilen",
diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js
index ca783e92e5d..b9624572e9a 100644
--- a/apps/files_sharing/l10n/ru.js
+++ b/apps/files_sharing/l10n/ru.js
@@ -246,12 +246,12 @@ OC.L10N.register(
"on {server}" : "на {server}",
"Note from" : "Примечание от",
"Note:" : "Примечание:",
- "File drop" : "Принимать файлы",
- "Upload files to {foldername}." : "Загрузить файлы в {foldername}.",
+ "File drop" : "Приём файлов",
+ "Upload files to {foldername}." : "Загрузка файлов в {foldername}.",
"By uploading files, you agree to the terms of service." : "Загружая файлы, вы соглашаетесь с условиями обслуживания.",
"View terms of service" : "Ознакомиться с условиями предоставления услуг",
"Terms of service" : "Условия использования",
- "Upload files to {folder}" : "Загрузить файлы в {folder}",
+ "Upload files to {folder}" : "Загрузка файлов в {folder}",
"Submit name" : "Отправить имя",
"{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} поделился с вами папкой.",
"To upload files, you need to provide your name first." : "Чтобы загрузить файлы, вам необходимо сначала указать свое имя.",
diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json
index 54628a26c5b..cc7c216a9cb 100644
--- a/apps/files_sharing/l10n/ru.json
+++ b/apps/files_sharing/l10n/ru.json
@@ -244,12 +244,12 @@
"on {server}" : "на {server}",
"Note from" : "Примечание от",
"Note:" : "Примечание:",
- "File drop" : "Принимать файлы",
- "Upload files to {foldername}." : "Загрузить файлы в {foldername}.",
+ "File drop" : "Приём файлов",
+ "Upload files to {foldername}." : "Загрузка файлов в {foldername}.",
"By uploading files, you agree to the terms of service." : "Загружая файлы, вы соглашаетесь с условиями обслуживания.",
"View terms of service" : "Ознакомиться с условиями предоставления услуг",
"Terms of service" : "Условия использования",
- "Upload files to {folder}" : "Загрузить файлы в {folder}",
+ "Upload files to {folder}" : "Загрузка файлов в {folder}",
"Submit name" : "Отправить имя",
"{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} поделился с вами папкой.",
"To upload files, you need to provide your name first." : "Чтобы загрузить файлы, вам необходимо сначала указать свое имя.",
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index 25e552e35ad..1e1d60aae25 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -52,6 +52,7 @@ use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
use OCP\Mail\IMailer;
use OCP\Server;
+use OCP\Share\Exceptions\GenericShareException;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\Exceptions\ShareTokenException;
use OCP\Share\IManager;
@@ -800,6 +801,9 @@ class ShareAPIController extends OCSController {
} catch (HintException $e) {
$code = $e->getCode() === 0 ? 403 : $e->getCode();
throw new OCSException($e->getHint(), $code);
+ } catch (GenericShareException|\InvalidArgumentException $e) {
+ $this->logger->error($e->getMessage(), ['exception' => $e]);
+ throw new OCSForbiddenException($e->getMessage(), $e);
} catch (\Exception $e) {
$this->logger->error($e->getMessage(), ['exception' => $e]);
throw new OCSForbiddenException('Failed to create share.', $e);
diff --git a/apps/files_sharing/lib/MountProvider.php b/apps/files_sharing/lib/MountProvider.php
index ad9498371d3..ea99023676b 100644
--- a/apps/files_sharing/lib/MountProvider.php
+++ b/apps/files_sharing/lib/MountProvider.php
@@ -11,6 +11,7 @@ use OCA\Files_Sharing\Event\ShareMountedEvent;
use OCP\Cache\CappedMemoryCache;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Config\IMountProvider;
+use OCP\Files\Mount\IMountManager;
use OCP\Files\Mount\IMountPoint;
use OCP\Files\Storage\IStorageFactory;
use OCP\ICacheFactory;
@@ -32,6 +33,7 @@ class MountProvider implements IMountProvider {
protected LoggerInterface $logger,
protected IEventDispatcher $eventDispatcher,
protected ICacheFactory $cacheFactory,
+ protected IMountManager $mountManager,
) {
}
@@ -58,12 +60,17 @@ class MountProvider implements IMountProvider {
$superShares = $this->buildSuperShares($shares, $user);
- $mounts = [];
+ $mounts = $this->mountManager->getAll();
$view = new View('/' . $user->getUID() . '/files');
$ownerViews = [];
$sharingDisabledForUser = $this->shareManager->sharingDisabledForUser($user->getUID());
/** @var CappedMemoryCache<bool> $folderExistCache */
$foldersExistCache = new CappedMemoryCache();
+
+ $validShareCache = $this->cacheFactory->createLocal('share-valid-mountpoint-max');
+ $maxValidatedShare = $validShareCache->get($user->getUID()) ?? 0;
+ $newMaxValidatedShare = $maxValidatedShare;
+
foreach ($superShares as $share) {
try {
/** @var IShare $parentShare */
@@ -80,6 +87,7 @@ class MountProvider implements IMountProvider {
if (!isset($ownerViews[$owner])) {
$ownerViews[$owner] = new View('/' . $parentShare->getShareOwner() . '/files');
}
+ $shareId = (int)$parentShare->getId();
$mount = new SharedMount(
'\OCA\Files_Sharing\SharedStorage',
$mounts,
@@ -97,9 +105,11 @@ class MountProvider implements IMountProvider {
$foldersExistCache,
$this->eventDispatcher,
$user,
- $this->cacheFactory->createLocal('share-valid-mountpoint')
+ ($shareId <= $maxValidatedShare)
);
+ $newMaxValidatedShare = max($shareId, $newMaxValidatedShare);
+
$event = new ShareMountedEvent($mount);
$this->eventDispatcher->dispatchTyped($event);
@@ -118,6 +128,8 @@ class MountProvider implements IMountProvider {
}
}
+ $validShareCache->set($user->getUID(), $newMaxValidatedShare, 24 * 60 * 60);
+
// array_filter removes the null values from the array
return array_values(array_filter($mounts));
}
diff --git a/apps/files_sharing/lib/SharedMount.php b/apps/files_sharing/lib/SharedMount.php
index fc5b533af64..3ac843af311 100644
--- a/apps/files_sharing/lib/SharedMount.php
+++ b/apps/files_sharing/lib/SharedMount.php
@@ -16,7 +16,6 @@ use OCP\Cache\CappedMemoryCache;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Events\InvalidateMountCacheEvent;
use OCP\Files\Storage\IStorageFactory;
-use OCP\ICache;
use OCP\IDBConnection;
use OCP\IUser;
use OCP\Server;
@@ -48,13 +47,19 @@ class SharedMount extends MountPoint implements MoveableMount, ISharedMountPoint
CappedMemoryCache $folderExistCache,
private IEventDispatcher $eventDispatcher,
private IUser $user,
- private ICache $cache,
+ bool $alreadyVerified,
) {
$this->superShare = $arguments['superShare'];
$this->groupedShares = $arguments['groupedShares'];
- $newMountPoint = $this->verifyMountPoint($this->superShare, $mountpoints, $folderExistCache);
- $absMountPoint = '/' . $user->getUID() . '/files' . $newMountPoint;
+ $absMountPoint = '/' . $user->getUID() . '/files/' . trim($this->superShare->getTarget(), '/') . '/';
+
+ // after the mountpoint is verified for the first time, only new mountpoints (e.g. groupfolders can overwrite the target)
+ if (!$alreadyVerified || isset($mountpoints[$absMountPoint])) {
+ $newMountPoint = $this->verifyMountPoint($this->superShare, $mountpoints, $folderExistCache);
+ $absMountPoint = '/' . $user->getUID() . '/files/' . trim($newMountPoint, '/') . '/';
+ }
+
parent::__construct($storage, $absMountPoint, $arguments, $loader, null, null, MountProvider::class);
}
@@ -71,12 +76,6 @@ class SharedMount extends MountPoint implements MoveableMount, ISharedMountPoint
array $mountpoints,
CappedMemoryCache $folderExistCache,
) {
- $cacheKey = $this->user->getUID() . '/' . $share->getId() . '/' . $share->getTarget();
- $cached = $this->cache->get($cacheKey);
- if ($cached !== null) {
- return $cached;
- }
-
$mountPoint = basename($share->getTarget());
$parent = dirname($share->getTarget());
@@ -105,8 +104,6 @@ class SharedMount extends MountPoint implements MoveableMount, ISharedMountPoint
$this->updateFileTarget($newMountPoint, $share);
}
- $this->cache->set($cacheKey, $newMountPoint, 60 * 60);
-
return $newMountPoint;
}
diff --git a/apps/files_sharing/src/mixins/ShareRequests.js b/apps/files_sharing/src/mixins/ShareRequests.js
index 24b4b12061e..2c33fa3b0c7 100644
--- a/apps/files_sharing/src/mixins/ShareRequests.js
+++ b/apps/files_sharing/src/mixins/ShareRequests.js
@@ -6,10 +6,12 @@
// TODO: remove when ie not supported
import 'url-search-params-polyfill'
+import { emit } from '@nextcloud/event-bus'
+import { showError } from '@nextcloud/dialogs'
import { generateOcsUrl } from '@nextcloud/router'
import axios from '@nextcloud/axios'
+
import Share from '../models/Share.ts'
-import { emit } from '@nextcloud/event-bus'
const shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')
@@ -45,7 +47,7 @@ export default {
} catch (error) {
console.error('Error while creating share', error)
const errorMessage = error?.response?.data?.ocs?.meta?.message
- OC.Notification.showTemporary(
+ showError(
errorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),
{ type: 'error' },
)
diff --git a/apps/files_sharing/src/views/SharingDetailsTab.vue b/apps/files_sharing/src/views/SharingDetailsTab.vue
index 659d65cd70c..3f7a20d8e0c 100644
--- a/apps/files_sharing/src/views/SharingDetailsTab.vue
+++ b/apps/files_sharing/src/views/SharingDetailsTab.vue
@@ -251,6 +251,7 @@
</NcButton>
<NcButton type="primary"
data-cy-files-sharing-share-editor-action="save"
+ :disabled="creating"
@click="saveShare">
{{ shareButtonText }}
<template v-if="creating" #icon>
@@ -1003,8 +1004,16 @@ export default {
incomingShare.password = this.share.password
}
- this.creating = true
- const share = await this.addShare(incomingShare)
+ let share
+ try {
+ this.creating = true
+ share = await this.addShare(incomingShare)
+ } catch (error) {
+ this.creating = false
+ // Error is already handled by ShareRequests mixin
+ return
+ }
+
// ugly hack to make code work - we need the id to be set but at the same time we need to keep values we want to update
this.share._share.id = share.id
await this.queueUpdate(...permissionsAndAttributes)
@@ -1018,6 +1027,7 @@ export default {
}
}
}
+
this.share = share
this.creating = false
this.$emit('add:share', this.share)
diff --git a/apps/files_sharing/tests/MountProviderTest.php b/apps/files_sharing/tests/MountProviderTest.php
index 1f67bdd01fa..285af51f022 100644
--- a/apps/files_sharing/tests/MountProviderTest.php
+++ b/apps/files_sharing/tests/MountProviderTest.php
@@ -11,6 +11,7 @@ use OC\Share20\Share;
use OCA\Files_Sharing\MountProvider;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\IRootFolder;
+use OCP\Files\Mount\IMountManager;
use OCP\Files\Storage\IStorageFactory;
use OCP\ICacheFactory;
use OCP\IConfig;
@@ -55,8 +56,9 @@ class MountProviderTest extends \Test\TestCase {
$cacheFactory = $this->createMock(ICacheFactory::class);
$cacheFactory->method('createLocal')
->willReturn(new NullCache());
+ $mountManager = $this->createMock(IMountManager::class);
- $this->provider = new MountProvider($this->config, $this->shareManager, $this->logger, $eventDispatcher, $cacheFactory);
+ $this->provider = new MountProvider($this->config, $this->shareManager, $this->logger, $eventDispatcher, $cacheFactory, $mountManager);
}
private function makeMockShareAttributes($attrs) {
diff --git a/apps/files_trashbin/l10n/pt_BR.js b/apps/files_trashbin/l10n/pt_BR.js
index fbaa9ed9543..59a67c33b48 100644
--- a/apps/files_trashbin/l10n/pt_BR.js
+++ b/apps/files_trashbin/l10n/pt_BR.js
@@ -2,25 +2,25 @@ OC.L10N.register(
"files_trashbin",
{
"restored" : "restaurado",
- "Deleted files" : "Arquivos apagados",
+ "Deleted files" : "Arquivos exluídos",
"Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Arquivos e pastas excluídos na lixeira (podem expirar durante a exportação se você estiver com pouco espaço de armazenamento)",
"This application enables people to restore files that were deleted from the system." : "Este aplicativo permite que as pessoas restaurem arquivos que foram excluídos do sistema.",
- "This application enables people to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the people file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent an account from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Este aplicativo permite que as pessoas restaurem arquivos que foram excluídos do sistema. Ele exibe uma lista de arquivos excluídos na interface da web e tem opções para restaurar esses arquivos excluídos de volta aos diretórios de arquivos de pessoas ou removê-los permanentemente do sistema. A restauração de um arquivo também restaura versões de arquivos relacionadas, se o aplicativo de versões estiver ativado. Quando um arquivo é excluído de um compartilhamento, ele pode ser restaurado da mesma maneira, embora não seja mais compartilhado. Por padrão, esses arquivos permanecem na lixeira por 30 dias. \nPara evitar que uma conta fique sem espaço em disco, o aplicativo Arquivos excluídos não utilizará mais de 50% da cota gratuita atualmente disponível para arquivos excluídos. Se os arquivos excluídos excederem esse limite, o aplicativo excluirá os arquivos mais antigos até ficarem abaixo desse limite. Mais informações estão disponíveis na documentação Arquivos Excluídos.",
+ "This application enables people to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the people file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent an account from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Este aplicativo permite que as pessoas restaurem arquivos que foram excluídos do sistema. Ele exibe uma lista de arquivos excluídos na interface da web e tem opções para restaurar esses arquivos excluídos de volta aos diretórios de arquivos de pessoas ou removê-los permanentemente do sistema. A restauração de um arquivo também restaura versões de arquivos relacionadas, se o aplicativo de versões estiver ativado. Quando um arquivo é excluído de um compartilhamento, ele pode ser restaurado da mesma maneira, embora não seja mais compartilhado. Por padrão, esses arquivos permanecem na lixeira por 30 dias. \nPara evitar que uma conta fique sem espaço em disco, o aplicativo Arquivos excluídos não utilizará mais de 50% da cota livre atualmente disponível para arquivos excluídos. Se os arquivos excluídos excederem esse limite, o aplicativo excluirá os arquivos mais antigos até ficarem abaixo desse limite. Mais informações estão disponíveis na documentação Arquivos Excluídos.",
"Restore" : "Restaurar",
"Empty deleted files" : "Esvaziar arquivos excluídos",
- "Confirm permanent deletion" : "Confirmar exclusão permanente",
+ "Confirm permanent deletion" : "Confirme exclusão permanente",
"Are you sure you want to permanently delete all files and folders in the trash? This cannot be undone." : "Tem certeza de que deseja excluir permanentemente todos os arquivos e pastas na lixeira? Isso não pode ser desfeito.",
"Cancel" : "Cancelar",
"Deletion cancelled" : "Operação de exclusão cancelada",
"Original location" : "Localização original",
"Deleted by" : "Excluído por",
"Deleted" : "Excluído",
- "A long time ago" : "A muito tempo atrás",
- "Unknown" : "Desconhecido",
+ "A long time ago" : "Há muito tempo",
+ "Unknown" : "Desconhecida",
"All files" : "Todos os arquivos",
"You" : "Você",
"List of files that have been deleted." : "Lista de arquivos que foram excluídos.",
- "No deleted files" : "Nenhum arquivo apagado",
+ "No deleted files" : "Nenhum arquivo excluído",
"Files and folders you have deleted will show up here" : "Arquivos e pastas que você excluiu aparecerão aqui"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_trashbin/l10n/pt_BR.json b/apps/files_trashbin/l10n/pt_BR.json
index 45812145a51..3cdbaad0f17 100644
--- a/apps/files_trashbin/l10n/pt_BR.json
+++ b/apps/files_trashbin/l10n/pt_BR.json
@@ -1,24 +1,24 @@
{ "translations": {
"restored" : "restaurado",
- "Deleted files" : "Arquivos apagados",
+ "Deleted files" : "Arquivos exluídos",
"Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Arquivos e pastas excluídos na lixeira (podem expirar durante a exportação se você estiver com pouco espaço de armazenamento)",
"This application enables people to restore files that were deleted from the system." : "Este aplicativo permite que as pessoas restaurem arquivos que foram excluídos do sistema.",
- "This application enables people to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the people file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent an account from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Este aplicativo permite que as pessoas restaurem arquivos que foram excluídos do sistema. Ele exibe uma lista de arquivos excluídos na interface da web e tem opções para restaurar esses arquivos excluídos de volta aos diretórios de arquivos de pessoas ou removê-los permanentemente do sistema. A restauração de um arquivo também restaura versões de arquivos relacionadas, se o aplicativo de versões estiver ativado. Quando um arquivo é excluído de um compartilhamento, ele pode ser restaurado da mesma maneira, embora não seja mais compartilhado. Por padrão, esses arquivos permanecem na lixeira por 30 dias. \nPara evitar que uma conta fique sem espaço em disco, o aplicativo Arquivos excluídos não utilizará mais de 50% da cota gratuita atualmente disponível para arquivos excluídos. Se os arquivos excluídos excederem esse limite, o aplicativo excluirá os arquivos mais antigos até ficarem abaixo desse limite. Mais informações estão disponíveis na documentação Arquivos Excluídos.",
+ "This application enables people to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the people file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent an account from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Este aplicativo permite que as pessoas restaurem arquivos que foram excluídos do sistema. Ele exibe uma lista de arquivos excluídos na interface da web e tem opções para restaurar esses arquivos excluídos de volta aos diretórios de arquivos de pessoas ou removê-los permanentemente do sistema. A restauração de um arquivo também restaura versões de arquivos relacionadas, se o aplicativo de versões estiver ativado. Quando um arquivo é excluído de um compartilhamento, ele pode ser restaurado da mesma maneira, embora não seja mais compartilhado. Por padrão, esses arquivos permanecem na lixeira por 30 dias. \nPara evitar que uma conta fique sem espaço em disco, o aplicativo Arquivos excluídos não utilizará mais de 50% da cota livre atualmente disponível para arquivos excluídos. Se os arquivos excluídos excederem esse limite, o aplicativo excluirá os arquivos mais antigos até ficarem abaixo desse limite. Mais informações estão disponíveis na documentação Arquivos Excluídos.",
"Restore" : "Restaurar",
"Empty deleted files" : "Esvaziar arquivos excluídos",
- "Confirm permanent deletion" : "Confirmar exclusão permanente",
+ "Confirm permanent deletion" : "Confirme exclusão permanente",
"Are you sure you want to permanently delete all files and folders in the trash? This cannot be undone." : "Tem certeza de que deseja excluir permanentemente todos os arquivos e pastas na lixeira? Isso não pode ser desfeito.",
"Cancel" : "Cancelar",
"Deletion cancelled" : "Operação de exclusão cancelada",
"Original location" : "Localização original",
"Deleted by" : "Excluído por",
"Deleted" : "Excluído",
- "A long time ago" : "A muito tempo atrás",
- "Unknown" : "Desconhecido",
+ "A long time ago" : "Há muito tempo",
+ "Unknown" : "Desconhecida",
"All files" : "Todos os arquivos",
"You" : "Você",
"List of files that have been deleted." : "Lista de arquivos que foram excluídos.",
- "No deleted files" : "Nenhum arquivo apagado",
+ "No deleted files" : "Nenhum arquivo excluído",
"Files and folders you have deleted will show up here" : "Arquivos e pastas que você excluiu aparecerão aqui"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/pt_BR.js b/apps/files_versions/l10n/pt_BR.js
index 5397448addc..bb0880450a1 100644
--- a/apps/files_versions/l10n/pt_BR.js
+++ b/apps/files_versions/l10n/pt_BR.js
@@ -3,12 +3,12 @@ OC.L10N.register(
{
"Versions" : "Versões",
"This application automatically maintains older versions of files that are changed." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos que são alterados.",
- "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the account does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the account's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos que foram alterados. Quando ativada, uma pasta de versões ocultas é provisionada no diretório de cada usuário e usada para armazenar versões antigas de arquivos. Um usuário pode reverter para uma versão mais antiga através da interface web a qualquer momento, com o arquivo substituído se tornando uma versão. O aplicativo gerencia automaticamente a pasta de versões para garantir que a conta não fique sem cota por causa das versões. \n\t\tAlém da expiração das versões, o aplicativo de versões garante nunca usar mais de 50% do espaço livre disponível atualmente na conta. Se as versões armazenadas excederem esse limite, o aplicativo excluirá primeiro as versões mais antigas até atingir esse limite. Mais informações estão disponíveis na documentação de Versões.",
+ "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the account does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the account's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos que foram alterados. Quando ativada, uma pasta de versões oculta é provisionada no diretório de cada usuário e usada para armazenar versões antigas de arquivos. Um usuário pode reverter para uma versão mais antiga através da interface web a qualquer momento, com o arquivo substituído se tornando uma versão. O aplicativo gerencia automaticamente a pasta de versões para garantir que a conta não fique sem cota por causa das versões. \n\t\tAlém da expiração das versões, o aplicativo de versões garante nunca usar mais de 50% do espaço livre disponível atualmente na conta. Se as versões armazenadas excederem esse limite, o aplicativo excluirá primeiro as versões mais antigas até atingir esse limite. Mais informações estão disponíveis na documentação de Versões.",
"Current version" : "Versão atual",
"Initial version" : "Versão inicial",
"You" : "Você",
"Actions for version from {versionHumanExplicitDate}" : "Ações para versão de {versionHumanExplicitDate}",
- "Name this version" : "Nomeie esta versão",
+ "Name this version" : "Nomear esta versão",
"Edit version name" : "Editar nome da versão",
"Compare to current version" : "Comparar com a versão atual",
"Restore version" : "Restaurar versão",
diff --git a/apps/files_versions/l10n/pt_BR.json b/apps/files_versions/l10n/pt_BR.json
index ae825969fb6..b213f3724a8 100644
--- a/apps/files_versions/l10n/pt_BR.json
+++ b/apps/files_versions/l10n/pt_BR.json
@@ -1,12 +1,12 @@
{ "translations": {
"Versions" : "Versões",
"This application automatically maintains older versions of files that are changed." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos que são alterados.",
- "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the account does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the account's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos que foram alterados. Quando ativada, uma pasta de versões ocultas é provisionada no diretório de cada usuário e usada para armazenar versões antigas de arquivos. Um usuário pode reverter para uma versão mais antiga através da interface web a qualquer momento, com o arquivo substituído se tornando uma versão. O aplicativo gerencia automaticamente a pasta de versões para garantir que a conta não fique sem cota por causa das versões. \n\t\tAlém da expiração das versões, o aplicativo de versões garante nunca usar mais de 50% do espaço livre disponível atualmente na conta. Se as versões armazenadas excederem esse limite, o aplicativo excluirá primeiro as versões mais antigas até atingir esse limite. Mais informações estão disponíveis na documentação de Versões.",
+ "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the account does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the account's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos que foram alterados. Quando ativada, uma pasta de versões oculta é provisionada no diretório de cada usuário e usada para armazenar versões antigas de arquivos. Um usuário pode reverter para uma versão mais antiga através da interface web a qualquer momento, com o arquivo substituído se tornando uma versão. O aplicativo gerencia automaticamente a pasta de versões para garantir que a conta não fique sem cota por causa das versões. \n\t\tAlém da expiração das versões, o aplicativo de versões garante nunca usar mais de 50% do espaço livre disponível atualmente na conta. Se as versões armazenadas excederem esse limite, o aplicativo excluirá primeiro as versões mais antigas até atingir esse limite. Mais informações estão disponíveis na documentação de Versões.",
"Current version" : "Versão atual",
"Initial version" : "Versão inicial",
"You" : "Você",
"Actions for version from {versionHumanExplicitDate}" : "Ações para versão de {versionHumanExplicitDate}",
- "Name this version" : "Nomeie esta versão",
+ "Name this version" : "Nomear esta versão",
"Edit version name" : "Editar nome da versão",
"Compare to current version" : "Comparar com a versão atual",
"Restore version" : "Restaurar versão",
diff --git a/apps/lookup_server_connector/l10n/et_EE.js b/apps/lookup_server_connector/l10n/et_EE.js
index 699bbc2bb5b..6f0cf9edd1a 100644
--- a/apps/lookup_server_connector/l10n/et_EE.js
+++ b/apps/lookup_server_connector/l10n/et_EE.js
@@ -1,7 +1,7 @@
OC.L10N.register(
"lookup_server_connector",
{
- "Lookup Server Connector" : "Otsingu serveri ühendaja",
- "Sync public account information with the lookup server" : "Sünkroniseeri avalik konto informatsioon päringuserveriga"
+ "Lookup Server Connector" : "Tuvastusserveri ühendaja",
+ "Sync public account information with the lookup server" : "Sünkroniseeri avalik kontoteave tuvastusserverisse"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/lookup_server_connector/l10n/et_EE.json b/apps/lookup_server_connector/l10n/et_EE.json
index 8b2e0b97d0f..c6a2adc034d 100644
--- a/apps/lookup_server_connector/l10n/et_EE.json
+++ b/apps/lookup_server_connector/l10n/et_EE.json
@@ -1,5 +1,5 @@
{ "translations": {
- "Lookup Server Connector" : "Otsingu serveri ühendaja",
- "Sync public account information with the lookup server" : "Sünkroniseeri avalik konto informatsioon päringuserveriga"
+ "Lookup Server Connector" : "Tuvastusserveri ühendaja",
+ "Sync public account information with the lookup server" : "Sünkroniseeri avalik kontoteave tuvastusserverisse"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/profile/l10n/et_EE.js b/apps/profile/l10n/et_EE.js
index f648bb561cd..f716328096d 100644
--- a/apps/profile/l10n/et_EE.js
+++ b/apps/profile/l10n/et_EE.js
@@ -1,9 +1,12 @@
OC.L10N.register(
"profile",
{
+ "Profile" : "Profiil",
+ "This application provides the profile" : "See rakendus tagab profiili olemasolu",
+ "Provides a customisable user profile interface." : "Tagab kasutajaliidese kasutaja kohendatava profiili jaoks.",
"You have not added any info yet" : "Sa pole veel mingit infot lisanud",
"{user} has not added any info yet" : "{user} pole veel mingit infot lisanud",
- "Error opening the user status modal, try hard refreshing the page" : "Kasutaja staatuse modaaldialoogi avamine ebaõnnestus, proovi lehte värskendada",
+ "Error opening the user status modal, try hard refreshing the page" : "Kasutaja oleku modaalse vaate avamine ei õnnestunud, proovi lehte värskendada",
"Edit Profile" : "Muuda profiili",
"The headline and about sections will show up here" : "Alapealkirja ja teabe lõigud saavad olema nähtavad siin",
"Profile not found" : "Profiili ei leitud",
diff --git a/apps/profile/l10n/et_EE.json b/apps/profile/l10n/et_EE.json
index 2f4c14c6d83..47a4be5a21d 100644
--- a/apps/profile/l10n/et_EE.json
+++ b/apps/profile/l10n/et_EE.json
@@ -1,7 +1,10 @@
{ "translations": {
+ "Profile" : "Profiil",
+ "This application provides the profile" : "See rakendus tagab profiili olemasolu",
+ "Provides a customisable user profile interface." : "Tagab kasutajaliidese kasutaja kohendatava profiili jaoks.",
"You have not added any info yet" : "Sa pole veel mingit infot lisanud",
"{user} has not added any info yet" : "{user} pole veel mingit infot lisanud",
- "Error opening the user status modal, try hard refreshing the page" : "Kasutaja staatuse modaaldialoogi avamine ebaõnnestus, proovi lehte värskendada",
+ "Error opening the user status modal, try hard refreshing the page" : "Kasutaja oleku modaalse vaate avamine ei õnnestunud, proovi lehte värskendada",
"Edit Profile" : "Muuda profiili",
"The headline and about sections will show up here" : "Alapealkirja ja teabe lõigud saavad olema nähtavad siin",
"Profile not found" : "Profiili ei leitud",
diff --git a/apps/provisioning_api/l10n/pt_BR.js b/apps/provisioning_api/l10n/pt_BR.js
index aeb3ca9c1bf..36120c11f72 100644
--- a/apps/provisioning_api/l10n/pt_BR.js
+++ b/apps/provisioning_api/l10n/pt_BR.js
@@ -1,7 +1,7 @@
OC.L10N.register(
"provisioning_api",
{
- "Logged in account must be an administrator or have authorization to edit this setting." : "A conta logada deve ser de administrador ou ter autorização para editar esta configuração.",
+ "Logged in account must be an administrator or have authorization to edit this setting." : "A conta logada deve ser um administrador ou ter autorização para editar esta configuração.",
"Could not create non-existing user ID" : "Não foi possível criar um ID de usuário inexistente",
"User already exists" : "Usuário já existe",
"Group %1$s does not exist" : "O grupo %1$s não existe",
@@ -18,18 +18,18 @@ OC.L10N.register(
"Unlimited quota is forbidden on this instance" : "Cota ilimitada é proibida nesta instância",
"Setting the password is not supported by the users backend" : "A configuração da senha não é suportada pelo back-end dos usuários",
"Invalid language" : "Idioma inválido",
- "Invalid locale" : "Local inválido",
+ "Invalid locale" : "Localidade inválida",
"Invalid first day of week" : "Primeiro dia da semana inválido",
"Cannot remove yourself from the admin group" : "Não é possível remover-se do grupo de administradores",
"Cannot remove yourself from this group as you are a sub-admin" : "Não é possível remover-se deste grupo porque você é um subadministrador",
"Not viable to remove user from the last group you are sub-admin of" : "Não é viável remover o usuário do último grupo do qual você é subadministrador",
"User does not exist" : "Usuário não existe",
- "Group does not exist" : "O grupo não existe",
+ "Group does not exist" : "Grupo não existe",
"User is not a sub-admin of this group" : "O usuário não é um subadministrador deste grupo",
"Email address not available" : "Endereço de e-mail não disponível",
"Sending email failed" : "Falha ao enviar e-mail",
- "Email confirmation" : "Confirmação de e-mail",
- "To enable the email address %s please click the button below." : "Para habilitar o endereço de e-mail %s por favor click no botão abaixo.",
+ "Email confirmation" : "Confirmação do endereço de e-mail",
+ "To enable the email address %s please click the button below." : "Para ativar o endereço de e-mail %s, por favor, clique no botão abaixo.",
"Confirm" : "Confirmar",
"Email was already removed from account and cannot be confirmed anymore." : "O e-mail já foi removido da conta e não pode mais ser confirmado.",
"Could not verify mail because the token is expired." : "Não foi possível verificar o e-mail porque o token expirou.",
diff --git a/apps/provisioning_api/l10n/pt_BR.json b/apps/provisioning_api/l10n/pt_BR.json
index 670ebb3598d..8c0627e6ad1 100644
--- a/apps/provisioning_api/l10n/pt_BR.json
+++ b/apps/provisioning_api/l10n/pt_BR.json
@@ -1,5 +1,5 @@
{ "translations": {
- "Logged in account must be an administrator or have authorization to edit this setting." : "A conta logada deve ser de administrador ou ter autorização para editar esta configuração.",
+ "Logged in account must be an administrator or have authorization to edit this setting." : "A conta logada deve ser um administrador ou ter autorização para editar esta configuração.",
"Could not create non-existing user ID" : "Não foi possível criar um ID de usuário inexistente",
"User already exists" : "Usuário já existe",
"Group %1$s does not exist" : "O grupo %1$s não existe",
@@ -16,18 +16,18 @@
"Unlimited quota is forbidden on this instance" : "Cota ilimitada é proibida nesta instância",
"Setting the password is not supported by the users backend" : "A configuração da senha não é suportada pelo back-end dos usuários",
"Invalid language" : "Idioma inválido",
- "Invalid locale" : "Local inválido",
+ "Invalid locale" : "Localidade inválida",
"Invalid first day of week" : "Primeiro dia da semana inválido",
"Cannot remove yourself from the admin group" : "Não é possível remover-se do grupo de administradores",
"Cannot remove yourself from this group as you are a sub-admin" : "Não é possível remover-se deste grupo porque você é um subadministrador",
"Not viable to remove user from the last group you are sub-admin of" : "Não é viável remover o usuário do último grupo do qual você é subadministrador",
"User does not exist" : "Usuário não existe",
- "Group does not exist" : "O grupo não existe",
+ "Group does not exist" : "Grupo não existe",
"User is not a sub-admin of this group" : "O usuário não é um subadministrador deste grupo",
"Email address not available" : "Endereço de e-mail não disponível",
"Sending email failed" : "Falha ao enviar e-mail",
- "Email confirmation" : "Confirmação de e-mail",
- "To enable the email address %s please click the button below." : "Para habilitar o endereço de e-mail %s por favor click no botão abaixo.",
+ "Email confirmation" : "Confirmação do endereço de e-mail",
+ "To enable the email address %s please click the button below." : "Para ativar o endereço de e-mail %s, por favor, clique no botão abaixo.",
"Confirm" : "Confirmar",
"Email was already removed from account and cannot be confirmed anymore." : "O e-mail já foi removido da conta e não pode mais ser confirmado.",
"Could not verify mail because the token is expired." : "Não foi possível verificar o e-mail porque o token expirou.",
diff --git a/apps/settings/l10n/br.js b/apps/settings/l10n/br.js
index 8f0c72aea36..b3b8db178f5 100644
--- a/apps/settings/l10n/br.js
+++ b/apps/settings/l10n/br.js
@@ -60,7 +60,7 @@ OC.L10N.register(
"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)",
"Invalid mail address" : "Chom-lec'h postel fall",
"Settings saved" : "Stummoù enrollet",
- "Unable to change full name" : "Dibosupl cheñch tout an anv",
+ "Unable to change full name" : "N'haller ket cheñch an anv klok",
"Unable to change email address" : "Dibosuple cheñch ar chom-lec'h postel",
"In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Evit gwiriañ ho c'hont Twitter, kasit an tweet mañ war Twitter (bezit sur kas anezhañ hep teriñ al linenn) :",
"In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Evit wiriañ ho Website, gwarnit an traoù goude en o gwrizienn-web e '.well-known/CloudIdVerificationCode.txt' (bezit sur eo tout an destenn war ul linenn nemetken) :",
@@ -104,7 +104,7 @@ OC.L10N.register(
"The old server-side-encryption format is enabled. We recommend disabling this." : "Stumm ar sifrañ kostez ar servijour kozh a zo aotreet. Aliet eo hen disaotreañ.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "N'eo ket posupl implijout arc’hwel PHP \"set_time_limit\". Galout a ra ar gudenn-se herzel skriptoù e-kreiz o labour, terriñ ar staliadur. Aotreañ an arc'hwel a zo aliet-mat.",
"Supported" : "Douget",
- "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Ho PHP ne zoug ket FreeType, terriñ ar skeudennoù trolinenn ha stummoù an etrefas.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Ho PHP ne zoug ket FreeType, terriñ ar skeudennoù profil ha stummoù an etrefas.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ne seblant ket bezañ staliet mat evit goulenn d'ar sistem argemennoù endro. An amprouenn gant getenv(\"PATH\") a ro ur respont goullo.",
"The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Aotreet a zo bet ar stumm lenn-nemetken. Ampechiñ a ra cheñch stummoù dre an etrefas-web. Ouzhpenn-se, ar restr en deus ezhomm bezañ adlakaet da vezañ embannapl dre dorn evit pep adneveziñ.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ho roadennoù-diaz ne droont ket gant al live \"READ COMMITTED\". Kudennoù a zo posupl kaout pa vez graet meur a ober war an dro.",
@@ -144,10 +144,10 @@ OC.L10N.register(
"No apps found for your version" : "Meziant ebet kavet evit ar stumm",
"_%n app has an update available_::_%n apps have an update available_" : ["%n meziant a zo posuple adnevesiñ","%n meziant a zo posuple adnevesiñ","%n meziant a zo posuple adnevesiñ","%n meziant a zo posuple adnevesiñ","%n meziant a zo posuple adnevesiñ"],
"Loading" : "Kargañ",
- "Type" : "Stumm",
+ "Type" : "Seurt",
"Learn more" : "Deskiñ muioc'h",
"Confirm" : "Kadarnañ",
- "Cancel" : "Arrest",
+ "Cancel" : "Nullañ",
"Description" : "Deskrivadur",
"View in store" : "Gwellet er stall",
"Visit website" : "Mont war al lec'hienn",
@@ -184,6 +184,7 @@ OC.L10N.register(
"Password" : "Ger-tremen",
"Show QR code for mobile apps" : "Diskouez ar c'hod QR evit ar meziant hezouk",
"Use system cron service to call the cron.php file every 5 minutes." : "Implijit sevichoù ar sistem cron evit gervel restr cron.php pep 5 munutenn.",
+ "Profile" : "Profil",
"Server-side encryption" : "Sifradur ar servijour-goztez",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Sifradur kostez-srvijour aotre ar sifrañ restroù a vez pellkarget war ar servijour. Bevennet eo an ober, evel ur mont en dro gorekoc'h, n'a implijit se nemet m'az o peus ezhomm neuze.",
"Enable server-side encryption" : "Aotrea sifradur kostez-servijour",
@@ -201,6 +202,8 @@ OC.L10N.register(
"New password" : "Ger-tremen nevez",
"Change password" : "Cheñch ger-tremen",
"Picture provided by original account" : "Skeudenn roet gant ar c'hont orin",
+ "Unable to update date of birth" : "N'haller ket cheñch an deiziad ganedigezh",
+ "Enter your date of birth" : "Lakaat ho teiziad ganedigezh",
"You are a member of the following groups:" : "Er strolladoù-mañ emaoc'h",
"No email address set" : "Chom-lec'h postel ebet lakaet",
"Help translate" : "Sikour treiñ",
@@ -229,7 +232,7 @@ OC.L10N.register(
"Wipe {userid}'s devices" : "Lemel ardivink {userid}",
"Fully delete {userid}'s account including all their personal files, app data, etc." : "Lemet eo bet penn-da-benn kont {userid} gant pep restr personnel, roadennoù meziant, hag-all-hag-all.",
"Account deletion" : "Lemel ar c'hont",
- "Delete {userid}'s account" : "Lemel kont {userid}",
+ "Delete {userid}'s account" : "Dilemel kont {userid}",
"Welcome mail sent!" : "Postel degemer kaset !",
"Done" : "Graet",
"Edit" : "Cheñch",
@@ -254,12 +257,13 @@ OC.L10N.register(
"Sending…" : "O kas...",
"Email sent" : "Postel kaset",
"Location" : "Lec'hiadur",
- "Profile picture" : "Skeudenn trolinenn",
+ "Profile picture" : "Skeudenn brofil",
"About" : "Diwar-benn",
- "Full name" : "Tout an anv",
- "Phone number" : "Niverenn pellgomzer",
+ "Date of birth" : "Deiziad ganedigezh",
+ "Full name" : "Anv klok",
+ "Phone number" : "Niverenn bellgomz",
"Role" : "Roll",
- "Website" : "Lec'hien web",
+ "Website" : "Lec'hienn web",
"Locale" : "Diabarzh",
"Your apps" : "Ho meziantoù",
"Active apps" : "Meziantoù lakaet en dro",
diff --git a/apps/settings/l10n/br.json b/apps/settings/l10n/br.json
index 6519e64bef9..359c122efa0 100644
--- a/apps/settings/l10n/br.json
+++ b/apps/settings/l10n/br.json
@@ -58,7 +58,7 @@
"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)",
"Invalid mail address" : "Chom-lec'h postel fall",
"Settings saved" : "Stummoù enrollet",
- "Unable to change full name" : "Dibosupl cheñch tout an anv",
+ "Unable to change full name" : "N'haller ket cheñch an anv klok",
"Unable to change email address" : "Dibosuple cheñch ar chom-lec'h postel",
"In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Evit gwiriañ ho c'hont Twitter, kasit an tweet mañ war Twitter (bezit sur kas anezhañ hep teriñ al linenn) :",
"In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Evit wiriañ ho Website, gwarnit an traoù goude en o gwrizienn-web e '.well-known/CloudIdVerificationCode.txt' (bezit sur eo tout an destenn war ul linenn nemetken) :",
@@ -102,7 +102,7 @@
"The old server-side-encryption format is enabled. We recommend disabling this." : "Stumm ar sifrañ kostez ar servijour kozh a zo aotreet. Aliet eo hen disaotreañ.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "N'eo ket posupl implijout arc’hwel PHP \"set_time_limit\". Galout a ra ar gudenn-se herzel skriptoù e-kreiz o labour, terriñ ar staliadur. Aotreañ an arc'hwel a zo aliet-mat.",
"Supported" : "Douget",
- "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Ho PHP ne zoug ket FreeType, terriñ ar skeudennoù trolinenn ha stummoù an etrefas.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Ho PHP ne zoug ket FreeType, terriñ ar skeudennoù profil ha stummoù an etrefas.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ne seblant ket bezañ staliet mat evit goulenn d'ar sistem argemennoù endro. An amprouenn gant getenv(\"PATH\") a ro ur respont goullo.",
"The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Aotreet a zo bet ar stumm lenn-nemetken. Ampechiñ a ra cheñch stummoù dre an etrefas-web. Ouzhpenn-se, ar restr en deus ezhomm bezañ adlakaet da vezañ embannapl dre dorn evit pep adneveziñ.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ho roadennoù-diaz ne droont ket gant al live \"READ COMMITTED\". Kudennoù a zo posupl kaout pa vez graet meur a ober war an dro.",
@@ -142,10 +142,10 @@
"No apps found for your version" : "Meziant ebet kavet evit ar stumm",
"_%n app has an update available_::_%n apps have an update available_" : ["%n meziant a zo posuple adnevesiñ","%n meziant a zo posuple adnevesiñ","%n meziant a zo posuple adnevesiñ","%n meziant a zo posuple adnevesiñ","%n meziant a zo posuple adnevesiñ"],
"Loading" : "Kargañ",
- "Type" : "Stumm",
+ "Type" : "Seurt",
"Learn more" : "Deskiñ muioc'h",
"Confirm" : "Kadarnañ",
- "Cancel" : "Arrest",
+ "Cancel" : "Nullañ",
"Description" : "Deskrivadur",
"View in store" : "Gwellet er stall",
"Visit website" : "Mont war al lec'hienn",
@@ -182,6 +182,7 @@
"Password" : "Ger-tremen",
"Show QR code for mobile apps" : "Diskouez ar c'hod QR evit ar meziant hezouk",
"Use system cron service to call the cron.php file every 5 minutes." : "Implijit sevichoù ar sistem cron evit gervel restr cron.php pep 5 munutenn.",
+ "Profile" : "Profil",
"Server-side encryption" : "Sifradur ar servijour-goztez",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Sifradur kostez-srvijour aotre ar sifrañ restroù a vez pellkarget war ar servijour. Bevennet eo an ober, evel ur mont en dro gorekoc'h, n'a implijit se nemet m'az o peus ezhomm neuze.",
"Enable server-side encryption" : "Aotrea sifradur kostez-servijour",
@@ -199,6 +200,8 @@
"New password" : "Ger-tremen nevez",
"Change password" : "Cheñch ger-tremen",
"Picture provided by original account" : "Skeudenn roet gant ar c'hont orin",
+ "Unable to update date of birth" : "N'haller ket cheñch an deiziad ganedigezh",
+ "Enter your date of birth" : "Lakaat ho teiziad ganedigezh",
"You are a member of the following groups:" : "Er strolladoù-mañ emaoc'h",
"No email address set" : "Chom-lec'h postel ebet lakaet",
"Help translate" : "Sikour treiñ",
@@ -227,7 +230,7 @@
"Wipe {userid}'s devices" : "Lemel ardivink {userid}",
"Fully delete {userid}'s account including all their personal files, app data, etc." : "Lemet eo bet penn-da-benn kont {userid} gant pep restr personnel, roadennoù meziant, hag-all-hag-all.",
"Account deletion" : "Lemel ar c'hont",
- "Delete {userid}'s account" : "Lemel kont {userid}",
+ "Delete {userid}'s account" : "Dilemel kont {userid}",
"Welcome mail sent!" : "Postel degemer kaset !",
"Done" : "Graet",
"Edit" : "Cheñch",
@@ -252,12 +255,13 @@
"Sending…" : "O kas...",
"Email sent" : "Postel kaset",
"Location" : "Lec'hiadur",
- "Profile picture" : "Skeudenn trolinenn",
+ "Profile picture" : "Skeudenn brofil",
"About" : "Diwar-benn",
- "Full name" : "Tout an anv",
- "Phone number" : "Niverenn pellgomzer",
+ "Date of birth" : "Deiziad ganedigezh",
+ "Full name" : "Anv klok",
+ "Phone number" : "Niverenn bellgomz",
"Role" : "Roll",
- "Website" : "Lec'hien web",
+ "Website" : "Lec'hienn web",
"Locale" : "Diabarzh",
"Your apps" : "Ho meziantoù",
"Active apps" : "Meziantoù lakaet en dro",
diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js
index e493b497e05..a9dcb4a54ac 100644
--- a/apps/settings/l10n/et_EE.js
+++ b/apps/settings/l10n/et_EE.js
@@ -235,6 +235,7 @@ OC.L10N.register(
"Create new app password" : "Loo uus rakenduse parool",
"Login" : "Logi sisse",
"Password" : "Parool",
+ "Profile" : "Profiil",
"Unable to update server side encryption config" : "Serveripoolse krüptimise seadistusi ei õnnestu uuendada",
"Server-side encryption" : "Serveripoolne krüptimine",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serveripoole krüpteerimine võimaldab serverisse üleslaetud faile krüpteerida. Sellega kaasnevad piirangud, näiteks jõudluskadu. Lülita see sisse ainult siis, kui vaja on.",
@@ -370,8 +371,10 @@ OC.L10N.register(
"About" : "Info",
"Full name" : "Täielik nimi",
"Fediverse (e.g. Mastodon)" : "Fediverse (nt. Mastodon)",
+ "Headline" : "Alapealkiri",
"Organisation" : "Organisatsioon",
"Phone number" : "Telefoninumber",
+ "Pronouns" : "Asesõna pöördumisel",
"Role" : "Roll",
"X (formerly Twitter)" : "X (varasemalt Twitter)",
"Website" : "Veebileht",
diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json
index 7b728bf1c82..0de592731d8 100644
--- a/apps/settings/l10n/et_EE.json
+++ b/apps/settings/l10n/et_EE.json
@@ -233,6 +233,7 @@
"Create new app password" : "Loo uus rakenduse parool",
"Login" : "Logi sisse",
"Password" : "Parool",
+ "Profile" : "Profiil",
"Unable to update server side encryption config" : "Serveripoolse krüptimise seadistusi ei õnnestu uuendada",
"Server-side encryption" : "Serveripoolne krüptimine",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serveripoole krüpteerimine võimaldab serverisse üleslaetud faile krüpteerida. Sellega kaasnevad piirangud, näiteks jõudluskadu. Lülita see sisse ainult siis, kui vaja on.",
@@ -368,8 +369,10 @@
"About" : "Info",
"Full name" : "Täielik nimi",
"Fediverse (e.g. Mastodon)" : "Fediverse (nt. Mastodon)",
+ "Headline" : "Alapealkiri",
"Organisation" : "Organisatsioon",
"Phone number" : "Telefoninumber",
+ "Pronouns" : "Asesõna pöördumisel",
"Role" : "Roll",
"X (formerly Twitter)" : "X (varasemalt Twitter)",
"Website" : "Veebileht",
diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js
index 74cf85b6999..d0e1d2d277b 100644
--- a/apps/settings/l10n/pt_BR.js
+++ b/apps/settings/l10n/pt_BR.js
@@ -792,7 +792,7 @@ OC.L10N.register(
"Date of birth" : "Data de nascimento",
"Full name" : "Nome completo",
"Additional email" : "E-mail adicional ",
- "Fediverse (e.g. Mastodon)" : "Fediverse (e.x. Mastodon)",
+ "Fediverse (e.g. Mastodon)" : "Fediverso (p. ex. Mastodon)",
"Headline" : "Título",
"Organisation" : "Organização",
"Phone number" : "Número de telefone",
diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json
index 699ad6ba7a1..fc9c85cbf96 100644
--- a/apps/settings/l10n/pt_BR.json
+++ b/apps/settings/l10n/pt_BR.json
@@ -790,7 +790,7 @@
"Date of birth" : "Data de nascimento",
"Full name" : "Nome completo",
"Additional email" : "E-mail adicional ",
- "Fediverse (e.g. Mastodon)" : "Fediverse (e.x. Mastodon)",
+ "Fediverse (e.g. Mastodon)" : "Fediverso (p. ex. Mastodon)",
"Headline" : "Título",
"Organisation" : "Organização",
"Phone number" : "Número de telefone",
diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js
index 15c54db281c..ab03d1ba275 100644
--- a/apps/settings/l10n/uk.js
+++ b/apps/settings/l10n/uk.js
@@ -1,13 +1,13 @@
OC.L10N.register(
"settings",
{
- "Private" : "Закритий",
+ "Private" : "Приватно",
"Only visible to people matched via phone number integration through Talk on mobile" : "Видно лише користувачам згідно з їхніми телефонними номерами пристроїв, на яких встановлено застосунок Talk",
"Local" : "Локально",
"Only visible to people on this instance and guests" : "Видно лише користувачам цієї хмари та гостям",
"Federated" : "Для об'єднаних хмар",
"Only synchronize to trusted servers" : "Синхронізовувати лише з серверами, яким довіряємо",
- "Published" : "Опубліковано",
+ "Published" : "Публічно",
"Synchronize to trusted servers and the global and public address book" : "Синхронізація з надійними серверами та глобальною та загальнодоступною адресною книгою",
"Verify" : "Перевірити",
"Verifying …" : "Перевірка ...",
@@ -49,7 +49,7 @@ OC.L10N.register(
"A login attempt using two-factor authentication failed (%1$s)" : "Помилка під час здійснення входу з використанням двофакторної авторизації (%1$s)",
"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> було змінено",
+ "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваш <strong>пароль</strong> чи <strong>адресу ел. пошти</strong> було змінено",
"Settings" : "Налаштування",
"Could not remove app." : "Не вдалося вилучити застосунок.",
"Could not update app." : "Не вдалося оновити застосунок.",
@@ -122,9 +122,9 @@ OC.L10N.register(
"Mobile & desktop" : "Застосунки для пристроїв",
"Email server" : "Сервер електронної пошти",
"Mail Providers" : "Постачальники послуг ел.пошти",
- "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Поштовий провайдер дозволяє надсилати електронні листи безпосередньо через особисту електронну скриньку користувача. Наразі ця функція обмежена запрошеннями за календарем. Для цього потрібна Nextcloud Mail 4.1 та обліковий запис електронної пошти в Nextcloud Mail, який відповідає адресі електронної пошти користувача в Nextcloud.",
+ "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Поштовий провайдер дозволяє надсилати електронні листи безпосередньо через особисту електронну скриньку користувача. Наразі ця функція обмежена запрошеннями календаря. Для цього потрібно мати встановлений застосунок Nextcloud Пошта версії 4.1 та налаштований у Nextcloud Mail обліковий запис електронної пошти, який зазначено у адресі ел.пошти користувача хмари Nextcloud.",
"Send emails using" : "Надсилайте електронні листи, використовуючи",
- "User's email account" : "Обліковий запис електронної пошти користувача",
+ "User's email account" : "Електронна пошта користувача",
"System email account" : "Системний обліковий запис ел.пошти",
"Security & setup checks" : "Безпека та перевірка налаштувань",
"Background jobs" : "Фонові завдання",
@@ -267,15 +267,18 @@ OC.L10N.register(
"Profile information" : "Інформація профілю",
"Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Зображення профілю, повне ім’я, електронна адреса, номер телефону, адреса, веб-сайт, Twitter, організація, роль, заголовок, біографія та чи активовано ваш профіль",
"Nextcloud settings" : "Налаштування Nextcloud",
+ "Unified task processing" : "Централізована обробка завдань ",
"Task:" : "Завдання:",
"Enable" : "Увімкнути",
+ "None of your currently installed apps provide Task processing functionality" : "Жодний зі встановлених застосунків не надає функціональність з обробки завдань",
"Machine translation" : "Машинний переклад",
"Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "Машинний переклад може здійснюватися за допомогою декількох застосунків. Тут можна визначити послідовність використання встановлених застосунків машинного перекладу.",
"Image generation" : "Створення зображень",
"Image generation can be implemented by different apps. Here you can set which app should be used." : "Функціонал створення зображень присутня у кількох різних застосунків. Виберіть, який з них потрібно використовувати.",
- "None of your currently installed apps provide image generation functionality" : "Жодний зі встановлених застосунків не надає функціональність створення зображень.",
+ "None of your currently installed apps provide image generation functionality" : "Жодний зі встановлених застосунків не надає функціональність зі створення зображень",
"Text processing" : "Обробка тексту",
"Text processing tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Обробка тексту може здійснюватися за допомогою декількох застосунків. Тут ви можете визначити, який саме застосунок потрібно використати для певного завдання.",
+ "None of your currently installed apps provide text processing functionality using the Text Processing API." : "Жодний зі встановлених застосунків не надає функціональність API з обробки тексту",
"Here you can decide which group can access certain sections of the administration settings." : "Тут ви можете вирішити, яка група матиме доступ до певних розділів налаштувань адміністрування.",
"Unable to modify setting" : "Неможливо змінити налаштування",
"None" : "Відсутній",
@@ -285,9 +288,9 @@ OC.L10N.register(
"Allow apps to use the Share API" : "Дозволити застосункам використовувати API спільного доступу",
"Allow resharing" : "Дозволити передавати у спільний доступ іншим",
"Allow sharing with groups" : "Дозволити спільне використання групами",
- "Restrict users to only share with users in their groups" : "Дозволити користувачам відкривати спільний доступ лише для користувачів з їхньої групи",
+ "Restrict users to only share with users in their groups" : "Дозволити користувачам надання у спільний доступ лише користувачам груп, до яких вони входять",
"Ignore the following groups when checking group membership" : "Ігнорувати такі групи під час перевірки участи в групі",
- "Allow users to share via link and emails" : "Дозволити користувачам ділитися за допомогою посилань і електронних листів",
+ "Allow users to share via link and emails" : "Дозволити користувачам надання у спільний доступ за допомогою посилань та ел. листів",
"Allow public uploads" : "Дозволити публічне завантаження",
"Always ask for a password" : "Завжди запитувати пароль",
"Enforce password protection" : "Захист паролем обов'язковий",
@@ -488,15 +491,15 @@ OC.L10N.register(
"Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Зауважте, що повсюдне оновлення зображення профілю може зайняти до 24 годин.",
"Unable to update date of birth" : "Не вдалося оновити дату народження",
"Enter your date of birth" : "Зазначте дату вашого народження",
- "You are a member of the following groups:" : "Ви є учасником таких груп:",
+ "You are a member of the following groups:" : "Ви є учасником груп:",
"Your full name" : "Ваше повне ім'я",
"Email options" : "Параметри електронної пошти",
"Options for additional email address {index}" : "Параметри додаткової ел.адреси {index}",
"Remove primary email" : "Вилучити основну електронну адресу",
- "Delete email" : "Вилучити електронну адресу",
- "This address is not confirmed" : "Ця адреса не підтверджена",
+ "Delete email" : "Вилучити",
+ "This address is not confirmed" : "Це непідтверджена адреса",
"Unset as primary email" : "Скасувати як основну електронну адресу",
- "Set as primary email" : "Установити як основну електронну адресу",
+ "Set as primary email" : "Зробити основною ел. адресою",
"Additional email address {index}" : "Додаткова електронна адреса {index}",
"Unable to delete primary email address" : "Не вдалося вилучити основну електронну адресу",
"Unable to update primary email address" : "Не вдалося оновити основну електронну адресу",
@@ -506,18 +509,18 @@ OC.L10N.register(
"Primary email for password reset and notifications" : "Основна адреса ел.пошти для надсилання пароля та сповіщень",
"No email address set" : "E-mail не вказано",
"Your handle" : "Ви керуєте",
- "Derived from your locale ({weekDayName})" : "{weekDayName} (на основі локалі)",
+ "Derived from your locale ({weekDayName})" : "{weekDayName} (визначено автоматично)",
"Unable to update first day of week" : "Не вдалося оновити значення першого дня тижня",
"Day to use as the first day of week" : "Тиждень починається з",
"Your headline" : "Ваш заголовок",
"Unable to update language" : "Не вдалося оновити мову",
"Languages" : "Мови",
"Help translate" : "Допомогти з перекладом",
- "No language set" : "Локаль не встановлено",
+ "No language set" : "Мову не визначено",
"Unable to update locale" : "Не вдалося оновити мову",
"Locales" : "Регіональні налаштування",
"Week starts on {firstDayOfWeek}" : "Тиждень починається у {firstDayOfWeek}",
- "No locale set" : "Мову не визначено",
+ "No locale set" : "Локаль не встановлено",
"Your city" : "Ваше місто",
"Your organisation" : "Ваша організація",
"Your phone number" : "Ваш номер телефону",
@@ -543,7 +546,7 @@ OC.L10N.register(
"Create" : "Створити",
"Change" : "Змінити",
"Delete" : "Вилучити",
- "Reshare" : "Передати у спільний доступ",
+ "Reshare" : "Надати у спільний доступ",
"Default language" : "Типова мова",
"Common languages" : "Основні мови",
"Other languages" : "Інші мови",
@@ -667,8 +670,8 @@ OC.L10N.register(
"Locale" : "Локаль",
"First day of week" : "Тиждень починається",
"Not available as this property is required for core functionality including file sharing and calendar invitations" : "Недоступно, оскільки ця властивість необхідна для основних функцій, включно спільний доступ до файлів та запрошення в календарі",
- "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "Недоступно, оскільки об'єднання хмар вимкнено для вашого облікового запису. Будь ласка, сконтактуйте з вашим адміністратором",
- "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "Недоступно, оскільки публікацію даних користувача на пошуковому сервері заборонена. Зверніться до системного адміністратора, якщо у вас виникнуть запитання",
+ "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "Недоступно, оскільки об'єднання хмар вимкнено для вашого облікового запису",
+ "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "Недоступно, оскільки публікацію даних користувача на пошуковому сервері заборонено",
"Discover" : "Знайти",
"Your apps" : "Ваші застосунки",
"Active apps" : "Активні застосунки",
diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json
index 51e0459b910..5e79a766949 100644
--- a/apps/settings/l10n/uk.json
+++ b/apps/settings/l10n/uk.json
@@ -1,11 +1,11 @@
{ "translations": {
- "Private" : "Закритий",
+ "Private" : "Приватно",
"Only visible to people matched via phone number integration through Talk on mobile" : "Видно лише користувачам згідно з їхніми телефонними номерами пристроїв, на яких встановлено застосунок Talk",
"Local" : "Локально",
"Only visible to people on this instance and guests" : "Видно лише користувачам цієї хмари та гостям",
"Federated" : "Для об'єднаних хмар",
"Only synchronize to trusted servers" : "Синхронізовувати лише з серверами, яким довіряємо",
- "Published" : "Опубліковано",
+ "Published" : "Публічно",
"Synchronize to trusted servers and the global and public address book" : "Синхронізація з надійними серверами та глобальною та загальнодоступною адресною книгою",
"Verify" : "Перевірити",
"Verifying …" : "Перевірка ...",
@@ -47,7 +47,7 @@
"A login attempt using two-factor authentication failed (%1$s)" : "Помилка під час здійснення входу з використанням двофакторної авторизації (%1$s)",
"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> було змінено",
+ "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваш <strong>пароль</strong> чи <strong>адресу ел. пошти</strong> було змінено",
"Settings" : "Налаштування",
"Could not remove app." : "Не вдалося вилучити застосунок.",
"Could not update app." : "Не вдалося оновити застосунок.",
@@ -120,9 +120,9 @@
"Mobile & desktop" : "Застосунки для пристроїв",
"Email server" : "Сервер електронної пошти",
"Mail Providers" : "Постачальники послуг ел.пошти",
- "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Поштовий провайдер дозволяє надсилати електронні листи безпосередньо через особисту електронну скриньку користувача. Наразі ця функція обмежена запрошеннями за календарем. Для цього потрібна Nextcloud Mail 4.1 та обліковий запис електронної пошти в Nextcloud Mail, який відповідає адресі електронної пошти користувача в Nextcloud.",
+ "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Поштовий провайдер дозволяє надсилати електронні листи безпосередньо через особисту електронну скриньку користувача. Наразі ця функція обмежена запрошеннями календаря. Для цього потрібно мати встановлений застосунок Nextcloud Пошта версії 4.1 та налаштований у Nextcloud Mail обліковий запис електронної пошти, який зазначено у адресі ел.пошти користувача хмари Nextcloud.",
"Send emails using" : "Надсилайте електронні листи, використовуючи",
- "User's email account" : "Обліковий запис електронної пошти користувача",
+ "User's email account" : "Електронна пошта користувача",
"System email account" : "Системний обліковий запис ел.пошти",
"Security & setup checks" : "Безпека та перевірка налаштувань",
"Background jobs" : "Фонові завдання",
@@ -265,15 +265,18 @@
"Profile information" : "Інформація профілю",
"Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Зображення профілю, повне ім’я, електронна адреса, номер телефону, адреса, веб-сайт, Twitter, організація, роль, заголовок, біографія та чи активовано ваш профіль",
"Nextcloud settings" : "Налаштування Nextcloud",
+ "Unified task processing" : "Централізована обробка завдань ",
"Task:" : "Завдання:",
"Enable" : "Увімкнути",
+ "None of your currently installed apps provide Task processing functionality" : "Жодний зі встановлених застосунків не надає функціональність з обробки завдань",
"Machine translation" : "Машинний переклад",
"Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "Машинний переклад може здійснюватися за допомогою декількох застосунків. Тут можна визначити послідовність використання встановлених застосунків машинного перекладу.",
"Image generation" : "Створення зображень",
"Image generation can be implemented by different apps. Here you can set which app should be used." : "Функціонал створення зображень присутня у кількох різних застосунків. Виберіть, який з них потрібно використовувати.",
- "None of your currently installed apps provide image generation functionality" : "Жодний зі встановлених застосунків не надає функціональність створення зображень.",
+ "None of your currently installed apps provide image generation functionality" : "Жодний зі встановлених застосунків не надає функціональність зі створення зображень",
"Text processing" : "Обробка тексту",
"Text processing tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Обробка тексту може здійснюватися за допомогою декількох застосунків. Тут ви можете визначити, який саме застосунок потрібно використати для певного завдання.",
+ "None of your currently installed apps provide text processing functionality using the Text Processing API." : "Жодний зі встановлених застосунків не надає функціональність API з обробки тексту",
"Here you can decide which group can access certain sections of the administration settings." : "Тут ви можете вирішити, яка група матиме доступ до певних розділів налаштувань адміністрування.",
"Unable to modify setting" : "Неможливо змінити налаштування",
"None" : "Відсутній",
@@ -283,9 +286,9 @@
"Allow apps to use the Share API" : "Дозволити застосункам використовувати API спільного доступу",
"Allow resharing" : "Дозволити передавати у спільний доступ іншим",
"Allow sharing with groups" : "Дозволити спільне використання групами",
- "Restrict users to only share with users in their groups" : "Дозволити користувачам відкривати спільний доступ лише для користувачів з їхньої групи",
+ "Restrict users to only share with users in their groups" : "Дозволити користувачам надання у спільний доступ лише користувачам груп, до яких вони входять",
"Ignore the following groups when checking group membership" : "Ігнорувати такі групи під час перевірки участи в групі",
- "Allow users to share via link and emails" : "Дозволити користувачам ділитися за допомогою посилань і електронних листів",
+ "Allow users to share via link and emails" : "Дозволити користувачам надання у спільний доступ за допомогою посилань та ел. листів",
"Allow public uploads" : "Дозволити публічне завантаження",
"Always ask for a password" : "Завжди запитувати пароль",
"Enforce password protection" : "Захист паролем обов'язковий",
@@ -486,15 +489,15 @@
"Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Зауважте, що повсюдне оновлення зображення профілю може зайняти до 24 годин.",
"Unable to update date of birth" : "Не вдалося оновити дату народження",
"Enter your date of birth" : "Зазначте дату вашого народження",
- "You are a member of the following groups:" : "Ви є учасником таких груп:",
+ "You are a member of the following groups:" : "Ви є учасником груп:",
"Your full name" : "Ваше повне ім'я",
"Email options" : "Параметри електронної пошти",
"Options for additional email address {index}" : "Параметри додаткової ел.адреси {index}",
"Remove primary email" : "Вилучити основну електронну адресу",
- "Delete email" : "Вилучити електронну адресу",
- "This address is not confirmed" : "Ця адреса не підтверджена",
+ "Delete email" : "Вилучити",
+ "This address is not confirmed" : "Це непідтверджена адреса",
"Unset as primary email" : "Скасувати як основну електронну адресу",
- "Set as primary email" : "Установити як основну електронну адресу",
+ "Set as primary email" : "Зробити основною ел. адресою",
"Additional email address {index}" : "Додаткова електронна адреса {index}",
"Unable to delete primary email address" : "Не вдалося вилучити основну електронну адресу",
"Unable to update primary email address" : "Не вдалося оновити основну електронну адресу",
@@ -504,18 +507,18 @@
"Primary email for password reset and notifications" : "Основна адреса ел.пошти для надсилання пароля та сповіщень",
"No email address set" : "E-mail не вказано",
"Your handle" : "Ви керуєте",
- "Derived from your locale ({weekDayName})" : "{weekDayName} (на основі локалі)",
+ "Derived from your locale ({weekDayName})" : "{weekDayName} (визначено автоматично)",
"Unable to update first day of week" : "Не вдалося оновити значення першого дня тижня",
"Day to use as the first day of week" : "Тиждень починається з",
"Your headline" : "Ваш заголовок",
"Unable to update language" : "Не вдалося оновити мову",
"Languages" : "Мови",
"Help translate" : "Допомогти з перекладом",
- "No language set" : "Локаль не встановлено",
+ "No language set" : "Мову не визначено",
"Unable to update locale" : "Не вдалося оновити мову",
"Locales" : "Регіональні налаштування",
"Week starts on {firstDayOfWeek}" : "Тиждень починається у {firstDayOfWeek}",
- "No locale set" : "Мову не визначено",
+ "No locale set" : "Локаль не встановлено",
"Your city" : "Ваше місто",
"Your organisation" : "Ваша організація",
"Your phone number" : "Ваш номер телефону",
@@ -541,7 +544,7 @@
"Create" : "Створити",
"Change" : "Змінити",
"Delete" : "Вилучити",
- "Reshare" : "Передати у спільний доступ",
+ "Reshare" : "Надати у спільний доступ",
"Default language" : "Типова мова",
"Common languages" : "Основні мови",
"Other languages" : "Інші мови",
@@ -665,8 +668,8 @@
"Locale" : "Локаль",
"First day of week" : "Тиждень починається",
"Not available as this property is required for core functionality including file sharing and calendar invitations" : "Недоступно, оскільки ця властивість необхідна для основних функцій, включно спільний доступ до файлів та запрошення в календарі",
- "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "Недоступно, оскільки об'єднання хмар вимкнено для вашого облікового запису. Будь ласка, сконтактуйте з вашим адміністратором",
- "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "Недоступно, оскільки публікацію даних користувача на пошуковому сервері заборонена. Зверніться до системного адміністратора, якщо у вас виникнуть запитання",
+ "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "Недоступно, оскільки об'єднання хмар вимкнено для вашого облікового запису",
+ "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "Недоступно, оскільки публікацію даних користувача на пошуковому сервері заборонено",
"Discover" : "Знайти",
"Your apps" : "Ваші застосунки",
"Active apps" : "Активні застосунки",
diff --git a/apps/settings/templates/help.php b/apps/settings/templates/help.php
index 14883996791..17356e6ccdf 100644
--- a/apps/settings/templates/help.php
+++ b/apps/settings/templates/help.php
@@ -3,7 +3,7 @@
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-\OC_Util::addStyle('settings', 'help');
+\OCP\Util::addStyle('settings', 'help');
?>
<?php if ($_['knowledgebaseEmbedded'] === true) : ?>
<div id="app-navigation" role="navigation" tabindex="0">
diff --git a/apps/theming/l10n/et_EE.js b/apps/theming/l10n/et_EE.js
index 4ccbb849af9..38c324611e9 100644
--- a/apps/theming/l10n/et_EE.js
+++ b/apps/theming/l10n/et_EE.js
@@ -74,13 +74,21 @@ OC.L10N.register(
"Upload new background and login image" : "Laadi üles uus taustapilt ja sisselogimise pilt",
"Background and login image" : "Taustapilt ja sisselogimise pilt",
"Advanced options" : "Täpsemad valikud",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Paigalda PHP Imagemagicku lsiamoodul SVG piltide toega, et üleslaaditud logo ja värvi põhjal luua automaatselt favikone. ",
+ "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Universaalne juurdepääs on meie jaoks väga oluline. Me järgime veebistandardeid ja kontrollime, et kõik oleks kasutatav ka ilma hiireta ja abitarkvara, näiteks ekraani lugejateta. Meie eesmärk on olla vastavuses {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 AA-tasemega, suure kontrastsusega teema puhul isegi AAA-tasemega. ",
+ "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Kui leiad mingeid probleeme, siis teata neist {issuetracker}meie veahalduse süsteemis{linkend}. Ja kui soovid kaasa lüüa, siis tule liitu {designteam}meie disainimeeskonnaga{linkend}!",
"Unable to apply the setting." : "Seadistuse rakendamine ei õnnestu.",
"Appearance and accessibility settings" : "Välimuse ja hõlpsuse seadistused",
"Misc accessibility options" : "Varia hõlpsuse seadistused",
"Enable blur background filter (may increase GPU load)" : "Kasuta tausta hägustamise filtrit (suurendab graafikaprotsessori koormust)",
"Customization has been disabled by your administrator" : "Kujunduse kohendamine pole peakasutaja poolt lubatud",
+ "Set a primary color to highlight important elements. The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements." : "Määra oluliste kujunduselementide põhivärv. Sama värv kuulub mõnedes rollides, sealhulgas põhinuppudel, kohendamisele vastavalt hõlbustuse nõuetele.",
"Background and color" : "Taust ja värvid",
+ "The background can be set to an image from the default set, a custom uploaded image, or a plain color." : "Taustavärvi võid valida mõnest vaikimisi pildikomplekti pildist, oma üleslaaditud pildist või lihtsalt värvinumbri alusel.",
"Keyboard shortcuts" : "Klaviatuuri kiirklahvid",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Mõnel juhul klaviatuuri kiirklahvid võivad takistada hõlbustustarvikute tööd. Sellisel puhul saad nad siit välja lülitada. Samaga lülituvad kiirklahvid välja ka kõikides rakendustes.",
+ "Disable all keyboard shortcuts" : "Lülita kõik klaviatuuri kiirklahvid välja",
+ "Current selected app: {app}, position {position} of {total}" : "Hetkel valitud rakendus: {app}, asukoht {position} / {total}",
"Move up" : "Liiguta ülespoole",
"Move down" : "Liiguta allapoole",
"Select a background from your files" : "Vali taustapilt oma failide seast",
diff --git a/apps/theming/l10n/et_EE.json b/apps/theming/l10n/et_EE.json
index 5f80c008851..3fb8b3eb22b 100644
--- a/apps/theming/l10n/et_EE.json
+++ b/apps/theming/l10n/et_EE.json
@@ -72,13 +72,21 @@
"Upload new background and login image" : "Laadi üles uus taustapilt ja sisselogimise pilt",
"Background and login image" : "Taustapilt ja sisselogimise pilt",
"Advanced options" : "Täpsemad valikud",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Paigalda PHP Imagemagicku lsiamoodul SVG piltide toega, et üleslaaditud logo ja värvi põhjal luua automaatselt favikone. ",
+ "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Universaalne juurdepääs on meie jaoks väga oluline. Me järgime veebistandardeid ja kontrollime, et kõik oleks kasutatav ka ilma hiireta ja abitarkvara, näiteks ekraani lugejateta. Meie eesmärk on olla vastavuses {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 AA-tasemega, suure kontrastsusega teema puhul isegi AAA-tasemega. ",
+ "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Kui leiad mingeid probleeme, siis teata neist {issuetracker}meie veahalduse süsteemis{linkend}. Ja kui soovid kaasa lüüa, siis tule liitu {designteam}meie disainimeeskonnaga{linkend}!",
"Unable to apply the setting." : "Seadistuse rakendamine ei õnnestu.",
"Appearance and accessibility settings" : "Välimuse ja hõlpsuse seadistused",
"Misc accessibility options" : "Varia hõlpsuse seadistused",
"Enable blur background filter (may increase GPU load)" : "Kasuta tausta hägustamise filtrit (suurendab graafikaprotsessori koormust)",
"Customization has been disabled by your administrator" : "Kujunduse kohendamine pole peakasutaja poolt lubatud",
+ "Set a primary color to highlight important elements. The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements." : "Määra oluliste kujunduselementide põhivärv. Sama värv kuulub mõnedes rollides, sealhulgas põhinuppudel, kohendamisele vastavalt hõlbustuse nõuetele.",
"Background and color" : "Taust ja värvid",
+ "The background can be set to an image from the default set, a custom uploaded image, or a plain color." : "Taustavärvi võid valida mõnest vaikimisi pildikomplekti pildist, oma üleslaaditud pildist või lihtsalt värvinumbri alusel.",
"Keyboard shortcuts" : "Klaviatuuri kiirklahvid",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Mõnel juhul klaviatuuri kiirklahvid võivad takistada hõlbustustarvikute tööd. Sellisel puhul saad nad siit välja lülitada. Samaga lülituvad kiirklahvid välja ka kõikides rakendustes.",
+ "Disable all keyboard shortcuts" : "Lülita kõik klaviatuuri kiirklahvid välja",
+ "Current selected app: {app}, position {position} of {total}" : "Hetkel valitud rakendus: {app}, asukoht {position} / {total}",
"Move up" : "Liiguta ülespoole",
"Move down" : "Liiguta allapoole",
"Select a background from your files" : "Vali taustapilt oma failide seast",
diff --git a/apps/theming/l10n/pt_BR.js b/apps/theming/l10n/pt_BR.js
index 2985cead71b..b938e562585 100644
--- a/apps/theming/l10n/pt_BR.js
+++ b/apps/theming/l10n/pt_BR.js
@@ -10,10 +10,10 @@ OC.L10N.register(
"The given privacy policy address is not a valid URL" : "O endereço da política de privacidade não é uma URL válida",
"The given slogan is too long" : "O slogan dado é muito longo",
"The given color is invalid" : "A cor fornecida é inválida",
- "Disable-user-theming should be true or false" : "Desabilitar-tema-usuário deve ser verdadeiro ou falso",
+ "Disable-user-theming should be true or false" : "A configuração \"disable-user-theming\" (desabilitar temas do usuário) deve ser \"true\" ou \"false\"",
"Saved" : "Salva",
"Invalid app given" : "Aplicativo inválido fornecido",
- "Invalid type for setting \"defaultApp\" given" : "Tipo inválido para configuração de \"defaultApp\" fornecido",
+ "Invalid type for setting \"defaultApp\" given" : "Tipo inválido para configuração \"defaultApp\" fornecido",
"Invalid setting key" : "Chave de configuração inválida",
"The file was uploaded" : "O arquivo foi enviado",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "O arquivo enviado excede a diretiva upload_max_filesize do php.ini",
@@ -27,27 +27,27 @@ OC.L10N.register(
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Você já está usando um tema personalizado. As configurações do aplicativo Theming podem ser sobrescritas por isso.",
"Theming" : "Personalização",
"Appearance and accessibility" : "Aparência e acessibilidade",
- "PHP Imagick module" : "Módulo PHP Imageck",
+ "PHP Imagick module" : "Módulo PHP Imagick",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "O módulo PHP \"imagick\" não está habilitado, embora o aplicativo de temas esteja. Para que a geração de favicon funcione corretamente, você precisa instalar e habilitar este módulo.",
"The PHP module \"imagick\" in this instance has no SVG support. For better compatibility it is recommended to install it." : "O módulo PHP \"imagick\" neste caso não tem suporte a SVG. Para melhor compatibilidade é recomendado instalá-lo.",
"Dark theme with high contrast mode" : "Tema escuro com modo de alto contraste",
"Enable dark high contrast mode" : "Ative o modo escuro de alto contraste",
"Similar to the high contrast mode, but with dark colours." : "Semelhante ao modo de alto contraste, mas com cores escuras.",
"Dark theme" : "Tema escuro",
- "Enable dark theme" : "Enable dark theme",
+ "Enable dark theme" : "Ativar o tema escuro",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Um tema escuro para aliviar seus olhos, reduzindo a luminosidade e o brilho gerais.",
"System default theme" : "Tema padrão do sistema",
"Enable the system default" : "Ativar o padrão do sistema",
"Using the default system appearance." : "Usando a aparência padrão do sistema.",
- "Dyslexia font" : "Fonte de dislexia",
- "Enable dyslexia font" : "Ativar fonte dislexia",
+ "Dyslexia font" : "Fonte para dislexia",
+ "Enable dyslexia font" : "Ativar fonte para dislexia",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic é um tipo de letra/fonte grátis concebida para atenuar alguns dos erros comuns de leitura causados pela dislexia.",
"High contrast mode" : "Modo de alto contraste",
"Enable high contrast mode" : "Ativar modo de alto contraste",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "O modo de alto contraste facilita a navegação. A qualidade visual será reduzida, mas a clareza será aumentada.",
"Light theme" : "Tema claro",
- "Enable the default light theme" : "Ative o tema de luz padrão",
- "The default light appearance." : "A aparência de luz padrão.",
+ "Enable the default light theme" : "Ativar o tema claro padrão",
+ "The default light appearance." : "A aparência clara padrão.",
"Legal notice" : "Aviso legal",
"Privacy policy" : "Política de privacidade",
"Adjust the Nextcloud theme" : "Ajustar o tema do Nextcloud",
@@ -56,7 +56,7 @@ OC.L10N.register(
"a safe home for all your data" : "um lugar seguro para seus dados",
"Slogan" : "Slogan",
"Primary color" : "Cor primária",
- "The primary color is used for highlighting elements like important buttons. It might get slightly adjusted depending on the current color schema." : "A cor primária é usada para destacar elementos como botões importantes. Pode ser ligeiramente ajustado dependendo do esquema de cores atual.",
+ "The primary color is used for highlighting elements like important buttons. It might get slightly adjusted depending on the current color schema." : "A cor primária é usada para destacar elementos como botões importantes. Ela pode ser ligeiramente ajustado, dependendo do esquema de cores atual.",
"Legal notice link" : "Link do aviso legal",
"Privacy policy link" : "Link da política de privacidade",
"Header logo" : "Logotipo de cabeçalho",
@@ -67,26 +67,26 @@ OC.L10N.register(
"Disable user theming" : "Desabilitar temas do usuário",
"Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Embora você possa selecionar e personalizar a sua instância, os usuários podem alterar seu plano de fundo e as cores. Se você quiser forçar a sua personalização, marque esta caixa.",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Criar e alterar temas torna possível personalizar facilmente o Nextcloud e clientes suportados. Isso será visível para todos os usuários.",
- "Instead of a background image you can also configure a plain background color. If you use a background image changing this color will influence the color of the app menu icons." : "Em vez de uma imagem de fundo você também pode configurar uma cor de fundo simples. Se você usar uma imagem de fundo, a alteração dessa cor influenciará a cor dos ícones do menu do aplicativo.",
+ "Instead of a background image you can also configure a plain background color. If you use a background image changing this color will influence the color of the app menu icons." : "Em vez de uma imagem de fundo você também pode configurar uma cor de fundo lisa. Se você usar uma imagem de fundo, a alteração dessa cor influenciará a cor dos ícones do menu do aplicativo.",
"Background color" : "Cor de fundo",
"Upload new logo" : "Enviar novo logotipo",
"Logo" : "Logotipo",
"Upload new background and login image" : "Envie um novo papel de parede e imagem de login",
"Background and login image" : "Plano de fundo e imagem de login",
"Advanced options" : "Opções avançadas",
- "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instale a extensão PHP ImageMagick para ter suporte a geração automática em SVG para favicons baseados no logotipo e cores enviados.",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instale a extensão PHP ImageMagick com suporte para imagens SVG para gerar automaticamente favicons com base no logotipo carregado e na cor.",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "O acesso universal é muito importante para nós. Seguimos os padrões da Web e verificamos se tudo pode ser usado também sem mouse e software de assistência, como leitores de tela. Nosso objetivo é estar em conformidade com as {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 no nível AA, com o tema de alto contraste até mesmo no nível AAA.",
"If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Se você encontrar algum problema, não hesite em denunciá-lo em {issuetracker}nosso rastreador de problemas{linkend}. E se você quiser se envolver, junte-se a {designteam}nossa equipe de design{linkend}!",
"Unable to apply the setting." : "Não foi possível aplicar a configuração.",
"Appearance and accessibility settings" : "Configurações de aparência e acessibilidade",
- "Misc accessibility options" : "Várias opções de acessibilidade",
+ "Misc accessibility options" : "Opções de acessibilidade diversas",
"Enable blur background filter (may increase GPU load)" : "Ativar o filtro de fundo de desfoque (pode aumentar a carga da GPU)",
- "Customization has been disabled by your administrator" : "A personalização foi desativada pelo seu administrador",
- "Set a primary color to highlight important elements. The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements." : "Defina uma cor primária para destacar elementos importantes. A cor usada para elementos como botões primários pode diferir um pouco à medida que é ajustada para atender aos requisitos de acessibilidade.",
- "Background and color" : "Fundo e cor",
- "The background can be set to an image from the default set, a custom uploaded image, or a plain color." : "O plano de fundo pode ser definido como uma imagem do conjunto padrão, uma imagem personalizada carregada ou uma cor simples.",
+ "Customization has been disabled by your administrator" : "A personalização foi desativada por seu administrador",
+ "Set a primary color to highlight important elements. The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements." : "Defina uma cor primária para destacar elementos importantes. A cor usada para elementos como botões primários pode ser um pouco diferente, pois é ajustada para atender aos requisitos de acessibilidade.",
+ "Background and color" : "Plano de fundo e cor",
+ "The background can be set to an image from the default set, a custom uploaded image, or a plain color." : "O plano de fundo pode ser definido como uma imagem do conjunto padrão, uma imagem personalizada carregada ou uma cor lisa.",
"Keyboard shortcuts" : "Atalhos do teclado",
- "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Em alguns casos, os atalhos de teclado podem interferir nas ferramentas de acessibilidade. Para permitir o foco em sua ferramenta corretamente, você pode desativar todos os atalhos de teclado aqui. Isso também desativará todos os atalhos disponíveis nos aplicativos.",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Em alguns casos, os atalhos de teclado podem interferir nas ferramentas de acessibilidade. Para permitir o foco em sua ferramenta corretamente, você pode desabilitar todos os atalhos de teclado aqui. Isso também desabilitará todos os atalhos disponíveis nos aplicativos.",
"Disable all keyboard shortcuts" : "Desabilitar todos os atalhos de teclado",
"Current selected app: {app}, position {position} of {total}" : "Aplicativo atualmente selecionado: {app}, posição {position} de {total}",
"Move up" : "Mover para cima",
@@ -94,9 +94,9 @@ OC.L10N.register(
"Select a background from your files" : "Selecione o papel de parede de seus arquivos",
"Select background" : "Selecione o plano de fundo",
"No background has been selected" : "Nenhum plano de fundo foi selecionado",
- "Custom background" : "Papel de parede personalizado",
- "Plain background" : "Fundo simples",
- "Default background" : "Papel de parede padrão",
+ "Custom background" : "Plano de fundo personalizado",
+ "Plain background" : "Plano de fundo liso",
+ "Default background" : "Plano de fundo padrão",
"Theme selection is enforced" : "A seleção do tema é aplicada",
"Could not set the app order" : "Não foi possível definir a ordem do aplicativo",
"Could not reset the app order" : "Não foi possível redefinir a ordem do aplicativo",
diff --git a/apps/theming/l10n/pt_BR.json b/apps/theming/l10n/pt_BR.json
index c931b5e7922..49051cc39e1 100644
--- a/apps/theming/l10n/pt_BR.json
+++ b/apps/theming/l10n/pt_BR.json
@@ -8,10 +8,10 @@
"The given privacy policy address is not a valid URL" : "O endereço da política de privacidade não é uma URL válida",
"The given slogan is too long" : "O slogan dado é muito longo",
"The given color is invalid" : "A cor fornecida é inválida",
- "Disable-user-theming should be true or false" : "Desabilitar-tema-usuário deve ser verdadeiro ou falso",
+ "Disable-user-theming should be true or false" : "A configuração \"disable-user-theming\" (desabilitar temas do usuário) deve ser \"true\" ou \"false\"",
"Saved" : "Salva",
"Invalid app given" : "Aplicativo inválido fornecido",
- "Invalid type for setting \"defaultApp\" given" : "Tipo inválido para configuração de \"defaultApp\" fornecido",
+ "Invalid type for setting \"defaultApp\" given" : "Tipo inválido para configuração \"defaultApp\" fornecido",
"Invalid setting key" : "Chave de configuração inválida",
"The file was uploaded" : "O arquivo foi enviado",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "O arquivo enviado excede a diretiva upload_max_filesize do php.ini",
@@ -25,27 +25,27 @@
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Você já está usando um tema personalizado. As configurações do aplicativo Theming podem ser sobrescritas por isso.",
"Theming" : "Personalização",
"Appearance and accessibility" : "Aparência e acessibilidade",
- "PHP Imagick module" : "Módulo PHP Imageck",
+ "PHP Imagick module" : "Módulo PHP Imagick",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "O módulo PHP \"imagick\" não está habilitado, embora o aplicativo de temas esteja. Para que a geração de favicon funcione corretamente, você precisa instalar e habilitar este módulo.",
"The PHP module \"imagick\" in this instance has no SVG support. For better compatibility it is recommended to install it." : "O módulo PHP \"imagick\" neste caso não tem suporte a SVG. Para melhor compatibilidade é recomendado instalá-lo.",
"Dark theme with high contrast mode" : "Tema escuro com modo de alto contraste",
"Enable dark high contrast mode" : "Ative o modo escuro de alto contraste",
"Similar to the high contrast mode, but with dark colours." : "Semelhante ao modo de alto contraste, mas com cores escuras.",
"Dark theme" : "Tema escuro",
- "Enable dark theme" : "Enable dark theme",
+ "Enable dark theme" : "Ativar o tema escuro",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Um tema escuro para aliviar seus olhos, reduzindo a luminosidade e o brilho gerais.",
"System default theme" : "Tema padrão do sistema",
"Enable the system default" : "Ativar o padrão do sistema",
"Using the default system appearance." : "Usando a aparência padrão do sistema.",
- "Dyslexia font" : "Fonte de dislexia",
- "Enable dyslexia font" : "Ativar fonte dislexia",
+ "Dyslexia font" : "Fonte para dislexia",
+ "Enable dyslexia font" : "Ativar fonte para dislexia",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic é um tipo de letra/fonte grátis concebida para atenuar alguns dos erros comuns de leitura causados pela dislexia.",
"High contrast mode" : "Modo de alto contraste",
"Enable high contrast mode" : "Ativar modo de alto contraste",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "O modo de alto contraste facilita a navegação. A qualidade visual será reduzida, mas a clareza será aumentada.",
"Light theme" : "Tema claro",
- "Enable the default light theme" : "Ative o tema de luz padrão",
- "The default light appearance." : "A aparência de luz padrão.",
+ "Enable the default light theme" : "Ativar o tema claro padrão",
+ "The default light appearance." : "A aparência clara padrão.",
"Legal notice" : "Aviso legal",
"Privacy policy" : "Política de privacidade",
"Adjust the Nextcloud theme" : "Ajustar o tema do Nextcloud",
@@ -54,7 +54,7 @@
"a safe home for all your data" : "um lugar seguro para seus dados",
"Slogan" : "Slogan",
"Primary color" : "Cor primária",
- "The primary color is used for highlighting elements like important buttons. It might get slightly adjusted depending on the current color schema." : "A cor primária é usada para destacar elementos como botões importantes. Pode ser ligeiramente ajustado dependendo do esquema de cores atual.",
+ "The primary color is used for highlighting elements like important buttons. It might get slightly adjusted depending on the current color schema." : "A cor primária é usada para destacar elementos como botões importantes. Ela pode ser ligeiramente ajustado, dependendo do esquema de cores atual.",
"Legal notice link" : "Link do aviso legal",
"Privacy policy link" : "Link da política de privacidade",
"Header logo" : "Logotipo de cabeçalho",
@@ -65,26 +65,26 @@
"Disable user theming" : "Desabilitar temas do usuário",
"Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Embora você possa selecionar e personalizar a sua instância, os usuários podem alterar seu plano de fundo e as cores. Se você quiser forçar a sua personalização, marque esta caixa.",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Criar e alterar temas torna possível personalizar facilmente o Nextcloud e clientes suportados. Isso será visível para todos os usuários.",
- "Instead of a background image you can also configure a plain background color. If you use a background image changing this color will influence the color of the app menu icons." : "Em vez de uma imagem de fundo você também pode configurar uma cor de fundo simples. Se você usar uma imagem de fundo, a alteração dessa cor influenciará a cor dos ícones do menu do aplicativo.",
+ "Instead of a background image you can also configure a plain background color. If you use a background image changing this color will influence the color of the app menu icons." : "Em vez de uma imagem de fundo você também pode configurar uma cor de fundo lisa. Se você usar uma imagem de fundo, a alteração dessa cor influenciará a cor dos ícones do menu do aplicativo.",
"Background color" : "Cor de fundo",
"Upload new logo" : "Enviar novo logotipo",
"Logo" : "Logotipo",
"Upload new background and login image" : "Envie um novo papel de parede e imagem de login",
"Background and login image" : "Plano de fundo e imagem de login",
"Advanced options" : "Opções avançadas",
- "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instale a extensão PHP ImageMagick para ter suporte a geração automática em SVG para favicons baseados no logotipo e cores enviados.",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instale a extensão PHP ImageMagick com suporte para imagens SVG para gerar automaticamente favicons com base no logotipo carregado e na cor.",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "O acesso universal é muito importante para nós. Seguimos os padrões da Web e verificamos se tudo pode ser usado também sem mouse e software de assistência, como leitores de tela. Nosso objetivo é estar em conformidade com as {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 no nível AA, com o tema de alto contraste até mesmo no nível AAA.",
"If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Se você encontrar algum problema, não hesite em denunciá-lo em {issuetracker}nosso rastreador de problemas{linkend}. E se você quiser se envolver, junte-se a {designteam}nossa equipe de design{linkend}!",
"Unable to apply the setting." : "Não foi possível aplicar a configuração.",
"Appearance and accessibility settings" : "Configurações de aparência e acessibilidade",
- "Misc accessibility options" : "Várias opções de acessibilidade",
+ "Misc accessibility options" : "Opções de acessibilidade diversas",
"Enable blur background filter (may increase GPU load)" : "Ativar o filtro de fundo de desfoque (pode aumentar a carga da GPU)",
- "Customization has been disabled by your administrator" : "A personalização foi desativada pelo seu administrador",
- "Set a primary color to highlight important elements. The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements." : "Defina uma cor primária para destacar elementos importantes. A cor usada para elementos como botões primários pode diferir um pouco à medida que é ajustada para atender aos requisitos de acessibilidade.",
- "Background and color" : "Fundo e cor",
- "The background can be set to an image from the default set, a custom uploaded image, or a plain color." : "O plano de fundo pode ser definido como uma imagem do conjunto padrão, uma imagem personalizada carregada ou uma cor simples.",
+ "Customization has been disabled by your administrator" : "A personalização foi desativada por seu administrador",
+ "Set a primary color to highlight important elements. The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements." : "Defina uma cor primária para destacar elementos importantes. A cor usada para elementos como botões primários pode ser um pouco diferente, pois é ajustada para atender aos requisitos de acessibilidade.",
+ "Background and color" : "Plano de fundo e cor",
+ "The background can be set to an image from the default set, a custom uploaded image, or a plain color." : "O plano de fundo pode ser definido como uma imagem do conjunto padrão, uma imagem personalizada carregada ou uma cor lisa.",
"Keyboard shortcuts" : "Atalhos do teclado",
- "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Em alguns casos, os atalhos de teclado podem interferir nas ferramentas de acessibilidade. Para permitir o foco em sua ferramenta corretamente, você pode desativar todos os atalhos de teclado aqui. Isso também desativará todos os atalhos disponíveis nos aplicativos.",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Em alguns casos, os atalhos de teclado podem interferir nas ferramentas de acessibilidade. Para permitir o foco em sua ferramenta corretamente, você pode desabilitar todos os atalhos de teclado aqui. Isso também desabilitará todos os atalhos disponíveis nos aplicativos.",
"Disable all keyboard shortcuts" : "Desabilitar todos os atalhos de teclado",
"Current selected app: {app}, position {position} of {total}" : "Aplicativo atualmente selecionado: {app}, posição {position} de {total}",
"Move up" : "Mover para cima",
@@ -92,9 +92,9 @@
"Select a background from your files" : "Selecione o papel de parede de seus arquivos",
"Select background" : "Selecione o plano de fundo",
"No background has been selected" : "Nenhum plano de fundo foi selecionado",
- "Custom background" : "Papel de parede personalizado",
- "Plain background" : "Fundo simples",
- "Default background" : "Papel de parede padrão",
+ "Custom background" : "Plano de fundo personalizado",
+ "Plain background" : "Plano de fundo liso",
+ "Default background" : "Plano de fundo padrão",
"Theme selection is enforced" : "A seleção do tema é aplicada",
"Could not set the app order" : "Não foi possível definir a ordem do aplicativo",
"Could not reset the app order" : "Não foi possível redefinir a ordem do aplicativo",
diff --git a/apps/updatenotification/l10n/uk.js b/apps/updatenotification/l10n/uk.js
index c70da13b9c9..7fc453e47b6 100644
--- a/apps/updatenotification/l10n/uk.js
+++ b/apps/updatenotification/l10n/uk.js
@@ -33,9 +33,9 @@ OC.L10N.register(
"A pre-release version only for testing new features, not for production environments." : "Попередня версія лише для тестування нових функцій, а не для робочих середовищ.",
"Update" : "Оновлення",
"The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Ваша версія більше не підтримується. Будь ласка, оновіться якнайшвидше до версії, на яку поширюється підтримка.",
- "Apps missing compatible version" : "Такі застосунки не мають версій, що підтримуються",
+ "Apps missing compatible version" : "Застосунки, не сумісні із пропонованою версією",
"View in store" : "Переглянути у крамниці застосунків",
- "Apps with compatible version" : "Застосунки з підтримуваною версією",
+ "Apps with compatible version" : "Застосунки, сумісні із пропонованою версією",
"Please note that the web updater is not recommended with more than 100 accounts! Please use the command line updater instead!" : "Зауважте, що оновлення через веб не рекомендується для систем з понад 100 обліковими записами! Натомість рекомендується використовувати оновлення з командного рядка.",
"Open updater" : "Оновити",
"Download now" : "Звантажити зараз",
diff --git a/apps/updatenotification/l10n/uk.json b/apps/updatenotification/l10n/uk.json
index 28a6e44ff9c..5ffc0c7102c 100644
--- a/apps/updatenotification/l10n/uk.json
+++ b/apps/updatenotification/l10n/uk.json
@@ -31,9 +31,9 @@
"A pre-release version only for testing new features, not for production environments." : "Попередня версія лише для тестування нових функцій, а не для робочих середовищ.",
"Update" : "Оновлення",
"The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Ваша версія більше не підтримується. Будь ласка, оновіться якнайшвидше до версії, на яку поширюється підтримка.",
- "Apps missing compatible version" : "Такі застосунки не мають версій, що підтримуються",
+ "Apps missing compatible version" : "Застосунки, не сумісні із пропонованою версією",
"View in store" : "Переглянути у крамниці застосунків",
- "Apps with compatible version" : "Застосунки з підтримуваною версією",
+ "Apps with compatible version" : "Застосунки, сумісні із пропонованою версією",
"Please note that the web updater is not recommended with more than 100 accounts! Please use the command line updater instead!" : "Зауважте, що оновлення через веб не рекомендується для систем з понад 100 обліковими записами! Натомість рекомендується використовувати оновлення з командного рядка.",
"Open updater" : "Оновити",
"Download now" : "Звантажити зараз",
diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js
index 6056a81c1d3..57912e46adf 100644
--- a/apps/user_ldap/l10n/cs.js
+++ b/apps/user_ldap/l10n/cs.js
@@ -61,6 +61,7 @@ OC.L10N.register(
"No LDAP base DN was given" : "Nezadáno LDAP základ DN",
"User base DN is not a subnode of global base DN" : "Základ DN uživatele není dílčím uzlem globálního základu DN",
"Group base DN is not a subnode of global base DN" : "Základ DN skupiny není dílčím uzlem globálního základu DN",
+ "Login filter does not contain %s placeholder." : "Filtr přihlášení neobsahuje zástupné vyjádření %s.",
"Please login with the new password" : "Přihlaste se pomocí nového hesla",
"LDAP User backend" : "Podpůrná vrstva pro uživatele z LDAP",
"Your password will expire tomorrow." : "Platnost hesla zítra skončí.",
diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json
index 93676a1fc24..60d09fdf3e5 100644
--- a/apps/user_ldap/l10n/cs.json
+++ b/apps/user_ldap/l10n/cs.json
@@ -59,6 +59,7 @@
"No LDAP base DN was given" : "Nezadáno LDAP základ DN",
"User base DN is not a subnode of global base DN" : "Základ DN uživatele není dílčím uzlem globálního základu DN",
"Group base DN is not a subnode of global base DN" : "Základ DN skupiny není dílčím uzlem globálního základu DN",
+ "Login filter does not contain %s placeholder." : "Filtr přihlášení neobsahuje zástupné vyjádření %s.",
"Please login with the new password" : "Přihlaste se pomocí nového hesla",
"LDAP User backend" : "Podpůrná vrstva pro uživatele z LDAP",
"Your password will expire tomorrow." : "Platnost hesla zítra skončí.",
diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js
index 6f0c635a931..2744c7b7384 100644
--- a/apps/user_ldap/l10n/de.js
+++ b/apps/user_ldap/l10n/de.js
@@ -61,6 +61,7 @@ OC.L10N.register(
"No LDAP base DN was given" : "Es wurde keine LDAP-Basis-DN eingegeben",
"User base DN is not a subnode of global base DN" : "Der Benutzer-Basis-DN ist kein Unterknoten des globalen Basis-DN",
"Group base DN is not a subnode of global base DN" : "Der Gruppen-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Login filter does not contain %s placeholder." : "Der Anmeldefilter enthält keinen %s-Platzhalter",
"Please login with the new password" : "Bitte mit dem neuen Passwort anmelden",
"LDAP User backend" : "LDAP Benutzer-Backend",
"Your password will expire tomorrow." : "Dein Passwort läuft morgen ab",
diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json
index 0a765afff9c..5cf218b924a 100644
--- a/apps/user_ldap/l10n/de.json
+++ b/apps/user_ldap/l10n/de.json
@@ -59,6 +59,7 @@
"No LDAP base DN was given" : "Es wurde keine LDAP-Basis-DN eingegeben",
"User base DN is not a subnode of global base DN" : "Der Benutzer-Basis-DN ist kein Unterknoten des globalen Basis-DN",
"Group base DN is not a subnode of global base DN" : "Der Gruppen-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Login filter does not contain %s placeholder." : "Der Anmeldefilter enthält keinen %s-Platzhalter",
"Please login with the new password" : "Bitte mit dem neuen Passwort anmelden",
"LDAP User backend" : "LDAP Benutzer-Backend",
"Your password will expire tomorrow." : "Dein Passwort läuft morgen ab",
diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js
index c514a0a2374..acdcdab78de 100644
--- a/apps/user_ldap/l10n/de_DE.js
+++ b/apps/user_ldap/l10n/de_DE.js
@@ -61,6 +61,7 @@ OC.L10N.register(
"No LDAP base DN was given" : "Es wurde keine LDAP-Basis-DN angegeben",
"User base DN is not a subnode of global base DN" : "Der Benutzer-Basis-DN ist kein Unterknoten des globalen Basis-DN",
"Group base DN is not a subnode of global base DN" : "Der Gruppen-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Login filter does not contain %s placeholder." : "Der Anmeldefilter enthält keinen %s-Platzhalter",
"Please login with the new password" : "Bitte mit dem neuen Passwort anmelden",
"LDAP User backend" : "LDAP Benutzer-Backend",
"Your password will expire tomorrow." : "Ihr Passwort läuft morgen ab.",
diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json
index b85d59f2b98..2e415b8400c 100644
--- a/apps/user_ldap/l10n/de_DE.json
+++ b/apps/user_ldap/l10n/de_DE.json
@@ -59,6 +59,7 @@
"No LDAP base DN was given" : "Es wurde keine LDAP-Basis-DN angegeben",
"User base DN is not a subnode of global base DN" : "Der Benutzer-Basis-DN ist kein Unterknoten des globalen Basis-DN",
"Group base DN is not a subnode of global base DN" : "Der Gruppen-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Login filter does not contain %s placeholder." : "Der Anmeldefilter enthält keinen %s-Platzhalter",
"Please login with the new password" : "Bitte mit dem neuen Passwort anmelden",
"LDAP User backend" : "LDAP Benutzer-Backend",
"Your password will expire tomorrow." : "Ihr Passwort läuft morgen ab.",
diff --git a/apps/user_ldap/l10n/en_GB.js b/apps/user_ldap/l10n/en_GB.js
index 60065202698..550cc262cb5 100644
--- a/apps/user_ldap/l10n/en_GB.js
+++ b/apps/user_ldap/l10n/en_GB.js
@@ -61,6 +61,7 @@ OC.L10N.register(
"No LDAP base DN was given" : "No LDAP base DN was given",
"User base DN is not a subnode of global base DN" : "User base DN is not a subnode of global base DN",
"Group base DN is not a subnode of global base DN" : "Group base DN is not a subnode of global base DN",
+ "Login filter does not contain %s placeholder." : "Login filter does not contain %s placeholder.",
"Please login with the new password" : "Please login with the new password",
"LDAP User backend" : "LDAP User backend",
"Your password will expire tomorrow." : "Your password will expire tomorrow.",
diff --git a/apps/user_ldap/l10n/en_GB.json b/apps/user_ldap/l10n/en_GB.json
index 6f2fcdf7178..d516661ef41 100644
--- a/apps/user_ldap/l10n/en_GB.json
+++ b/apps/user_ldap/l10n/en_GB.json
@@ -59,6 +59,7 @@
"No LDAP base DN was given" : "No LDAP base DN was given",
"User base DN is not a subnode of global base DN" : "User base DN is not a subnode of global base DN",
"Group base DN is not a subnode of global base DN" : "Group base DN is not a subnode of global base DN",
+ "Login filter does not contain %s placeholder." : "Login filter does not contain %s placeholder.",
"Please login with the new password" : "Please login with the new password",
"LDAP User backend" : "LDAP User backend",
"Your password will expire tomorrow." : "Your password will expire tomorrow.",
diff --git a/apps/user_ldap/l10n/et_EE.js b/apps/user_ldap/l10n/et_EE.js
index 34641df1f17..46695f1973a 100644
--- a/apps/user_ldap/l10n/et_EE.js
+++ b/apps/user_ldap/l10n/et_EE.js
@@ -9,6 +9,7 @@ OC.L10N.register(
"No action specified" : "Tegevusi pole määratletud",
"No configuration specified" : "Seadistust pole määratletud",
"No data specified" : "Andmeid pole määratletud",
+ "Could not set configuration %1$s to %2$s" : "Ei õnnestunud muuta „%1$s“ seadistuse väärtuseks „%2$s“",
"Action does not exist" : "Toimingut pole olemas",
"Renewing …" : "Värskendamine ...",
"Very weak password" : "Väga nõrk parool",
@@ -38,6 +39,9 @@ OC.L10N.register(
"Select attributes" : "Vali atribuudid",
"User found and settings verified." : "Kasutaja leiti ja seaded on kontrollitud.",
"Please provide a login name to test against" : "Palun sisesta kasutajanimi, mida testida",
+ "Password change rejected. Hint: %s" : "Salasõna muutmine polnud võimalik. Selgitus: %s",
+ "Mandatory field \"%s\" left empty" : "Kohustuslik väli „%s“ on jäänud tühjaks",
+ "Login filter does not contain %s placeholder." : "Kasutajanimede filtris puudub kohatäitja „%s“",
"Please login with the new password" : "Palun logi uue parooliga sisse",
"Your password will expire tomorrow." : "Su parool aegub homme.",
"Your password will expire today." : "Su parool aegub täna.",
diff --git a/apps/user_ldap/l10n/et_EE.json b/apps/user_ldap/l10n/et_EE.json
index 5a5c0e08022..8e9306fb653 100644
--- a/apps/user_ldap/l10n/et_EE.json
+++ b/apps/user_ldap/l10n/et_EE.json
@@ -7,6 +7,7 @@
"No action specified" : "Tegevusi pole määratletud",
"No configuration specified" : "Seadistust pole määratletud",
"No data specified" : "Andmeid pole määratletud",
+ "Could not set configuration %1$s to %2$s" : "Ei õnnestunud muuta „%1$s“ seadistuse väärtuseks „%2$s“",
"Action does not exist" : "Toimingut pole olemas",
"Renewing …" : "Värskendamine ...",
"Very weak password" : "Väga nõrk parool",
@@ -36,6 +37,9 @@
"Select attributes" : "Vali atribuudid",
"User found and settings verified." : "Kasutaja leiti ja seaded on kontrollitud.",
"Please provide a login name to test against" : "Palun sisesta kasutajanimi, mida testida",
+ "Password change rejected. Hint: %s" : "Salasõna muutmine polnud võimalik. Selgitus: %s",
+ "Mandatory field \"%s\" left empty" : "Kohustuslik väli „%s“ on jäänud tühjaks",
+ "Login filter does not contain %s placeholder." : "Kasutajanimede filtris puudub kohatäitja „%s“",
"Please login with the new password" : "Palun logi uue parooliga sisse",
"Your password will expire tomorrow." : "Su parool aegub homme.",
"Your password will expire today." : "Su parool aegub täna.",
diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js
index 27435a0f2f4..8ca986d5b87 100644
--- a/apps/user_ldap/l10n/pt_BR.js
+++ b/apps/user_ldap/l10n/pt_BR.js
@@ -61,12 +61,13 @@ OC.L10N.register(
"No LDAP base DN was given" : "Nenhum DN de base LDAP foi fornecido",
"User base DN is not a subnode of global base DN" : "O DN de base do usuário não é um subnó do DN de base global",
"Group base DN is not a subnode of global base DN" : "O DN de base do grupo não é um subnó do DN de base global",
+ "Login filter does not contain %s placeholder." : "O filtro de login não contém o espaço reservado %s",
"Please login with the new password" : "Logue-se com a nova senha",
"LDAP User backend" : "Estrutura do Usuário LDAP",
"Your password will expire tomorrow." : "Sua senha vai expirar amanhã.",
"Your password will expire today." : "Sua senha vai expirar hoje.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Sua senha vai expirar dentro de%n dia.","Sua senha vai expirar dentro de%ndias.","Sua senha vai expirar dentro de%ndias."],
- "LDAP/AD integration" : "LDAP/AD integração",
+ "LDAP/AD integration" : "Integração LDAP/AD",
"LDAP Connection" : "Conexão LDAP",
"_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Falha na ligação para%n Configurações LDAP:%s","Falha na ligação para%n Configurações LDAP:%s","Falha na ligação para%n Configurações LDAP:%s"],
"_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Falha na pesquisa de %n configurações LDAP: %s","Falha na pesquisa de %n configurações LDAP: %s","Falha na pesquisa de %n configurações LDAP: %s"],
@@ -76,9 +77,9 @@ OC.L10N.register(
"None found" : "Nenhum encontrado",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Foram encontrados UUIDs inválidos de contas ou grupos LDAP. Revise as configurações de \"Substituir detecção de UUID\" na parte Especialista da configuração LDAP e use \"occ ldap:update-uuid\" para atualizá-las.",
"_%n group found_::_%n groups found_" : ["%n grupo encontrado","%n grupo encontrado","%n grupos encontrados"],
- "> 1000 groups found" : ">1000 grupos encontrados",
- "> 1000 users found" : ">1000 usuários encontrados",
- "_%n user found_::_%n users found_" : ["%n > 1000 grupos encontrados","%n usuário encontrado","%n usuários encontrados"],
+ "> 1000 groups found" : "> 1000 grupos encontrados",
+ "> 1000 users found" : "> 1000 usuários encontrados",
+ "_%n user found_::_%n users found_" : ["%n usuário encontrado","%n usuários encontrados","%n usuários encontrados"],
"Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Não foi possível detectar o atributo do nome de exibição do usuário. Por favor, especifique-o você mesmo nas configurações LDAP avançadas.",
"Could not find the desired feature" : "Não foi possível encontrar o recurso desejado",
"Invalid Host" : "Host inválido",
@@ -100,12 +101,12 @@ OC.L10N.register(
"When logging in, %s will find the user based on the following attributes:" : "Ao entrar, %s vai encontrar o usuário com base nos seguintes atributos:",
"LDAP/AD Username:" : "Nome de usuário LDAP/AD:",
"Allows login against the LDAP/AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Permite o login com o nome de usuário LDAP/AD, que é \"uid\" ou \"sAMAccountName\" e será detectado.",
- "LDAP/AD Email Address:" : "LDAP/AD Endereço de E-mail:",
+ "LDAP/AD Email Address:" : "Endereço de E-mail LDAP/AD:",
"Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Permite login com um atributo de e-mail. \"Mail\" e \"mailPrimaryAddress\" são permitidos.",
"Other Attributes:" : "Outros Atributos:",
"Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Define o filtro a aplicar quando o login é tentado. \"%%uid\" substitui o nome de usuário durante o login. Por exemplo: \"uid=%%uid\"",
"Test Loginname" : "Testar nome de login",
- "Attempts to receive a DN for the given loginname and the current login filter" : "Attempts to receive a DN for the given loginname and the current login filter",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "Tenta receber um DN para o nome de login fornecido e o filtro de login atual",
"Verify settings" : "Verificar configurações",
"%s. Server:" : "%s. Servidor:",
"Add a new configuration" : "Adiconar uma nova configuração",
@@ -209,7 +210,7 @@ OC.L10N.register(
"Twitter Field" : "Campo do Twitter",
"User profile Twitter will be set from the specified attribute" : "O perfil do usuário Twitter será definido a partir do atributo especificado",
"Fediverse Field" : "Campo Fediverso",
- "User profile Fediverse will be set from the specified attribute" : "O perfil do usuário Fediverse será definido a partir do atributo especificado",
+ "User profile Fediverse will be set from the specified attribute" : "O perfil do usuário Fediverso será definido a partir do atributo especificado",
"Organisation Field" : "Campo da organização",
"User profile Organisation will be set from the specified attribute" : "A organização do perfil do usuário será definida a partir do atributo especificado",
"Role Field" : "Campo de Função",
diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json
index 76bbec5ac1f..351fc68697a 100644
--- a/apps/user_ldap/l10n/pt_BR.json
+++ b/apps/user_ldap/l10n/pt_BR.json
@@ -59,12 +59,13 @@
"No LDAP base DN was given" : "Nenhum DN de base LDAP foi fornecido",
"User base DN is not a subnode of global base DN" : "O DN de base do usuário não é um subnó do DN de base global",
"Group base DN is not a subnode of global base DN" : "O DN de base do grupo não é um subnó do DN de base global",
+ "Login filter does not contain %s placeholder." : "O filtro de login não contém o espaço reservado %s",
"Please login with the new password" : "Logue-se com a nova senha",
"LDAP User backend" : "Estrutura do Usuário LDAP",
"Your password will expire tomorrow." : "Sua senha vai expirar amanhã.",
"Your password will expire today." : "Sua senha vai expirar hoje.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Sua senha vai expirar dentro de%n dia.","Sua senha vai expirar dentro de%ndias.","Sua senha vai expirar dentro de%ndias."],
- "LDAP/AD integration" : "LDAP/AD integração",
+ "LDAP/AD integration" : "Integração LDAP/AD",
"LDAP Connection" : "Conexão LDAP",
"_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Falha na ligação para%n Configurações LDAP:%s","Falha na ligação para%n Configurações LDAP:%s","Falha na ligação para%n Configurações LDAP:%s"],
"_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Falha na pesquisa de %n configurações LDAP: %s","Falha na pesquisa de %n configurações LDAP: %s","Falha na pesquisa de %n configurações LDAP: %s"],
@@ -74,9 +75,9 @@
"None found" : "Nenhum encontrado",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Foram encontrados UUIDs inválidos de contas ou grupos LDAP. Revise as configurações de \"Substituir detecção de UUID\" na parte Especialista da configuração LDAP e use \"occ ldap:update-uuid\" para atualizá-las.",
"_%n group found_::_%n groups found_" : ["%n grupo encontrado","%n grupo encontrado","%n grupos encontrados"],
- "> 1000 groups found" : ">1000 grupos encontrados",
- "> 1000 users found" : ">1000 usuários encontrados",
- "_%n user found_::_%n users found_" : ["%n > 1000 grupos encontrados","%n usuário encontrado","%n usuários encontrados"],
+ "> 1000 groups found" : "> 1000 grupos encontrados",
+ "> 1000 users found" : "> 1000 usuários encontrados",
+ "_%n user found_::_%n users found_" : ["%n usuário encontrado","%n usuários encontrados","%n usuários encontrados"],
"Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Não foi possível detectar o atributo do nome de exibição do usuário. Por favor, especifique-o você mesmo nas configurações LDAP avançadas.",
"Could not find the desired feature" : "Não foi possível encontrar o recurso desejado",
"Invalid Host" : "Host inválido",
@@ -98,12 +99,12 @@
"When logging in, %s will find the user based on the following attributes:" : "Ao entrar, %s vai encontrar o usuário com base nos seguintes atributos:",
"LDAP/AD Username:" : "Nome de usuário LDAP/AD:",
"Allows login against the LDAP/AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Permite o login com o nome de usuário LDAP/AD, que é \"uid\" ou \"sAMAccountName\" e será detectado.",
- "LDAP/AD Email Address:" : "LDAP/AD Endereço de E-mail:",
+ "LDAP/AD Email Address:" : "Endereço de E-mail LDAP/AD:",
"Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Permite login com um atributo de e-mail. \"Mail\" e \"mailPrimaryAddress\" são permitidos.",
"Other Attributes:" : "Outros Atributos:",
"Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Define o filtro a aplicar quando o login é tentado. \"%%uid\" substitui o nome de usuário durante o login. Por exemplo: \"uid=%%uid\"",
"Test Loginname" : "Testar nome de login",
- "Attempts to receive a DN for the given loginname and the current login filter" : "Attempts to receive a DN for the given loginname and the current login filter",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "Tenta receber um DN para o nome de login fornecido e o filtro de login atual",
"Verify settings" : "Verificar configurações",
"%s. Server:" : "%s. Servidor:",
"Add a new configuration" : "Adiconar uma nova configuração",
@@ -207,7 +208,7 @@
"Twitter Field" : "Campo do Twitter",
"User profile Twitter will be set from the specified attribute" : "O perfil do usuário Twitter será definido a partir do atributo especificado",
"Fediverse Field" : "Campo Fediverso",
- "User profile Fediverse will be set from the specified attribute" : "O perfil do usuário Fediverse será definido a partir do atributo especificado",
+ "User profile Fediverse will be set from the specified attribute" : "O perfil do usuário Fediverso será definido a partir do atributo especificado",
"Organisation Field" : "Campo da organização",
"User profile Organisation will be set from the specified attribute" : "A organização do perfil do usuário será definida a partir do atributo especificado",
"Role Field" : "Campo de Função",
diff --git a/apps/user_ldap/l10n/sr.js b/apps/user_ldap/l10n/sr.js
index 17c1d930ffd..4d4ef42ffba 100644
--- a/apps/user_ldap/l10n/sr.js
+++ b/apps/user_ldap/l10n/sr.js
@@ -61,6 +61,7 @@ OC.L10N.register(
"No LDAP base DN was given" : "Није наведен ниједан LDAP базни DN",
"User base DN is not a subnode of global base DN" : "Корисников базни DN није подчвор глобалног базног DN",
"Group base DN is not a subnode of global base DN" : "Базни DN групе није подчвор глобалног базног DN",
+ "Login filter does not contain %s placeholder." : "Филтер пријаве не садржи %s чувар места",
"Please login with the new password" : "Пријавите се са новом лозинком",
"LDAP User backend" : "LDAP позадина за кориснике",
"Your password will expire tomorrow." : "Ваша лозинка ће истећи сутра.",
diff --git a/apps/user_ldap/l10n/sr.json b/apps/user_ldap/l10n/sr.json
index 7616083b724..d2c8defd599 100644
--- a/apps/user_ldap/l10n/sr.json
+++ b/apps/user_ldap/l10n/sr.json
@@ -59,6 +59,7 @@
"No LDAP base DN was given" : "Није наведен ниједан LDAP базни DN",
"User base DN is not a subnode of global base DN" : "Корисников базни DN није подчвор глобалног базног DN",
"Group base DN is not a subnode of global base DN" : "Базни DN групе није подчвор глобалног базног DN",
+ "Login filter does not contain %s placeholder." : "Филтер пријаве не садржи %s чувар места",
"Please login with the new password" : "Пријавите се са новом лозинком",
"LDAP User backend" : "LDAP позадина за кориснике",
"Your password will expire tomorrow." : "Ваша лозинка ће истећи сутра.",
diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js
index c191713b84e..ca609c816a0 100644
--- a/apps/user_ldap/l10n/zh_CN.js
+++ b/apps/user_ldap/l10n/zh_CN.js
@@ -61,6 +61,7 @@ OC.L10N.register(
"No LDAP base DN was given" : "未提供 LDAP 基本 DN",
"User base DN is not a subnode of global base DN" : "用户基本 DN 不是全局基本 DN 的子节点",
"Group base DN is not a subnode of global base DN" : "群组基本 DN 不是全局基本 DN 的子节点",
+ "Login filter does not contain %s placeholder." : "登录筛选器不包含 %s 占位符。",
"Please login with the new password" : "请使用新密码登录",
"LDAP User backend" : "LDAP 用户后端",
"Your password will expire tomorrow." : "您的密码将在明天过期",
diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json
index 4e8655823b4..b4c2ba4aa26 100644
--- a/apps/user_ldap/l10n/zh_CN.json
+++ b/apps/user_ldap/l10n/zh_CN.json
@@ -59,6 +59,7 @@
"No LDAP base DN was given" : "未提供 LDAP 基本 DN",
"User base DN is not a subnode of global base DN" : "用户基本 DN 不是全局基本 DN 的子节点",
"Group base DN is not a subnode of global base DN" : "群组基本 DN 不是全局基本 DN 的子节点",
+ "Login filter does not contain %s placeholder." : "登录筛选器不包含 %s 占位符。",
"Please login with the new password" : "请使用新密码登录",
"LDAP User backend" : "LDAP 用户后端",
"Your password will expire tomorrow." : "您的密码将在明天过期",
diff --git a/apps/user_ldap/l10n/zh_HK.js b/apps/user_ldap/l10n/zh_HK.js
index e2948f5b5d9..0409ced3b34 100644
--- a/apps/user_ldap/l10n/zh_HK.js
+++ b/apps/user_ldap/l10n/zh_HK.js
@@ -61,6 +61,7 @@ OC.L10N.register(
"No LDAP base DN was given" : "未提供 LDAP 基礎 DN",
"User base DN is not a subnode of global base DN" : "用戶基礎 DN 不是全域基礎 DN 的子節點",
"Group base DN is not a subnode of global base DN" : "群組基礎 DN 不是全域基礎 DN 的子節點",
+ "Login filter does not contain %s placeholder." : "登入過濾條件不包含 %s 佔位字串。",
"Please login with the new password" : "請登入並使用新的密碼",
"LDAP User backend" : "LDAP 用戶後端系統",
"Your password will expire tomorrow." : "您的密碼將於明日過期",
diff --git a/apps/user_ldap/l10n/zh_HK.json b/apps/user_ldap/l10n/zh_HK.json
index eec7f59fd88..ecebd433141 100644
--- a/apps/user_ldap/l10n/zh_HK.json
+++ b/apps/user_ldap/l10n/zh_HK.json
@@ -59,6 +59,7 @@
"No LDAP base DN was given" : "未提供 LDAP 基礎 DN",
"User base DN is not a subnode of global base DN" : "用戶基礎 DN 不是全域基礎 DN 的子節點",
"Group base DN is not a subnode of global base DN" : "群組基礎 DN 不是全域基礎 DN 的子節點",
+ "Login filter does not contain %s placeholder." : "登入過濾條件不包含 %s 佔位字串。",
"Please login with the new password" : "請登入並使用新的密碼",
"LDAP User backend" : "LDAP 用戶後端系統",
"Your password will expire tomorrow." : "您的密碼將於明日過期",
diff --git a/apps/user_ldap/l10n/zh_TW.js b/apps/user_ldap/l10n/zh_TW.js
index 13c195b39f5..d7fa6d00327 100644
--- a/apps/user_ldap/l10n/zh_TW.js
+++ b/apps/user_ldap/l10n/zh_TW.js
@@ -61,6 +61,7 @@ OC.L10N.register(
"No LDAP base DN was given" : "未提供 LDAP 基礎 DN",
"User base DN is not a subnode of global base DN" : "使用者基礎 DN 不是全域基礎 DN 的子節點",
"Group base DN is not a subnode of global base DN" : "群組基礎 DN 不是全域基礎 DN 的子節點",
+ "Login filter does not contain %s placeholder." : "登入過濾條件不包含 %s 佔位字串。",
"Please login with the new password" : "請以新密碼登入",
"LDAP User backend" : "LDAP 使用者後端",
"Your password will expire tomorrow." : "您的密碼將於明天到期。",
diff --git a/apps/user_ldap/l10n/zh_TW.json b/apps/user_ldap/l10n/zh_TW.json
index 2e716800d2f..d78cd7f2642 100644
--- a/apps/user_ldap/l10n/zh_TW.json
+++ b/apps/user_ldap/l10n/zh_TW.json
@@ -59,6 +59,7 @@
"No LDAP base DN was given" : "未提供 LDAP 基礎 DN",
"User base DN is not a subnode of global base DN" : "使用者基礎 DN 不是全域基礎 DN 的子節點",
"Group base DN is not a subnode of global base DN" : "群組基礎 DN 不是全域基礎 DN 的子節點",
+ "Login filter does not contain %s placeholder." : "登入過濾條件不包含 %s 佔位字串。",
"Please login with the new password" : "請以新密碼登入",
"LDAP User backend" : "LDAP 使用者後端",
"Your password will expire tomorrow." : "您的密碼將於明天到期。",
diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml
index 1a94fd88a17..a8db3332dc9 100644
--- a/build/psalm-baseline.xml
+++ b/build/psalm-baseline.xml
@@ -2607,11 +2607,6 @@
<code><![CDATA[\Test\Util\User\Dummy]]></code>
</UndefinedClass>
</file>
- <file src="lib/private/legacy/OC_Util.php">
- <InvalidReturnType>
- <code><![CDATA[void]]></code>
- </InvalidReturnType>
- </file>
<file src="lib/public/AppFramework/ApiController.php">
<NoInterfaceProperties>
<code><![CDATA[$this->request->server]]></code>
diff --git a/core/Listener/BeforeTemplateRenderedListener.php b/core/Listener/BeforeTemplateRenderedListener.php
index 4ce892664e9..cc1dee91cfe 100644
--- a/core/Listener/BeforeTemplateRenderedListener.php
+++ b/core/Listener/BeforeTemplateRenderedListener.php
@@ -37,7 +37,7 @@ class BeforeTemplateRenderedListener implements IEventListener {
Util::addScript('core', 'public');
}
- \OC_Util::addStyle('server', null, true);
+ Util::addStyle('server', null, true);
if ($event instanceof BeforeLoginTemplateRenderedEvent) {
// todo: make login work without these
diff --git a/core/js/tests/specs/coreSpec.js b/core/js/tests/specs/coreSpec.js
index a36d8320227..195b6dca99a 100644
--- a/core/js/tests/specs/coreSpec.js
+++ b/core/js/tests/specs/coreSpec.js
@@ -359,7 +359,7 @@ describe('Core base tests', function() {
// to make sure they run.
var cit = window.isPhantom?xit:it;
- // must provide the same results as \OC_Util::naturalSortCompare
+ // must provide the same results as \OCP\Util::naturalSortCompare
it('sorts alphabetically', function() {
var a = [
'def',
diff --git a/core/l10n/br.js b/core/l10n/br.js
index 45a6817358f..9789c116efc 100644
--- a/core/l10n/br.js
+++ b/core/l10n/br.js
@@ -12,7 +12,7 @@ OC.L10N.register(
"Unknown filetype" : "N'eo ket anavezet stumm ar restr",
"An error occurred. Please contact your admin." : "Ur fazi a zo bet. Galvit o merour mar-plij.",
"Invalid image" : "N'eo ket aotreet ar skeudenn",
- "No temporary profile picture available, try again" : "N'ez eus skeudenn trolinenn vak ebet, klaskit adarre",
+ "No temporary profile picture available, try again" : "N'ez eus skeudenn brofil vak ebet, klaskit adarre",
"No crop data provided" : "Roadenn sternglotadur ebet",
"No valid crop data provided" : "N'ez eus roadenn sternglotadur mat ebet",
"Crop is not square" : "Ar sternglotadur n'eo ket ur c'harrez",
@@ -73,6 +73,8 @@ OC.L10N.register(
"Start typing to search" : "Krogit da skrivañ evit klask",
"Today" : "Hiziv",
"Date" : "Deiz",
+ "Search people" : "Klask tud",
+ "People" : "Tud",
"Load more results" : "Kagañ muioc'h a disoc'hoù",
"Log in" : "Kennaskañ",
"Logging in …" : "O kennaskañ…",
@@ -145,7 +147,7 @@ OC.L10N.register(
"Already existing files" : "Bez ez eus dija eus ar rentr",
"Which files do you want to keep?" : "Peseurt restroù o peus c'houant gouarn",
"If you select both versions, the copied file will have a number added to its name." : "M'a choazit an daou stumm, an restr eilet en do un niver ouzhenned war e anv",
- "Cancel" : "Arrest",
+ "Cancel" : "Nullañ",
"Continue" : "Kendec'hel",
"(all selected)" : "(dibab pep tra)",
"({count} selected)" : "({count} dibabet)",
@@ -189,7 +191,7 @@ OC.L10N.register(
"Technical details" : "Munidoù teknikel",
"Remote Address: %s" : "Chom-loc'h pell : %s",
"Request ID: %s" : "ID goulennet : %s",
- "Type: %s" : "Stumm : %s",
+ "Type: %s" : "Seurt: %s",
"Code: %s" : "Kod : %s",
"Message: %s" : "Kemenadenn : %s",
"File: %s" : "Restr : %s",
diff --git a/core/l10n/br.json b/core/l10n/br.json
index 4528c290e8b..01e42577f5c 100644
--- a/core/l10n/br.json
+++ b/core/l10n/br.json
@@ -10,7 +10,7 @@
"Unknown filetype" : "N'eo ket anavezet stumm ar restr",
"An error occurred. Please contact your admin." : "Ur fazi a zo bet. Galvit o merour mar-plij.",
"Invalid image" : "N'eo ket aotreet ar skeudenn",
- "No temporary profile picture available, try again" : "N'ez eus skeudenn trolinenn vak ebet, klaskit adarre",
+ "No temporary profile picture available, try again" : "N'ez eus skeudenn brofil vak ebet, klaskit adarre",
"No crop data provided" : "Roadenn sternglotadur ebet",
"No valid crop data provided" : "N'ez eus roadenn sternglotadur mat ebet",
"Crop is not square" : "Ar sternglotadur n'eo ket ur c'harrez",
@@ -71,6 +71,8 @@
"Start typing to search" : "Krogit da skrivañ evit klask",
"Today" : "Hiziv",
"Date" : "Deiz",
+ "Search people" : "Klask tud",
+ "People" : "Tud",
"Load more results" : "Kagañ muioc'h a disoc'hoù",
"Log in" : "Kennaskañ",
"Logging in …" : "O kennaskañ…",
@@ -143,7 +145,7 @@
"Already existing files" : "Bez ez eus dija eus ar rentr",
"Which files do you want to keep?" : "Peseurt restroù o peus c'houant gouarn",
"If you select both versions, the copied file will have a number added to its name." : "M'a choazit an daou stumm, an restr eilet en do un niver ouzhenned war e anv",
- "Cancel" : "Arrest",
+ "Cancel" : "Nullañ",
"Continue" : "Kendec'hel",
"(all selected)" : "(dibab pep tra)",
"({count} selected)" : "({count} dibabet)",
@@ -187,7 +189,7 @@
"Technical details" : "Munidoù teknikel",
"Remote Address: %s" : "Chom-loc'h pell : %s",
"Request ID: %s" : "ID goulennet : %s",
- "Type: %s" : "Stumm : %s",
+ "Type: %s" : "Seurt: %s",
"Code: %s" : "Kod : %s",
"Message: %s" : "Kemenadenn : %s",
"File: %s" : "Restr : %s",
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index 936086fcf14..21de2675fe3 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -146,6 +146,8 @@ OC.L10N.register(
"Account name" : "계정 아이디",
"Server side authentication failed!" : "서버 인증 실패!",
"Please contact your administrator." : "관리자에게 문의하십시오.",
+ "Session error" : "세션 오류",
+ "It appears your session token has expired, please refresh the page and try again." : "세션 토큰이 만료된 것으로 보입니다. 페이지 새로고침을 하고 다시 시도하세요.",
"An internal error occurred." : "내부 오류가 발생했습니다.",
"Please try again or contact your administrator." : "다시 시도하거나 관리자에게 연락하십시오.",
"Password" : "암호",
@@ -205,9 +207,25 @@ OC.L10N.register(
"Login form is disabled." : "로그인 양식이 비활성화 되었습니다.",
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Nextcloud 로그인 양식이 비활성화 되었습니다. 이용 가능한 다른 방법으로 로그인 하거나, 관리자에게 문의하십시오.",
"More actions" : "더 많은 동작",
+ "Password is too weak" : "너무 약한 암호",
+ "Password is weak" : "약한 암호",
+ "Password is average" : "보통 암호",
+ "Password is strong" : "강한 암호",
+ "Password is very strong" : "매우 강한 암호",
+ "Password is extremely strong" : "극도로 강한 암호",
+ "Unknown password strength" : "알 수 없는 암호 강도",
+ "Your data directory and files are probably accessible from the internet because the <code>.htaccess</code> file does not work." : "<code>.htaccess</code>파일이 작동하지 않아 당신의 데이터 디렉토리와 파일이 인터넷에 노출될 수도 있습니다.",
+ "For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "서버를 적절히 구성하기 위한 정보는  {linkStart}문서를 참조하세요{linkEnd}",
+ "Autoconfig file detected" : "자동구성 파일 감지됨",
+ "The setup form below is pre-filled with the values from the config file." : "아래 설정 입력란은 설정파일의 값으로 미리 입력됩니다.",
"Security warning" : "보안 경고",
+ "Create administration account" : "관리자 계정 생성",
+ "Administration account name" : "관리자 계정 이름",
+ "Administration account password" : "관리자 계정 암호",
"Storage & database" : "저장소 및 데이터베이스",
"Data folder" : "데이터 폴더",
+ "Database configuration" : "데이터베이스 구성",
+ "Only {firstAndOnlyDatabase} is available." : "오직 {firstAndOnlyDatabase}만 가능합니다.",
"Install and activate additional PHP modules to choose other database types." : "다른 데이터베이스 종류를 사용하려면 추가 PHP 모듈을 설치 및 활성화하십시오.",
"For more details check out the documentation." : "자세한 정보를 보려면 문서를 참고하십시오.",
"Performance warning" : "성능 경고",
@@ -220,6 +238,7 @@ OC.L10N.register(
"Database tablespace" : "데이터베이스 테이블 공간",
"Please specify the port number along with the host name (e.g., localhost:5432)." : "호스트 이름과 함께 포트 번호를 지정하십시오(예: localhost:5432)",
"Database host" : "데이터베이스 호스트",
+ "localhost" : "로컬호스트",
"Installing …" : "설치중…",
"Install" : "설치",
"Need help?" : "도움이 필요한가요?",
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index 3876870a26e..67fc5f25474 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -144,6 +144,8 @@
"Account name" : "계정 아이디",
"Server side authentication failed!" : "서버 인증 실패!",
"Please contact your administrator." : "관리자에게 문의하십시오.",
+ "Session error" : "세션 오류",
+ "It appears your session token has expired, please refresh the page and try again." : "세션 토큰이 만료된 것으로 보입니다. 페이지 새로고침을 하고 다시 시도하세요.",
"An internal error occurred." : "내부 오류가 발생했습니다.",
"Please try again or contact your administrator." : "다시 시도하거나 관리자에게 연락하십시오.",
"Password" : "암호",
@@ -203,9 +205,25 @@
"Login form is disabled." : "로그인 양식이 비활성화 되었습니다.",
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Nextcloud 로그인 양식이 비활성화 되었습니다. 이용 가능한 다른 방법으로 로그인 하거나, 관리자에게 문의하십시오.",
"More actions" : "더 많은 동작",
+ "Password is too weak" : "너무 약한 암호",
+ "Password is weak" : "약한 암호",
+ "Password is average" : "보통 암호",
+ "Password is strong" : "강한 암호",
+ "Password is very strong" : "매우 강한 암호",
+ "Password is extremely strong" : "극도로 강한 암호",
+ "Unknown password strength" : "알 수 없는 암호 강도",
+ "Your data directory and files are probably accessible from the internet because the <code>.htaccess</code> file does not work." : "<code>.htaccess</code>파일이 작동하지 않아 당신의 데이터 디렉토리와 파일이 인터넷에 노출될 수도 있습니다.",
+ "For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "서버를 적절히 구성하기 위한 정보는  {linkStart}문서를 참조하세요{linkEnd}",
+ "Autoconfig file detected" : "자동구성 파일 감지됨",
+ "The setup form below is pre-filled with the values from the config file." : "아래 설정 입력란은 설정파일의 값으로 미리 입력됩니다.",
"Security warning" : "보안 경고",
+ "Create administration account" : "관리자 계정 생성",
+ "Administration account name" : "관리자 계정 이름",
+ "Administration account password" : "관리자 계정 암호",
"Storage & database" : "저장소 및 데이터베이스",
"Data folder" : "데이터 폴더",
+ "Database configuration" : "데이터베이스 구성",
+ "Only {firstAndOnlyDatabase} is available." : "오직 {firstAndOnlyDatabase}만 가능합니다.",
"Install and activate additional PHP modules to choose other database types." : "다른 데이터베이스 종류를 사용하려면 추가 PHP 모듈을 설치 및 활성화하십시오.",
"For more details check out the documentation." : "자세한 정보를 보려면 문서를 참고하십시오.",
"Performance warning" : "성능 경고",
@@ -218,6 +236,7 @@
"Database tablespace" : "데이터베이스 테이블 공간",
"Please specify the port number along with the host name (e.g., localhost:5432)." : "호스트 이름과 함께 포트 번호를 지정하십시오(예: localhost:5432)",
"Database host" : "데이터베이스 호스트",
+ "localhost" : "로컬호스트",
"Installing …" : "설치중…",
"Install" : "설치",
"Need help?" : "도움이 필요한가요?",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 7fa381ad4d7..97d0816124c 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -28,7 +28,7 @@ OC.L10N.register(
"State token missing" : "Falta o token de estado",
"Your login token is invalid or has expired" : "Seu token de login é inválido ou expirou",
"This community release of Nextcloud is unsupported and push notifications are limited." : "Esta versão da comunidade do Nextcloud não é compatível e as notificações por push são limitadas.",
- "Login" : "Entrar",
+ "Login" : "Login",
"Unsupported email length (>255)" : "Comprimento de e-mail não suportado (>255)",
"Password reset is disabled" : "A redefinição de senha está desabilitada",
"Could not reset password because the token is expired" : "Não foi possível redefinir a senha porque o token expirou",
@@ -43,9 +43,9 @@ OC.L10N.register(
"Task not found" : "Tarefa não encontrada",
"Internal error" : "Erro interno",
"Not found" : "Não encontrado",
- "Bad request" : "Pedido ruim",
- "Requested task type does not exist" : "O tipo de tarefa solicitada não existe",
- "Necessary language model provider is not available" : "O provedor de modelo de idioma necessário não está disponível",
+ "Bad request" : "Requisição inválida",
+ "Requested task type does not exist" : "O tipo de tarefa solicitado não existe",
+ "Necessary language model provider is not available" : "O provedor de modelo de linguagem necessário não está disponível",
"No text to image provider is available" : "Nenhum provedor de texto para imagem está disponível",
"Image not found" : "Imagem não encontrada",
"No translation provider available" : "Nenhum provedor de tradução disponível",
@@ -55,7 +55,7 @@ OC.L10N.register(
"Some of your link shares have been removed" : "Alguns dos seus compartilhamentos por link foram removidos",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Devido a um bug de segurança, tivemos que remover alguns dos seus compartilhamentos por link. Por favor, veja o link para mais informações.",
"The account limit of this instance is reached." : "O limite de contas desta instância foi atingido.",
- "Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Digite sua chave de assinatura no aplicativo de suporte para aumentar o limite da conta. Isso também concede a você todos os benefícios adicionais que o Nextcloud Enterprise oferece e é altamente recomendado para operações em empresas.",
+ "Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Digite sua chave de assinatura no aplicativo de suporte para aumentar o limite de contas. Isso também concede a você todos os benefícios adicionais que o Nextcloud Enterprise oferece e é altamente recomendado para operações em empresas.",
"Learn more ↗" : "Saiba mais ↗",
"Preparing update" : "Preparando a atualização",
"[%d / %d]: %s" : "[%d / %d]: %s",
@@ -63,13 +63,13 @@ OC.L10N.register(
"Repair info:" : "Informação do reparo:",
"Repair warning:" : "Aviso do reparo:",
"Repair error:" : "Erro do reparo:",
- "Please use the command line updater because updating via browser is disabled in your config.php." : "Use o atualizador de linha de comando porque a atualização via navegador está desativada em seu config.php.",
+ "Please use the command line updater because updating via browser is disabled in your config.php." : "Por favor, use o atualizador de linha de comando porque a atualização via navegador está desativada em seu config.php.",
"Turned on maintenance mode" : "Ativar o modo de manutenção",
"Turned off maintenance mode" : "Desativar o modo de manutenção",
"Maintenance mode is kept active" : "O modo de manutenção está sendo mantido como ativo",
"Updating database schema" : "Atualizando o schema do banco de dados",
"Updated database" : "Atualizar o banco de dados",
- "Update app \"%s\" from App Store" : "Atualizar aplicativo \"%s\" da App Store",
+ "Update app \"%s\" from App Store" : "Atualizar aplicativo \"%s\" da Loja de Aplicativos",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Verificando se o schema do banco de dados para %s pode ser atualizado (isso pode levar muito tempo, dependendo do tamanho do banco de dados)",
"Updated \"%1$s\" to %2$s" : "Atualizou \"%1$s\" para %2$s",
"Set log level to debug" : "Definir o nível de log para debug",
@@ -111,33 +111,33 @@ OC.L10N.register(
"Create share" : "Criar compartilhamento",
"Direct link copied to clipboard" : "Link direto copiado para a área de transferência",
"Please copy the link manually:" : "Copie o link manualmente:",
- "Custom date range" : "Data personalizada",
+ "Custom date range" : "Intervalo personalizado",
"Pick start date" : "Escolha uma data de início",
"Pick end date" : "Escolha uma data de fim",
- "Search in date range" : "Pesquise em um intervalo de data",
+ "Search in date range" : "Pesquisar neste intervalo",
"Search in current app" : "Pesquisar no aplicativo atual",
"Clear search" : "Limpar pesquisa",
- "Search everywhere" : "Pesquise em qualquer lugar",
- "Searching …" : "Pesquisando...",
+ "Search everywhere" : "Pesquisar em qualquer lugar",
+ "Searching …" : "Pesquisando …",
"Start typing to search" : "Comece a digitar para pesquisar",
"No matching results" : "Nenhum resultado encontrado",
"Today" : "Hoje",
"Last 7 days" : "Últimos 7 dias",
"Last 30 days" : "Últimos 30 dias",
"This year" : "Este ano",
- "Last year" : "Ano passado",
+ "Last year" : "Último ano",
"Unified search" : "Pesquisa unificada",
- "Search apps, files, tags, messages" : "Procure por apps, arquivos, etiquetas, mensagens",
+ "Search apps, files, tags, messages" : "Pesquise aplicativos, arquivos, etiquetas, mensagens",
"Places" : "Lugares",
"Date" : "Data",
- "Search people" : "Pesquisar pessoas",
+ "Search people" : "Pesquise pessoas",
"People" : "Pessoas",
"Filter in current view" : "Filtrar na visualização atual",
"Results" : "Resultados",
"Load more results" : "Carregar mais resultados",
"Search in" : "Pesquisar em",
"Log in" : "Entrar",
- "Logging in …" : "Entrando...",
+ "Logging in …" : "Entrando …",
"Log in to {productName}" : "Faça login em {productName}",
"Wrong login or password." : "Login ou senha incorretos.",
"This account is disabled" : "Esta conta está desativada",
@@ -172,10 +172,10 @@ OC.L10N.register(
"Simple email app nicely integrated with Files, Contacts and Calendar." : "Aplicativo de e-mail simples e bem integrado com Arquivos, Contatos e Calendário.",
"Chatting, video calls, screen sharing, online meetings and web conferencing – in your browser and with mobile apps." : "Bate-papo, vídeo chamadas, compartilhamento de tela, reuniões online e conferência na web - no seu navegador e com aplicativos móveis.",
"Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Documentos colaborativos, planilhas e apresentações, construídos no Collabora Online.",
- "Distraction free note taking app." : "Aplicativo de anotações sem distrações.",
+ "Distraction free note taking app." : "Aplicativo de notas sem distrações.",
"Recommended apps" : "Aplicativos recomendados",
"Loading apps …" : "Carregando aplicativos...",
- "Could not fetch list of apps from the App Store." : "Não foi possível buscar a lista de aplicativos na App Store.",
+ "Could not fetch list of apps from the App Store." : "Não foi possível buscar a lista de aplicativos da Loje de Aplicativos.",
"App download or installation failed" : "O download ou a instalação do aplicativo falhou",
"Cannot install this app because it is not compatible" : "Não foi possível instalar este aplicativo pois não é compatível.",
"Cannot install this app" : "Não foi possível instalar este aplicativo.",
@@ -198,7 +198,7 @@ OC.L10N.register(
"Press Enter to start searching" : "Pressione Enter para iniciar a pesquisa",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["Digite {minSearchLength} caractere ou mais para pesquisar","Digite {minSearchLength} caracteres ou mais para pesquisar","Digite {minSearchLength} caracteres ou mais para pesquisar"],
"An error occurred while searching for {type}" : "Ocorreu um erro ao pesquisar por {type}",
- "Search starts once you start typing and results may be reached with the arrow keys" : "A pesquisa iniciará assim que você começar a digitar e os resultados você pode navegar com as setas do teclado",
+ "Search starts once you start typing and results may be reached with the arrow keys" : "A pesquisa iniciará assim que você começar a digitar e você pode navegar nos resultados com as teclas de seta",
"Search for {name} only" : "Pesquisar somente por {name}",
"Loading more results …" : "Carregando mais resultados…",
"Forgot password?" : "Esqueceu a senha?",
@@ -213,11 +213,11 @@ OC.L10N.register(
"Password is strong" : "A senha é forte",
"Password is very strong" : "A senha é muito forte",
"Password is extremely strong" : "A senha é extremamente forte",
- "Unknown password strength" : "Força desconhecida da senha",
+ "Unknown password strength" : "Força da senha é desconhecida",
"Your data directory and files are probably accessible from the internet because the <code>.htaccess</code> file does not work." : "Seu diretório de dados e arquivos provavelmente podem ser acessados pela Internet porque o arquivo <code>.htaccess</code> não funciona.",
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Para obter informações sobre como configurar corretamente seu servidor, {linkStart}consulte a documentação{linkEnd}",
"Autoconfig file detected" : "Arquivo de configuração automática detectado",
- "The setup form below is pre-filled with the values from the config file." : "O formulário de configuração abaixo é pré-preenchido com os valores do arquivo de configuração.",
+ "The setup form below is pre-filled with the values from the config file." : "O formulário de configuração abaixo é preenchido previamente com os valores do arquivo de configuração.",
"Security warning" : "Alerta de segurança",
"Create administration account" : "Criar conta de administração",
"Administration account name" : "Nome da conta de administração",
@@ -236,7 +236,7 @@ OC.L10N.register(
"Database password" : "Senha do banco de dados",
"Database name" : "Nome do banco de dados",
"Database tablespace" : "Espaço de tabela do banco de dados",
- "Please specify the port number along with the host name (e.g., localhost:5432)." : "Por favor especifique o nome do host e porta (ex., localhost:5432).",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Por favor, especifique o nome do host e a porta (p. ex., localhost:5432).",
"Database host" : "Host do banco de dados",
"localhost" : "localhost",
"Installing …" : "Instalando …",
@@ -245,7 +245,7 @@ OC.L10N.register(
"See the documentation" : "Veja a documentação",
"{name} version {version} and above" : "{name} versão {version} e superior",
"This browser is not supported" : "Este navegador não é compatível",
- "Your browser is not supported. Please upgrade to a newer version or a supported one." : "Seu navegador não é suportado. Atualize para uma versão mais recente ou compatível.",
+ "Your browser is not supported. Please upgrade to a newer version or a supported one." : "Seu navegador não é compatível. Por favor, atualize para uma versão mais recente ou compatível.",
"Continue with this unsupported browser" : "Continuar com este navegador não compatível",
"Supported versions" : "Versões compatíveis",
"Search {types} …" : "Pesquisar {types}…",
@@ -294,7 +294,7 @@ OC.L10N.register(
"Rename" : "Renomear",
"Collaborative tags" : "Etiquetas colaborativas",
"No tags found" : "Nenhuma etiqueta encontrada",
- "Clipboard not available, please copy manually" : "Área de transferência não disponível, copie manualmente",
+ "Clipboard not available, please copy manually" : "A área de transferência não está disponível, por favor, copie manualmente",
"Personal" : "Pessoal",
"Accounts" : "Contas",
"Admin" : "Administrar",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index cd9e2ff9121..193ab9c9496 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -26,7 +26,7 @@
"State token missing" : "Falta o token de estado",
"Your login token is invalid or has expired" : "Seu token de login é inválido ou expirou",
"This community release of Nextcloud is unsupported and push notifications are limited." : "Esta versão da comunidade do Nextcloud não é compatível e as notificações por push são limitadas.",
- "Login" : "Entrar",
+ "Login" : "Login",
"Unsupported email length (>255)" : "Comprimento de e-mail não suportado (>255)",
"Password reset is disabled" : "A redefinição de senha está desabilitada",
"Could not reset password because the token is expired" : "Não foi possível redefinir a senha porque o token expirou",
@@ -41,9 +41,9 @@
"Task not found" : "Tarefa não encontrada",
"Internal error" : "Erro interno",
"Not found" : "Não encontrado",
- "Bad request" : "Pedido ruim",
- "Requested task type does not exist" : "O tipo de tarefa solicitada não existe",
- "Necessary language model provider is not available" : "O provedor de modelo de idioma necessário não está disponível",
+ "Bad request" : "Requisição inválida",
+ "Requested task type does not exist" : "O tipo de tarefa solicitado não existe",
+ "Necessary language model provider is not available" : "O provedor de modelo de linguagem necessário não está disponível",
"No text to image provider is available" : "Nenhum provedor de texto para imagem está disponível",
"Image not found" : "Imagem não encontrada",
"No translation provider available" : "Nenhum provedor de tradução disponível",
@@ -53,7 +53,7 @@
"Some of your link shares have been removed" : "Alguns dos seus compartilhamentos por link foram removidos",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Devido a um bug de segurança, tivemos que remover alguns dos seus compartilhamentos por link. Por favor, veja o link para mais informações.",
"The account limit of this instance is reached." : "O limite de contas desta instância foi atingido.",
- "Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Digite sua chave de assinatura no aplicativo de suporte para aumentar o limite da conta. Isso também concede a você todos os benefícios adicionais que o Nextcloud Enterprise oferece e é altamente recomendado para operações em empresas.",
+ "Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Digite sua chave de assinatura no aplicativo de suporte para aumentar o limite de contas. Isso também concede a você todos os benefícios adicionais que o Nextcloud Enterprise oferece e é altamente recomendado para operações em empresas.",
"Learn more ↗" : "Saiba mais ↗",
"Preparing update" : "Preparando a atualização",
"[%d / %d]: %s" : "[%d / %d]: %s",
@@ -61,13 +61,13 @@
"Repair info:" : "Informação do reparo:",
"Repair warning:" : "Aviso do reparo:",
"Repair error:" : "Erro do reparo:",
- "Please use the command line updater because updating via browser is disabled in your config.php." : "Use o atualizador de linha de comando porque a atualização via navegador está desativada em seu config.php.",
+ "Please use the command line updater because updating via browser is disabled in your config.php." : "Por favor, use o atualizador de linha de comando porque a atualização via navegador está desativada em seu config.php.",
"Turned on maintenance mode" : "Ativar o modo de manutenção",
"Turned off maintenance mode" : "Desativar o modo de manutenção",
"Maintenance mode is kept active" : "O modo de manutenção está sendo mantido como ativo",
"Updating database schema" : "Atualizando o schema do banco de dados",
"Updated database" : "Atualizar o banco de dados",
- "Update app \"%s\" from App Store" : "Atualizar aplicativo \"%s\" da App Store",
+ "Update app \"%s\" from App Store" : "Atualizar aplicativo \"%s\" da Loja de Aplicativos",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Verificando se o schema do banco de dados para %s pode ser atualizado (isso pode levar muito tempo, dependendo do tamanho do banco de dados)",
"Updated \"%1$s\" to %2$s" : "Atualizou \"%1$s\" para %2$s",
"Set log level to debug" : "Definir o nível de log para debug",
@@ -109,33 +109,33 @@
"Create share" : "Criar compartilhamento",
"Direct link copied to clipboard" : "Link direto copiado para a área de transferência",
"Please copy the link manually:" : "Copie o link manualmente:",
- "Custom date range" : "Data personalizada",
+ "Custom date range" : "Intervalo personalizado",
"Pick start date" : "Escolha uma data de início",
"Pick end date" : "Escolha uma data de fim",
- "Search in date range" : "Pesquise em um intervalo de data",
+ "Search in date range" : "Pesquisar neste intervalo",
"Search in current app" : "Pesquisar no aplicativo atual",
"Clear search" : "Limpar pesquisa",
- "Search everywhere" : "Pesquise em qualquer lugar",
- "Searching …" : "Pesquisando...",
+ "Search everywhere" : "Pesquisar em qualquer lugar",
+ "Searching …" : "Pesquisando …",
"Start typing to search" : "Comece a digitar para pesquisar",
"No matching results" : "Nenhum resultado encontrado",
"Today" : "Hoje",
"Last 7 days" : "Últimos 7 dias",
"Last 30 days" : "Últimos 30 dias",
"This year" : "Este ano",
- "Last year" : "Ano passado",
+ "Last year" : "Último ano",
"Unified search" : "Pesquisa unificada",
- "Search apps, files, tags, messages" : "Procure por apps, arquivos, etiquetas, mensagens",
+ "Search apps, files, tags, messages" : "Pesquise aplicativos, arquivos, etiquetas, mensagens",
"Places" : "Lugares",
"Date" : "Data",
- "Search people" : "Pesquisar pessoas",
+ "Search people" : "Pesquise pessoas",
"People" : "Pessoas",
"Filter in current view" : "Filtrar na visualização atual",
"Results" : "Resultados",
"Load more results" : "Carregar mais resultados",
"Search in" : "Pesquisar em",
"Log in" : "Entrar",
- "Logging in …" : "Entrando...",
+ "Logging in …" : "Entrando …",
"Log in to {productName}" : "Faça login em {productName}",
"Wrong login or password." : "Login ou senha incorretos.",
"This account is disabled" : "Esta conta está desativada",
@@ -170,10 +170,10 @@
"Simple email app nicely integrated with Files, Contacts and Calendar." : "Aplicativo de e-mail simples e bem integrado com Arquivos, Contatos e Calendário.",
"Chatting, video calls, screen sharing, online meetings and web conferencing – in your browser and with mobile apps." : "Bate-papo, vídeo chamadas, compartilhamento de tela, reuniões online e conferência na web - no seu navegador e com aplicativos móveis.",
"Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Documentos colaborativos, planilhas e apresentações, construídos no Collabora Online.",
- "Distraction free note taking app." : "Aplicativo de anotações sem distrações.",
+ "Distraction free note taking app." : "Aplicativo de notas sem distrações.",
"Recommended apps" : "Aplicativos recomendados",
"Loading apps …" : "Carregando aplicativos...",
- "Could not fetch list of apps from the App Store." : "Não foi possível buscar a lista de aplicativos na App Store.",
+ "Could not fetch list of apps from the App Store." : "Não foi possível buscar a lista de aplicativos da Loje de Aplicativos.",
"App download or installation failed" : "O download ou a instalação do aplicativo falhou",
"Cannot install this app because it is not compatible" : "Não foi possível instalar este aplicativo pois não é compatível.",
"Cannot install this app" : "Não foi possível instalar este aplicativo.",
@@ -196,7 +196,7 @@
"Press Enter to start searching" : "Pressione Enter para iniciar a pesquisa",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["Digite {minSearchLength} caractere ou mais para pesquisar","Digite {minSearchLength} caracteres ou mais para pesquisar","Digite {minSearchLength} caracteres ou mais para pesquisar"],
"An error occurred while searching for {type}" : "Ocorreu um erro ao pesquisar por {type}",
- "Search starts once you start typing and results may be reached with the arrow keys" : "A pesquisa iniciará assim que você começar a digitar e os resultados você pode navegar com as setas do teclado",
+ "Search starts once you start typing and results may be reached with the arrow keys" : "A pesquisa iniciará assim que você começar a digitar e você pode navegar nos resultados com as teclas de seta",
"Search for {name} only" : "Pesquisar somente por {name}",
"Loading more results …" : "Carregando mais resultados…",
"Forgot password?" : "Esqueceu a senha?",
@@ -211,11 +211,11 @@
"Password is strong" : "A senha é forte",
"Password is very strong" : "A senha é muito forte",
"Password is extremely strong" : "A senha é extremamente forte",
- "Unknown password strength" : "Força desconhecida da senha",
+ "Unknown password strength" : "Força da senha é desconhecida",
"Your data directory and files are probably accessible from the internet because the <code>.htaccess</code> file does not work." : "Seu diretório de dados e arquivos provavelmente podem ser acessados pela Internet porque o arquivo <code>.htaccess</code> não funciona.",
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Para obter informações sobre como configurar corretamente seu servidor, {linkStart}consulte a documentação{linkEnd}",
"Autoconfig file detected" : "Arquivo de configuração automática detectado",
- "The setup form below is pre-filled with the values from the config file." : "O formulário de configuração abaixo é pré-preenchido com os valores do arquivo de configuração.",
+ "The setup form below is pre-filled with the values from the config file." : "O formulário de configuração abaixo é preenchido previamente com os valores do arquivo de configuração.",
"Security warning" : "Alerta de segurança",
"Create administration account" : "Criar conta de administração",
"Administration account name" : "Nome da conta de administração",
@@ -234,7 +234,7 @@
"Database password" : "Senha do banco de dados",
"Database name" : "Nome do banco de dados",
"Database tablespace" : "Espaço de tabela do banco de dados",
- "Please specify the port number along with the host name (e.g., localhost:5432)." : "Por favor especifique o nome do host e porta (ex., localhost:5432).",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Por favor, especifique o nome do host e a porta (p. ex., localhost:5432).",
"Database host" : "Host do banco de dados",
"localhost" : "localhost",
"Installing …" : "Instalando …",
@@ -243,7 +243,7 @@
"See the documentation" : "Veja a documentação",
"{name} version {version} and above" : "{name} versão {version} e superior",
"This browser is not supported" : "Este navegador não é compatível",
- "Your browser is not supported. Please upgrade to a newer version or a supported one." : "Seu navegador não é suportado. Atualize para uma versão mais recente ou compatível.",
+ "Your browser is not supported. Please upgrade to a newer version or a supported one." : "Seu navegador não é compatível. Por favor, atualize para uma versão mais recente ou compatível.",
"Continue with this unsupported browser" : "Continuar com este navegador não compatível",
"Supported versions" : "Versões compatíveis",
"Search {types} …" : "Pesquisar {types}…",
@@ -292,7 +292,7 @@
"Rename" : "Renomear",
"Collaborative tags" : "Etiquetas colaborativas",
"No tags found" : "Nenhuma etiqueta encontrada",
- "Clipboard not available, please copy manually" : "Área de transferência não disponível, copie manualmente",
+ "Clipboard not available, please copy manually" : "A área de transferência não está disponível, por favor, copie manualmente",
"Personal" : "Pessoal",
"Accounts" : "Contas",
"Admin" : "Administrar",
diff --git a/cypress/e2e/settings/users.cy.ts b/cypress/e2e/settings/users.cy.ts
index 417191b26f8..5b8726e92ca 100644
--- a/cypress/e2e/settings/users.cy.ts
+++ b/cypress/e2e/settings/users.cy.ts
@@ -115,12 +115,13 @@ describe('Settings: Create and delete accounts', function() {
// The "Delete account" action in the actions menu is shown and clicked
cy.get('.action-item__popper .action').contains('Delete account').should('exist').click({ force: true })
- // And confirmation dialog accepted
- cy.get('.nc-generic-dialog button').contains(`Delete ${testUser.userId}`).click({ force: true })
// Make sure no confirmation modal is shown
handlePasswordConfirmation(admin.password)
+ // And confirmation dialog accepted
+ cy.get('.nc-generic-dialog button').contains(`Delete ${testUser.userId}`).click({ force: true })
+
// deleted clicked the user is not shown anymore
getUserListRow(testUser.userId).should('not.exist')
})
diff --git a/dist/4542-4542.js b/dist/4542-4542.js
deleted file mode 100644
index c2bdbbd3ef5..00000000000
--- a/dist/4542-4542.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[4542],{17816:function(e){e.exports=function(){"use strict";function e(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}var t=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(t,i){var r;r=function(){return function t(i,r,n){function s(o,l){if(!r[o]){if(!i[o]){if(!l&&e)return e();if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var h=r[o]={exports:{}};i[o][0].call(h.exports,(function(e){return s(i[o][1][e]||e)}),h,h.exports,t,i,r,n)}return r[o].exports}for(var a=e,o=0;o<n.length;o++)s(n[o]);return s}({1:[function(e,t,i){t.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},{}],2:[function(e,t,i){var r=e("./utils").getSymbolSize;i.getRowColCoords=function(e){if(1===e)return[];for(var t=Math.floor(e/7)+2,i=r(e),n=145===i?26:2*Math.ceil((i-13)/(2*t-2)),s=[i-7],a=1;a<t-1;a++)s[a]=s[a-1]-n;return s.push(6),s.reverse()},i.getPositions=function(e){for(var t=[],r=i.getRowColCoords(e),n=r.length,s=0;s<n;s++)for(var a=0;a<n;a++)0===s&&0===a||0===s&&a===n-1||s===n-1&&0===a||t.push([r[s],r[a]]);return t}},{"./utils":21}],3:[function(e,t,i){var r=e("./mode"),n=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function s(e){this.mode=r.ALPHANUMERIC,this.data=e}s.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(e){var t;for(t=0;t+2<=this.data.length;t+=2){var i=45*n.indexOf(this.data[t]);i+=n.indexOf(this.data[t+1]),e.put(i,11)}this.data.length%2&&e.put(n.indexOf(this.data[t]),6)},t.exports=s},{"./mode":14}],4:[function(e,t,i){function r(){this.buffer=[],this.length=0}r.prototype={get:function(e){var t=Math.floor(e/8);return 1==(this.buffer[t]>>>7-e%8&1)},put:function(e,t){for(var i=0;i<t;i++)this.putBit(1==(e>>>t-i-1&1))},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=r},{}],5:[function(e,t,i){var r=e("../utils/buffer");function n(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=r.alloc(e*e),this.reservedBit=r.alloc(e*e)}n.prototype.set=function(e,t,i,r){var n=e*this.size+t;this.data[n]=i,r&&(this.reservedBit[n]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,i){this.data[e*this.size+t]^=i},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n},{"../utils/buffer":28}],6:[function(e,t,i){var r=e("../utils/buffer"),n=e("./mode");function s(e){this.mode=n.BYTE,this.data=r.from(e)}s.getBitsLength=function(e){return 8*e},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(e){for(var t=0,i=this.data.length;t<i;t++)e.put(this.data[t],8)},t.exports=s},{"../utils/buffer":28,"./mode":14}],7:[function(e,t,i){var r=e("./error-correction-level"),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],s=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];i.getBlocksCount=function(e,t){switch(t){case r.L:return n[4*(e-1)+0];case r.M:return n[4*(e-1)+1];case r.Q:return n[4*(e-1)+2];case r.H:return n[4*(e-1)+3];default:return}},i.getTotalCodewordsCount=function(e,t){switch(t){case r.L:return s[4*(e-1)+0];case r.M:return s[4*(e-1)+1];case r.Q:return s[4*(e-1)+2];case r.H:return s[4*(e-1)+3];default:return}}},{"./error-correction-level":8}],8:[function(e,t,i){i.L={bit:1},i.M={bit:0},i.Q={bit:3},i.H={bit:2},i.isValid=function(e){return e&&void 0!==e.bit&&e.bit>=0&&e.bit<4},i.from=function(e,t){if(i.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw new Error("Param is not a string");switch(e.toLowerCase()){case"l":case"low":return i.L;case"m":case"medium":return i.M;case"q":case"quartile":return i.Q;case"h":case"high":return i.H;default:throw new Error("Unknown EC Level: "+e)}}(e)}catch(e){return t}}},{}],9:[function(e,t,i){var r=e("./utils").getSymbolSize;i.getPositions=function(e){var t=r(e);return[[0,0],[t-7,0],[0,t-7]]}},{"./utils":21}],10:[function(e,t,i){var r=e("./utils"),n=r.getBCHDigit(1335);i.getEncodedBits=function(e,t){for(var i=e.bit<<3|t,s=i<<10;r.getBCHDigit(s)-n>=0;)s^=1335<<r.getBCHDigit(s)-n;return 21522^(i<<10|s)}},{"./utils":21}],11:[function(e,t,i){var r=e("../utils/buffer"),n=r.alloc(512),s=r.alloc(256);!function(){for(var e=1,t=0;t<255;t++)n[t]=e,s[e]=t,256&(e<<=1)&&(e^=285);for(t=255;t<512;t++)n[t]=n[t-255]}(),i.log=function(e){if(e<1)throw new Error("log("+e+")");return s[e]},i.exp=function(e){return n[e]},i.mul=function(e,t){return 0===e||0===t?0:n[s[e]+s[t]]}},{"../utils/buffer":28}],12:[function(e,t,i){var r=e("./mode"),n=e("./utils");function s(e){this.mode=r.KANJI,this.data=e}s.getBitsLength=function(e){return 13*e},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(e){var t;for(t=0;t<this.data.length;t++){var i=n.toSJIS(this.data[t]);if(i>=33088&&i<=40956)i-=33088;else{if(!(i>=57408&&i<=60351))throw new Error("Invalid SJIS character: "+this.data[t]+"\nMake sure your charset is UTF-8");i-=49472}i=192*(i>>>8&255)+(255&i),e.put(i,13)}},t.exports=s},{"./mode":14,"./utils":21}],13:[function(e,t,i){i.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var r=3,n=3,s=40,a=10;function o(e,t,r){switch(e){case i.Patterns.PATTERN000:return(t+r)%2==0;case i.Patterns.PATTERN001:return t%2==0;case i.Patterns.PATTERN010:return r%3==0;case i.Patterns.PATTERN011:return(t+r)%3==0;case i.Patterns.PATTERN100:return(Math.floor(t/2)+Math.floor(r/3))%2==0;case i.Patterns.PATTERN101:return t*r%2+t*r%3==0;case i.Patterns.PATTERN110:return(t*r%2+t*r%3)%2==0;case i.Patterns.PATTERN111:return(t*r%3+(t+r)%2)%2==0;default:throw new Error("bad maskPattern:"+e)}}i.isValid=function(e){return null!=e&&""!==e&&!isNaN(e)&&e>=0&&e<=7},i.from=function(e){return i.isValid(e)?parseInt(e,10):void 0},i.getPenaltyN1=function(e){for(var t=e.size,i=0,n=0,s=0,a=null,o=null,l=0;l<t;l++){n=s=0,a=o=null;for(var c=0;c<t;c++){var h=e.get(l,c);h===a?n++:(n>=5&&(i+=r+(n-5)),a=h,n=1),(h=e.get(c,l))===o?s++:(s>=5&&(i+=r+(s-5)),o=h,s=1)}n>=5&&(i+=r+(n-5)),s>=5&&(i+=r+(s-5))}return i},i.getPenaltyN2=function(e){for(var t=e.size,i=0,r=0;r<t-1;r++)for(var s=0;s<t-1;s++){var a=e.get(r,s)+e.get(r,s+1)+e.get(r+1,s)+e.get(r+1,s+1);4!==a&&0!==a||i++}return i*n},i.getPenaltyN3=function(e){for(var t=e.size,i=0,r=0,n=0,a=0;a<t;a++){r=n=0;for(var o=0;o<t;o++)r=r<<1&2047|e.get(a,o),o>=10&&(1488===r||93===r)&&i++,n=n<<1&2047|e.get(o,a),o>=10&&(1488===n||93===n)&&i++}return i*s},i.getPenaltyN4=function(e){for(var t=0,i=e.data.length,r=0;r<i;r++)t+=e.data[r];return Math.abs(Math.ceil(100*t/i/5)-10)*a},i.applyMask=function(e,t){for(var i=t.size,r=0;r<i;r++)for(var n=0;n<i;n++)t.isReserved(n,r)||t.xor(n,r,o(e,n,r))},i.getBestMask=function(e,t){for(var r=Object.keys(i.Patterns).length,n=0,s=1/0,a=0;a<r;a++){t(a),i.applyMask(a,e);var o=i.getPenaltyN1(e)+i.getPenaltyN2(e)+i.getPenaltyN3(e)+i.getPenaltyN4(e);i.applyMask(a,e),o<s&&(s=o,n=a)}return n}},{}],14:[function(e,t,i){var r=e("./version-check"),n=e("./regex");i.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},i.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},i.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},i.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},i.MIXED={bit:-1},i.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!r.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]},i.getBestModeForData=function(e){return n.testNumeric(e)?i.NUMERIC:n.testAlphanumeric(e)?i.ALPHANUMERIC:n.testKanji(e)?i.KANJI:i.BYTE},i.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")},i.isValid=function(e){return e&&e.bit&&e.ccBits},i.from=function(e,t){if(i.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw new Error("Param is not a string");switch(e.toLowerCase()){case"numeric":return i.NUMERIC;case"alphanumeric":return i.ALPHANUMERIC;case"kanji":return i.KANJI;case"byte":return i.BYTE;default:throw new Error("Unknown mode: "+e)}}(e)}catch(e){return t}}},{"./regex":19,"./version-check":22}],15:[function(e,t,i){var r=e("./mode");function n(e){this.mode=r.NUMERIC,this.data=e.toString()}n.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(e){var t,i,r;for(t=0;t+3<=this.data.length;t+=3)i=this.data.substr(t,3),r=parseInt(i,10),e.put(r,10);var n=this.data.length-t;n>0&&(i=this.data.substr(t),r=parseInt(i,10),e.put(r,3*n+1))},t.exports=n},{"./mode":14}],16:[function(e,t,i){var r=e("../utils/buffer"),n=e("./galois-field");i.mul=function(e,t){for(var i=r.alloc(e.length+t.length-1),s=0;s<e.length;s++)for(var a=0;a<t.length;a++)i[s+a]^=n.mul(e[s],t[a]);return i},i.mod=function(e,t){for(var i=r.from(e);i.length-t.length>=0;){for(var s=i[0],a=0;a<t.length;a++)i[a]^=n.mul(t[a],s);for(var o=0;o<i.length&&0===i[o];)o++;i=i.slice(o)}return i},i.generateECPolynomial=function(e){for(var t=r.from([1]),s=0;s<e;s++)t=i.mul(t,[1,n.exp(s)]);return t}},{"../utils/buffer":28,"./galois-field":11}],17:[function(e,t,i){var r=e("../utils/buffer"),n=e("./utils"),s=e("./error-correction-level"),a=e("./bit-buffer"),o=e("./bit-matrix"),l=e("./alignment-pattern"),c=e("./finder-pattern"),h=e("./mask-pattern"),u=e("./error-correction-code"),d=e("./reed-solomon-encoder"),p=e("./version"),f=e("./format-info"),g=e("./mode"),A=e("./segments"),m=e("isarray");function v(e,t,i){var r,n,s=e.size,a=f.getEncodedBits(t,i);for(r=0;r<15;r++)n=1==(a>>r&1),r<6?e.set(r,8,n,!0):r<8?e.set(r+1,8,n,!0):e.set(s-15+r,8,n,!0),r<8?e.set(8,s-r-1,n,!0):r<9?e.set(8,15-r-1+1,n,!0):e.set(8,15-r-1,n,!0);e.set(s-8,8,1,!0)}function y(e,t,i){var s=new a;i.forEach((function(t){s.put(t.mode.bit,4),s.put(t.getLength(),g.getCharCountIndicator(t.mode,e)),t.write(s)}));var o=8*(n.getSymbolTotalCodewords(e)-u.getTotalCodewordsCount(e,t));for(s.getLengthInBits()+4<=o&&s.put(0,4);s.getLengthInBits()%8!=0;)s.putBit(0);for(var l=(o-s.getLengthInBits())/8,c=0;c<l;c++)s.put(c%2?17:236,8);return function(e,t,i){for(var s=n.getSymbolTotalCodewords(t),a=s-u.getTotalCodewordsCount(t,i),o=u.getBlocksCount(t,i),l=o-s%o,c=Math.floor(s/o),h=Math.floor(a/o),p=h+1,f=c-h,g=new d(f),A=0,m=new Array(o),v=new Array(o),y=0,C=r.from(e.buffer),w=0;w<o;w++){var b=w<l?h:p;m[w]=C.slice(A,A+b),v[w]=g.encode(m[w]),A+=b,y=Math.max(y,b)}var E,_,x=r.alloc(s),S=0;for(E=0;E<y;E++)for(_=0;_<o;_++)E<m[_].length&&(x[S++]=m[_][E]);for(E=0;E<f;E++)for(_=0;_<o;_++)x[S++]=v[_][E];return x}(s,e,t)}function C(e,t,i,r){var s;if(m(e))s=A.fromArray(e);else{if("string"!=typeof e)throw new Error("Invalid data");var a=t;if(!a){var u=A.rawSplit(e);a=p.getBestVersionForData(u,i)}s=A.fromString(e,a||40)}var d=p.getBestVersionForData(s,i);if(!d)throw new Error("The amount of data is too big to be stored in a QR Code");if(t){if(t<d)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+d+".\n")}else t=d;var f=y(t,i,s),g=n.getSymbolSize(t),C=new o(g);return function(e,t){for(var i=e.size,r=c.getPositions(t),n=0;n<r.length;n++)for(var s=r[n][0],a=r[n][1],o=-1;o<=7;o++)if(!(s+o<=-1||i<=s+o))for(var l=-1;l<=7;l++)a+l<=-1||i<=a+l||(o>=0&&o<=6&&(0===l||6===l)||l>=0&&l<=6&&(0===o||6===o)||o>=2&&o<=4&&l>=2&&l<=4?e.set(s+o,a+l,!0,!0):e.set(s+o,a+l,!1,!0))}(C,t),function(e){for(var t=e.size,i=8;i<t-8;i++){var r=i%2==0;e.set(i,6,r,!0),e.set(6,i,r,!0)}}(C),function(e,t){for(var i=l.getPositions(t),r=0;r<i.length;r++)for(var n=i[r][0],s=i[r][1],a=-2;a<=2;a++)for(var o=-2;o<=2;o++)-2===a||2===a||-2===o||2===o||0===a&&0===o?e.set(n+a,s+o,!0,!0):e.set(n+a,s+o,!1,!0)}(C,t),v(C,i,0),t>=7&&function(e,t){for(var i,r,n,s=e.size,a=p.getEncodedBits(t),o=0;o<18;o++)i=Math.floor(o/3),r=o%3+s-8-3,n=1==(a>>o&1),e.set(i,r,n,!0),e.set(r,i,n,!0)}(C,t),function(e,t){for(var i=e.size,r=-1,n=i-1,s=7,a=0,o=i-1;o>0;o-=2)for(6===o&&o--;;){for(var l=0;l<2;l++)if(!e.isReserved(n,o-l)){var c=!1;a<t.length&&(c=1==(t[a]>>>s&1)),e.set(n,o-l,c),-1==--s&&(a++,s=7)}if((n+=r)<0||i<=n){n-=r,r=-r;break}}}(C,f),isNaN(r)&&(r=h.getBestMask(C,v.bind(null,C,i))),h.applyMask(r,C),v(C,i,r),{modules:C,version:t,errorCorrectionLevel:i,maskPattern:r,segments:s}}i.create=function(e,t){if(void 0===e||""===e)throw new Error("No input text");var i,r,a=s.M;return void 0!==t&&(a=s.from(t.errorCorrectionLevel,s.M),i=p.from(t.version),r=h.from(t.maskPattern),t.toSJISFunc&&n.setToSJISFunction(t.toSJISFunc)),C(e,i,a,r)}},{"../utils/buffer":28,"./alignment-pattern":2,"./bit-buffer":4,"./bit-matrix":5,"./error-correction-code":7,"./error-correction-level":8,"./finder-pattern":9,"./format-info":10,"./mask-pattern":13,"./mode":14,"./reed-solomon-encoder":18,"./segments":20,"./utils":21,"./version":23,isarray:33}],18:[function(e,t,i){var r=e("../utils/buffer"),n=e("./polynomial"),s=e("buffer").Buffer;function a(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}a.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},a.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");var t=r.alloc(this.degree),i=s.concat([e,t],e.length+this.degree),a=n.mod(i,this.genPoly),o=this.degree-a.length;if(o>0){var l=r.alloc(this.degree);return a.copy(l,o),l}return a},t.exports=a},{"../utils/buffer":28,"./polynomial":16,buffer:30}],19:[function(e,t,i){var r="[0-9]+",n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+",s="(?:(?![A-Z0-9 $%*+\\-./:]|"+(n=n.replace(/u/g,"\\u"))+")(?:.|[\r\n]))+";i.KANJI=new RegExp(n,"g"),i.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),i.BYTE=new RegExp(s,"g"),i.NUMERIC=new RegExp(r,"g"),i.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");var a=new RegExp("^"+n+"$"),o=new RegExp("^"+r+"$"),l=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");i.testKanji=function(e){return a.test(e)},i.testNumeric=function(e){return o.test(e)},i.testAlphanumeric=function(e){return l.test(e)}},{}],20:[function(e,t,i){var r=e("./mode"),n=e("./numeric-data"),s=e("./alphanumeric-data"),a=e("./byte-data"),o=e("./kanji-data"),l=e("./regex"),c=e("./utils"),h=e("dijkstrajs");function u(e){return unescape(encodeURIComponent(e)).length}function d(e,t,i){for(var r,n=[];null!==(r=e.exec(i));)n.push({data:r[0],index:r.index,mode:t,length:r[0].length});return n}function p(e){var t,i,n=d(l.NUMERIC,r.NUMERIC,e),s=d(l.ALPHANUMERIC,r.ALPHANUMERIC,e);return c.isKanjiModeEnabled()?(t=d(l.BYTE,r.BYTE,e),i=d(l.KANJI,r.KANJI,e)):(t=d(l.BYTE_KANJI,r.BYTE,e),i=[]),n.concat(s,t,i).sort((function(e,t){return e.index-t.index})).map((function(e){return{data:e.data,mode:e.mode,length:e.length}}))}function f(e,t){switch(t){case r.NUMERIC:return n.getBitsLength(e);case r.ALPHANUMERIC:return s.getBitsLength(e);case r.KANJI:return o.getBitsLength(e);case r.BYTE:return a.getBitsLength(e)}}function g(e,t){var i,l=r.getBestModeForData(e);if((i=r.from(t,l))!==r.BYTE&&i.bit<l.bit)throw new Error('"'+e+'" cannot be encoded with mode '+r.toString(i)+".\n Suggested mode is: "+r.toString(l));switch(i!==r.KANJI||c.isKanjiModeEnabled()||(i=r.BYTE),i){case r.NUMERIC:return new n(e);case r.ALPHANUMERIC:return new s(e);case r.KANJI:return new o(e);case r.BYTE:return new a(e)}}i.fromArray=function(e){return e.reduce((function(e,t){return"string"==typeof t?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e}),[])},i.fromString=function(e,t){for(var n=function(e,t){for(var i={},n={start:{}},s=["start"],a=0;a<e.length;a++){for(var o=e[a],l=[],c=0;c<o.length;c++){var h=o[c],u=""+a+c;l.push(u),i[u]={node:h,lastCount:0},n[u]={};for(var d=0;d<s.length;d++){var p=s[d];i[p]&&i[p].node.mode===h.mode?(n[p][u]=f(i[p].lastCount+h.length,h.mode)-f(i[p].lastCount,h.mode),i[p].lastCount+=h.length):(i[p]&&(i[p].lastCount=h.length),n[p][u]=f(h.length,h.mode)+4+r.getCharCountIndicator(h.mode,t))}}s=l}for(d=0;d<s.length;d++)n[s[d]].end=0;return{map:n,table:i}}(function(e){for(var t=[],i=0;i<e.length;i++){var n=e[i];switch(n.mode){case r.NUMERIC:t.push([n,{data:n.data,mode:r.ALPHANUMERIC,length:n.length},{data:n.data,mode:r.BYTE,length:n.length}]);break;case r.ALPHANUMERIC:t.push([n,{data:n.data,mode:r.BYTE,length:n.length}]);break;case r.KANJI:t.push([n,{data:n.data,mode:r.BYTE,length:u(n.data)}]);break;case r.BYTE:t.push([{data:n.data,mode:r.BYTE,length:u(n.data)}])}}return t}(p(e,c.isKanjiModeEnabled())),t),s=h.find_path(n.map,"start","end"),a=[],o=1;o<s.length-1;o++)a.push(n.table[s[o]].node);return i.fromArray(a.reduce((function(e,t){var i=e.length-1>=0?e[e.length-1]:null;return i&&i.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)}),[]))},i.rawSplit=function(e){return i.fromArray(p(e,c.isKanjiModeEnabled()))}},{"./alphanumeric-data":3,"./byte-data":6,"./kanji-data":12,"./mode":14,"./numeric-data":15,"./regex":19,"./utils":21,dijkstrajs:31}],21:[function(e,t,i){var r,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];i.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return 4*e+17},i.getSymbolTotalCodewords=function(e){return n[e]},i.getBCHDigit=function(e){for(var t=0;0!==e;)t++,e>>>=1;return t},i.setToSJISFunction=function(e){if("function"!=typeof e)throw new Error('"toSJISFunc" is not a valid function.');r=e},i.isKanjiModeEnabled=function(){return void 0!==r},i.toSJIS=function(e){return r(e)}},{}],22:[function(e,t,i){i.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}},{}],23:[function(e,t,i){var r=e("./utils"),n=e("./error-correction-code"),s=e("./error-correction-level"),a=e("./mode"),o=e("./version-check"),l=e("isarray"),c=r.getBCHDigit(7973);function h(e,t){return a.getCharCountIndicator(e,t)+4}function u(e,t){var i=0;return e.forEach((function(e){var r=h(e.mode,t);i+=r+e.getBitsLength()})),i}i.from=function(e,t){return o.isValid(e)?parseInt(e,10):t},i.getCapacity=function(e,t,i){if(!o.isValid(e))throw new Error("Invalid QR Code version");void 0===i&&(i=a.BYTE);var s=8*(r.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,t));if(i===a.MIXED)return s;var l=s-h(i,e);switch(i){case a.NUMERIC:return Math.floor(l/10*3);case a.ALPHANUMERIC:return Math.floor(l/11*2);case a.KANJI:return Math.floor(l/13);case a.BYTE:default:return Math.floor(l/8)}},i.getBestVersionForData=function(e,t){var r,n=s.from(t,s.M);if(l(e)){if(e.length>1)return function(e,t){for(var r=1;r<=40;r++)if(u(e,r)<=i.getCapacity(r,t,a.MIXED))return r}(e,n);if(0===e.length)return 1;r=e[0]}else r=e;return function(e,t,r){for(var n=1;n<=40;n++)if(t<=i.getCapacity(n,r,e))return n}(r.mode,r.getLength(),n)},i.getEncodedBits=function(e){if(!o.isValid(e)||e<7)throw new Error("Invalid QR Code version");for(var t=e<<12;r.getBCHDigit(t)-c>=0;)t^=7973<<r.getBCHDigit(t)-c;return e<<12|t}},{"./error-correction-code":7,"./error-correction-level":8,"./mode":14,"./utils":21,"./version-check":22,isarray:33}],24:[function(e,t,i){var r=e("./can-promise"),n=e("./core/qrcode"),s=e("./renderer/canvas"),a=e("./renderer/svg-tag.js");function o(e,t,i,s,a){var o=[].slice.call(arguments,1),l=o.length,c="function"==typeof o[l-1];if(!c&&!r())throw new Error("Callback required as last argument");if(!c){if(l<1)throw new Error("Too few arguments provided");return 1===l?(i=t,t=s=void 0):2!==l||t.getContext||(s=i,i=t,t=void 0),new Promise((function(r,a){try{var o=n.create(i,s);r(e(o,t,s))}catch(e){a(e)}}))}if(l<2)throw new Error("Too few arguments provided");2===l?(a=i,i=t,t=s=void 0):3===l&&(t.getContext&&void 0===a?(a=s,s=void 0):(a=s,s=i,i=t,t=void 0));try{var h=n.create(i,s);a(null,e(h,t,s))}catch(e){a(e)}}i.create=n.create,i.toCanvas=o.bind(null,s.render),i.toDataURL=o.bind(null,s.renderToDataURL),i.toString=o.bind(null,(function(e,t,i){return a.render(e,i)}))},{"./can-promise":1,"./core/qrcode":17,"./renderer/canvas":25,"./renderer/svg-tag.js":26}],25:[function(e,t,i){var r=e("./utils");i.render=function(e,t,i){var n=i,s=t;void 0!==n||t&&t.getContext||(n=t,t=void 0),t||(s=function(){try{return document.createElement("canvas")}catch(e){throw new Error("You need to specify a canvas element")}}()),n=r.getOptions(n);var a=r.getImageWidth(e.modules.size,n),o=s.getContext("2d"),l=o.createImageData(a,a);return r.qrToImageData(l.data,e,n),function(e,t,i){e.clearRect(0,0,t.width,t.height),t.style||(t.style={}),t.height=i,t.width=i,t.style.height=i+"px",t.style.width=i+"px"}(o,s,a),o.putImageData(l,0,0),s},i.renderToDataURL=function(e,t,r){var n=r;void 0!==n||t&&t.getContext||(n=t,t=void 0),n||(n={});var s=i.render(e,t,n),a=n.type||"image/png",o=n.rendererOpts||{};return s.toDataURL(a,o.quality)}},{"./utils":27}],26:[function(e,t,i){var r=e("./utils");function n(e,t){var i=e.a/255,r=t+'="'+e.hex+'"';return i<1?r+" "+t+'-opacity="'+i.toFixed(2).slice(1)+'"':r}function s(e,t,i){var r=e+t;return void 0!==i&&(r+=" "+i),r}i.render=function(e,t,i){var a=r.getOptions(t),o=e.modules.size,l=e.modules.data,c=o+2*a.margin,h=a.color.light.a?"<path "+n(a.color.light,"fill")+' d="M0 0h'+c+"v"+c+'H0z"/>':"",u="<path "+n(a.color.dark,"stroke")+' d="'+function(e,t,i){for(var r="",n=0,a=!1,o=0,l=0;l<e.length;l++){var c=Math.floor(l%t),h=Math.floor(l/t);c||a||(a=!0),e[l]?(o++,l>0&&c>0&&e[l-1]||(r+=a?s("M",c+i,.5+h+i):s("m",n,0),n=0,a=!1),c+1<t&&e[l+1]||(r+=s("h",o),o=0)):n++}return r}(l,o,a.margin)+'"/>',d='viewBox="0 0 '+c+" "+c+'"',p='<svg xmlns="http://www.w3.org/2000/svg" '+(a.width?'width="'+a.width+'" height="'+a.width+'" ':"")+d+' shape-rendering="crispEdges">'+h+u+"</svg>\n";return"function"==typeof i&&i(null,p),p}},{"./utils":27}],27:[function(e,t,i){function r(e){if("number"==typeof e&&(e=e.toString()),"string"!=typeof e)throw new Error("Color should be defined as hex string");var t=e.slice().replace("#","").split("");if(t.length<3||5===t.length||t.length>8)throw new Error("Invalid hex color: "+e);3!==t.length&&4!==t.length||(t=Array.prototype.concat.apply([],t.map((function(e){return[e,e]})))),6===t.length&&t.push("F","F");var i=parseInt(t.join(""),16);return{r:i>>24&255,g:i>>16&255,b:i>>8&255,a:255&i,hex:"#"+t.slice(0,6).join("")}}i.getOptions=function(e){e||(e={}),e.color||(e.color={});var t=void 0===e.margin||null===e.margin||e.margin<0?4:e.margin,i=e.width&&e.width>=21?e.width:void 0,n=e.scale||4;return{width:i,scale:i?4:n,margin:t,color:{dark:r(e.color.dark||"#000000ff"),light:r(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}},i.getScale=function(e,t){return t.width&&t.width>=e+2*t.margin?t.width/(e+2*t.margin):t.scale},i.getImageWidth=function(e,t){var r=i.getScale(e,t);return Math.floor((e+2*t.margin)*r)},i.qrToImageData=function(e,t,r){for(var n=t.modules.size,s=t.modules.data,a=i.getScale(n,r),o=Math.floor((n+2*r.margin)*a),l=r.margin*a,c=[r.color.light,r.color.dark],h=0;h<o;h++)for(var u=0;u<o;u++){var d=4*(h*o+u),p=r.color.light;h>=l&&u>=l&&h<o-l&&u<o-l&&(p=c[s[Math.floor((h-l)/a)*n+Math.floor((u-l)/a)]?1:0]),e[d++]=p.r,e[d++]=p.g,e[d++]=p.b,e[d]=p.a}}},{}],28:[function(e,t,i){var r=e("isarray");s.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}();var n=s.TYPED_ARRAY_SUPPORT?2147483647:1073741823;function s(e,t,i){return s.TYPED_ARRAY_SUPPORT||this instanceof s?"number"==typeof e?l(this,e):function(e,t,i,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,i,r){if(i<0||t.byteLength<i)throw new RangeError("'offset' is out of bounds");if(t.byteLength<i+(r||0))throw new RangeError("'length' is out of bounds");var n;return n=void 0===i&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,i):new Uint8Array(t,i,r),s.TYPED_ARRAY_SUPPORT?n.__proto__=s.prototype:n=c(e,n),n}(e,t,i,r):"string"==typeof t?function(e,t){var i=0|u(t),r=o(e,i),n=r.write(t);return n!==i&&(r=r.slice(0,n)),r}(e,t):function(e,t){if(s.isBuffer(t)){var i=0|a(t.length),r=o(e,i);return 0===r.length||t.copy(r,0,0,i),r}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(n=t.length)!=n?o(e,0):c(e,t);if("Buffer"===t.type&&Array.isArray(t.data))return c(e,t.data)}var n;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}(this,e,t,i):new s(e,t,i)}function a(e){if(e>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|e}function o(e,t){var i;return s.TYPED_ARRAY_SUPPORT?(i=new Uint8Array(t)).__proto__=s.prototype:(null===(i=e)&&(i=new s(t)),i.length=t),i}function l(e,t){var i=o(e,t<0?0:0|a(t));if(!s.TYPED_ARRAY_SUPPORT)for(var r=0;r<t;++r)i[r]=0;return i}function c(e,t){for(var i=t.length<0?0:0|a(t.length),r=o(e,i),n=0;n<i;n+=1)r[n]=255&t[n];return r}function h(e,t){var i;t=t||1/0;for(var r=e.length,n=null,s=[],a=0;a<r;++a){if((i=e.charCodeAt(a))>55295&&i<57344){if(!n){if(i>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&s.push(239,191,189);continue}n=i;continue}if(i<56320){(t-=3)>-1&&s.push(239,191,189),n=i;continue}i=65536+(n-55296<<10|i-56320)}else n&&(t-=3)>-1&&s.push(239,191,189);if(n=null,i<128){if((t-=1)<0)break;s.push(i)}else if(i<2048){if((t-=2)<0)break;s.push(i>>6|192,63&i|128)}else if(i<65536){if((t-=3)<0)break;s.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return s}function u(e){return s.isBuffer(e)?e.length:"undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer)?e.byteLength:("string"!=typeof e&&(e=""+e),0===e.length?0:h(e).length)}s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1})),s.prototype.write=function(e,t,i){void 0===t||void 0===i&&"string"==typeof t?(i=this.length,t=0):isFinite(t)&&(t|=0,isFinite(i)?i|=0:i=void 0);var r=this.length-t;if((void 0===i||i>r)&&(i=r),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");return function(e,t,i,r){return function(e,t,i,r){for(var n=0;n<r&&!(n+i>=t.length||n>=e.length);++n)t[n+i]=e[n];return n}(h(t,e.length-i),e,i,r)}(this,e,t,i)},s.prototype.slice=function(e,t){var i,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),s.TYPED_ARRAY_SUPPORT)(i=this.subarray(e,t)).__proto__=s.prototype;else{var n=t-e;i=new s(n,void 0);for(var a=0;a<n;++a)i[a]=this[a+e]}return i},s.prototype.copy=function(e,t,i,r){if(i||(i=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<i&&(r=i),r===i)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-i&&(r=e.length-t+i);var n,a=r-i;if(this===e&&i<t&&t<r)for(n=a-1;n>=0;--n)e[n+t]=this[n+i];else if(a<1e3||!s.TYPED_ARRAY_SUPPORT)for(n=0;n<a;++n)e[n+t]=this[n+i];else Uint8Array.prototype.set.call(e,this.subarray(i,i+a),t);return a},s.prototype.fill=function(e,t,i){if("string"==typeof e){if("string"==typeof t?(t=0,i=this.length):"string"==typeof i&&(i=this.length),1===e.length){var r=e.charCodeAt(0);r<256&&(e=r)}}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<i)throw new RangeError("Out of range index");if(i<=t)return this;var n;if(t>>>=0,i=void 0===i?this.length:i>>>0,e||(e=0),"number"==typeof e)for(n=t;n<i;++n)this[n]=e;else{var a=s.isBuffer(e)?e:new s(e),o=a.length;for(n=0;n<i-t;++n)this[n+t]=a[n%o]}return this},s.concat=function(e,t){if(!r(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o(null,0);var i;if(void 0===t)for(t=0,i=0;i<e.length;++i)t+=e[i].length;var n=l(null,t),a=0;for(i=0;i<e.length;++i){var c=e[i];if(!s.isBuffer(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(n,a),a+=c.length}return n},s.byteLength=u,s.prototype._isBuffer=!0,s.isBuffer=function(e){return!(null==e||!e._isBuffer)},t.exports.alloc=function(e){var t=new s(e);return t.fill(0),t},t.exports.from=function(e){return new s(e)}},{isarray:33}],29:[function(e,t,i){i.byteLength=function(e){var t=l(e),i=t[0],r=t[1];return 3*(i+r)/4-r},i.toByteArray=function(e){var t,i,r=l(e),a=r[0],o=r[1],c=new s(function(e,t,i){return 3*(t+i)/4-i}(0,a,o)),h=0,u=o>0?a-4:a;for(i=0;i<u;i+=4)t=n[e.charCodeAt(i)]<<18|n[e.charCodeAt(i+1)]<<12|n[e.charCodeAt(i+2)]<<6|n[e.charCodeAt(i+3)],c[h++]=t>>16&255,c[h++]=t>>8&255,c[h++]=255&t;return 2===o&&(t=n[e.charCodeAt(i)]<<2|n[e.charCodeAt(i+1)]>>4,c[h++]=255&t),1===o&&(t=n[e.charCodeAt(i)]<<10|n[e.charCodeAt(i+1)]<<4|n[e.charCodeAt(i+2)]>>2,c[h++]=t>>8&255,c[h++]=255&t),c},i.fromByteArray=function(e){for(var t,i=e.length,n=i%3,s=[],a=16383,o=0,l=i-n;o<l;o+=a)s.push(c(e,o,o+a>l?l:o+a));return 1===n?(t=e[i-1],s.push(r[t>>2]+r[t<<4&63]+"==")):2===n&&(t=(e[i-2]<<8)+e[i-1],s.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),s.join("")};for(var r=[],n=[],s="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)r[o]=a[o],n[a.charCodeAt(o)]=o;function l(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=e.indexOf("=");return-1===i&&(i=t),[i,i===t?0:4-i%4]}function c(e,t,i){for(var n,s=[],a=t;a<i;a+=3)n=(e[a]<<16&16711680)+(e[a+1]<<8&65280)+(255&e[a+2]),s.push(r[(o=n)>>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);var o;return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},{}],30:[function(e,t,i){var r=e("base64-js"),n=e("ieee754"),s="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;i.Buffer=l,i.SlowBuffer=function(e){return+e!=e&&(e=0),l.alloc(+e)},i.INSPECT_MAX_BYTES=50;var a=2147483647;function o(e){if(e>a)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,i){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return c(e,t,i)}function c(e,t,i){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var i=0|f(e,t),r=o(i),n=r.write(e,t);return n!==i&&(r=r.slice(0,n)),r}(e,t);if(ArrayBuffer.isView(e))return d(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(V(e,ArrayBuffer)||e&&V(e.buffer,ArrayBuffer))return function(e,t,i){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(i||0))throw new RangeError('"length" is outside of buffer bounds');var r;return r=void 0===t&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,t):new Uint8Array(e,t,i),Object.setPrototypeOf(r,l.prototype),r}(e,t,i);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return l.from(r,t,i);var n=function(e){if(l.isBuffer(e)){var t=0|p(e.length),i=o(t);return 0===i.length||e.copy(i,0,0,t),i}return void 0!==e.length?"number"!=typeof e.length||j(e.length)?o(0):d(e):"Buffer"===e.type&&Array.isArray(e.data)?d(e.data):void 0}(e);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,i);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function h(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return h(e),o(e<0?0:0|p(e))}function d(e){for(var t=e.length<0?0:0|p(e.length),i=o(t),r=0;r<t;r+=1)i[r]=255&e[r];return i}function p(e){if(e>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return 0|e}function f(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||V(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var i=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===i)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return $(e).length;default:if(n)return r?-1:U(e).length;t=(""+t).toLowerCase(),n=!0}}function g(e,t,i){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if((i>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return N(this,t,i);case"utf8":case"utf-8":return S(this,t,i);case"ascii":return k(this,t,i);case"latin1":case"binary":return T(this,t,i);case"base64":return x(this,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,t,i);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function A(e,t,i){var r=e[t];e[t]=e[i],e[i]=r}function m(e,t,i,r,n){if(0===e.length)return-1;if("string"==typeof i?(r=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),j(i=+i)&&(i=n?0:e.length-1),i<0&&(i=e.length+i),i>=e.length){if(n)return-1;i=e.length-1}else if(i<0){if(!n)return-1;i=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:v(e,t,i,r,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,i):Uint8Array.prototype.lastIndexOf.call(e,t,i):v(e,[t],i,r,n);throw new TypeError("val must be string, number or Buffer")}function v(e,t,i,r,n){var s,a=1,o=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,o/=2,l/=2,i/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(n){var h=-1;for(s=i;s<o;s++)if(c(e,s)===c(t,-1===h?0:s-h)){if(-1===h&&(h=s),s-h+1===l)return h*a}else-1!==h&&(s-=s-h),h=-1}else for(i+l>o&&(i=o-l),s=i;s>=0;s--){for(var u=!0,d=0;d<l;d++)if(c(e,s+d)!==c(t,d)){u=!1;break}if(u)return s}return-1}function y(e,t,i,r){i=Number(i)||0;var n=e.length-i;r?(r=Number(r))>n&&(r=n):r=n;var s=t.length;r>s/2&&(r=s/2);for(var a=0;a<r;++a){var o=parseInt(t.substr(2*a,2),16);if(j(o))return a;e[i+a]=o}return a}function C(e,t,i,r){return F(U(t,e.length-i),e,i,r)}function w(e,t,i,r){return F(function(e){for(var t=[],i=0;i<e.length;++i)t.push(255&e.charCodeAt(i));return t}(t),e,i,r)}function b(e,t,i,r){return w(e,t,i,r)}function E(e,t,i,r){return F($(t),e,i,r)}function _(e,t,i,r){return F(function(e,t){for(var i,r,n,s=[],a=0;a<e.length&&!((t-=2)<0);++a)r=(i=e.charCodeAt(a))>>8,n=i%256,s.push(n),s.push(r);return s}(t,e.length-i),e,i,r)}function x(e,t,i){return 0===t&&i===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,i))}function S(e,t,i){i=Math.min(e.length,i);for(var r=[],n=t;n<i;){var s,a,o,l,c=e[n],h=null,u=c>239?4:c>223?3:c>191?2:1;if(n+u<=i)switch(u){case 1:c<128&&(h=c);break;case 2:128==(192&(s=e[n+1]))&&(l=(31&c)<<6|63&s)>127&&(h=l);break;case 3:s=e[n+1],a=e[n+2],128==(192&s)&&128==(192&a)&&(l=(15&c)<<12|(63&s)<<6|63&a)>2047&&(l<55296||l>57343)&&(h=l);break;case 4:s=e[n+1],a=e[n+2],o=e[n+3],128==(192&s)&&128==(192&a)&&128==(192&o)&&(l=(15&c)<<18|(63&s)<<12|(63&a)<<6|63&o)>65535&&l<1114112&&(h=l)}null===h?(h=65533,u=1):h>65535&&(h-=65536,r.push(h>>>10&1023|55296),h=56320|1023&h),r.push(h),n+=u}return function(e){var t=e.length;if(t<=I)return String.fromCharCode.apply(String,e);for(var i="",r=0;r<t;)i+=String.fromCharCode.apply(String,e.slice(r,r+=I));return i}(r)}i.kMaxLength=a,l.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),l.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(l.prototype,"parent",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.buffer}}),Object.defineProperty(l.prototype,"offset",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&l[Symbol.species]===l&&Object.defineProperty(l,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),l.poolSize=8192,l.from=function(e,t,i){return c(e,t,i)},Object.setPrototypeOf(l.prototype,Uint8Array.prototype),Object.setPrototypeOf(l,Uint8Array),l.alloc=function(e,t,i){return function(e,t,i){return h(e),e<=0?o(e):void 0!==t?"string"==typeof i?o(e).fill(t,i):o(e).fill(t):o(e)}(e,t,i)},l.allocUnsafe=function(e){return u(e)},l.allocUnsafeSlow=function(e){return u(e)},l.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==l.prototype},l.compare=function(e,t){if(V(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),V(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var i=e.length,r=t.length,n=0,s=Math.min(i,r);n<s;++n)if(e[n]!==t[n]){i=e[n],r=t[n];break}return i<r?-1:r<i?1:0},l.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return l.alloc(0);var i;if(void 0===t)for(t=0,i=0;i<e.length;++i)t+=e[i].length;var r=l.allocUnsafe(t),n=0;for(i=0;i<e.length;++i){var s=e[i];if(V(s,Uint8Array)&&(s=l.from(s)),!l.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(r,n),n+=s.length}return r},l.byteLength=f,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)A(this,t,t+1);return this},l.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)A(this,t,t+3),A(this,t+1,t+2);return this},l.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)A(this,t,t+7),A(this,t+1,t+6),A(this,t+2,t+5),A(this,t+3,t+4);return this},l.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?S(this,0,e):g.apply(this,arguments)},l.prototype.toLocaleString=l.prototype.toString,l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",t=i.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},s&&(l.prototype[s]=l.prototype.inspect),l.prototype.compare=function(e,t,i,r,n){if(V(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===i&&(i=e?e.length:0),void 0===r&&(r=0),void 0===n&&(n=this.length),t<0||i>e.length||r<0||n>this.length)throw new RangeError("out of range index");if(r>=n&&t>=i)return 0;if(r>=n)return-1;if(t>=i)return 1;if(this===e)return 0;for(var s=(n>>>=0)-(r>>>=0),a=(i>>>=0)-(t>>>=0),o=Math.min(s,a),c=this.slice(r,n),h=e.slice(t,i),u=0;u<o;++u)if(c[u]!==h[u]){s=c[u],a=h[u];break}return s<a?-1:a<s?1:0},l.prototype.includes=function(e,t,i){return-1!==this.indexOf(e,t,i)},l.prototype.indexOf=function(e,t,i){return m(this,e,t,i,!0)},l.prototype.lastIndexOf=function(e,t,i){return m(this,e,t,i,!1)},l.prototype.write=function(e,t,i,r){if(void 0===t)r="utf8",i=this.length,t=0;else if(void 0===i&&"string"==typeof t)r=t,i=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(i)?(i>>>=0,void 0===r&&(r="utf8")):(r=i,i=void 0)}var n=this.length-t;if((void 0===i||i>n)&&(i=n),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var s=!1;;)switch(r){case"hex":return y(this,e,t,i);case"utf8":case"utf-8":return C(this,e,t,i);case"ascii":return w(this,e,t,i);case"latin1":case"binary":return b(this,e,t,i);case"base64":return E(this,e,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,e,t,i);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function k(e,t,i){var r="";i=Math.min(e.length,i);for(var n=t;n<i;++n)r+=String.fromCharCode(127&e[n]);return r}function T(e,t,i){var r="";i=Math.min(e.length,i);for(var n=t;n<i;++n)r+=String.fromCharCode(e[n]);return r}function N(e,t,i){var r=e.length;(!t||t<0)&&(t=0),(!i||i<0||i>r)&&(i=r);for(var n="",s=t;s<i;++s)n+=H[e[s]];return n}function D(e,t,i){for(var r=e.slice(t,i),n="",s=0;s<r.length;s+=2)n+=String.fromCharCode(r[s]+256*r[s+1]);return n}function P(e,t,i){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>i)throw new RangeError("Trying to access beyond buffer length")}function R(e,t,i,r,n,s){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||t<s)throw new RangeError('"value" argument is out of bounds');if(i+r>e.length)throw new RangeError("Index out of range")}function B(e,t,i,r,n,s){if(i+r>e.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function L(e,t,i,r,s){return t=+t,i>>>=0,s||B(e,0,i,4),n.write(e,t,i,r,23,4),i+4}function O(e,t,i,r,s){return t=+t,i>>>=0,s||B(e,0,i,8),n.write(e,t,i,r,52,8),i+8}l.prototype.slice=function(e,t){var i=this.length;(e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),t<e&&(t=e);var r=this.subarray(e,t);return Object.setPrototypeOf(r,l.prototype),r},l.prototype.readUIntLE=function(e,t,i){e>>>=0,t>>>=0,i||P(e,t,this.length);for(var r=this[e],n=1,s=0;++s<t&&(n*=256);)r+=this[e+s]*n;return r},l.prototype.readUIntBE=function(e,t,i){e>>>=0,t>>>=0,i||P(e,t,this.length);for(var r=this[e+--t],n=1;t>0&&(n*=256);)r+=this[e+--t]*n;return r},l.prototype.readUInt8=function(e,t){return e>>>=0,t||P(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||P(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||P(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||P(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||P(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,i){e>>>=0,t>>>=0,i||P(e,t,this.length);for(var r=this[e],n=1,s=0;++s<t&&(n*=256);)r+=this[e+s]*n;return r>=(n*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,i){e>>>=0,t>>>=0,i||P(e,t,this.length);for(var r=t,n=1,s=this[e+--r];r>0&&(n*=256);)s+=this[e+--r]*n;return s>=(n*=128)&&(s-=Math.pow(2,8*t)),s},l.prototype.readInt8=function(e,t){return e>>>=0,t||P(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||P(e,2,this.length);var i=this[e]|this[e+1]<<8;return 32768&i?4294901760|i:i},l.prototype.readInt16BE=function(e,t){e>>>=0,t||P(e,2,this.length);var i=this[e+1]|this[e]<<8;return 32768&i?4294901760|i:i},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||P(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||P(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||P(e,4,this.length),n.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||P(e,4,this.length),n.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||P(e,8,this.length),n.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||P(e,8,this.length),n.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,i,r){e=+e,t>>>=0,i>>>=0,r||R(this,e,t,i,Math.pow(2,8*i)-1,0);var n=1,s=0;for(this[t]=255&e;++s<i&&(n*=256);)this[t+s]=e/n&255;return t+i},l.prototype.writeUIntBE=function(e,t,i,r){e=+e,t>>>=0,i>>>=0,r||R(this,e,t,i,Math.pow(2,8*i)-1,0);var n=i-1,s=1;for(this[t+n]=255&e;--n>=0&&(s*=256);)this[t+n]=e/s&255;return t+i},l.prototype.writeUInt8=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUInt16BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUInt32LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUInt32BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,i,r){if(e=+e,t>>>=0,!r){var n=Math.pow(2,8*i-1);R(this,e,t,i,n-1,-n)}var s=0,a=1,o=0;for(this[t]=255&e;++s<i&&(a*=256);)e<0&&0===o&&0!==this[t+s-1]&&(o=1),this[t+s]=(e/a|0)-o&255;return t+i},l.prototype.writeIntBE=function(e,t,i,r){if(e=+e,t>>>=0,!r){var n=Math.pow(2,8*i-1);R(this,e,t,i,n-1,-n)}var s=i-1,a=1,o=0;for(this[t+s]=255&e;--s>=0&&(a*=256);)e<0&&0===o&&0!==this[t+s+1]&&(o=1),this[t+s]=(e/a|0)-o&255;return t+i},l.prototype.writeInt8=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,i){return L(this,e,t,!0,i)},l.prototype.writeFloatBE=function(e,t,i){return L(this,e,t,!1,i)},l.prototype.writeDoubleLE=function(e,t,i){return O(this,e,t,!0,i)},l.prototype.writeDoubleBE=function(e,t,i){return O(this,e,t,!1,i)},l.prototype.copy=function(e,t,i,r){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(i||(i=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<i&&(r=i),r===i)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-i&&(r=e.length-t+i);var n=r-i;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,i,r);else if(this===e&&i<t&&t<r)for(var s=n-1;s>=0;--s)e[s+t]=this[s+i];else Uint8Array.prototype.set.call(e,this.subarray(i,r),t);return n},l.prototype.fill=function(e,t,i,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,i=this.length):"string"==typeof i&&(r=i,i=this.length),void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!l.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===e.length){var n=e.charCodeAt(0);("utf8"===r&&n<128||"latin1"===r)&&(e=n)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<i)throw new RangeError("Out of range index");if(i<=t)return this;var s;if(t>>>=0,i=void 0===i?this.length:i>>>0,e||(e=0),"number"==typeof e)for(s=t;s<i;++s)this[s]=e;else{var a=l.isBuffer(e)?e:l.from(e,r),o=a.length;if(0===o)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(s=0;s<i-t;++s)this[s+t]=a[s%o]}return this};var M=/[^+/0-9A-Za-z-_]/g;function U(e,t){var i;t=t||1/0;for(var r=e.length,n=null,s=[],a=0;a<r;++a){if((i=e.charCodeAt(a))>55295&&i<57344){if(!n){if(i>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&s.push(239,191,189);continue}n=i;continue}if(i<56320){(t-=3)>-1&&s.push(239,191,189),n=i;continue}i=65536+(n-55296<<10|i-56320)}else n&&(t-=3)>-1&&s.push(239,191,189);if(n=null,i<128){if((t-=1)<0)break;s.push(i)}else if(i<2048){if((t-=2)<0)break;s.push(i>>6|192,63&i|128)}else if(i<65536){if((t-=3)<0)break;s.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return s}function $(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function F(e,t,i,r){for(var n=0;n<r&&!(n+i>=t.length||n>=e.length);++n)t[n+i]=e[n];return n}function V(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function j(e){return e!=e}var H=function(){for(var e="0123456789abcdef",t=new Array(256),i=0;i<16;++i)for(var r=16*i,n=0;n<16;++n)t[r+n]=e[i]+e[n];return t}()},{"base64-js":29,ieee754:32}],31:[function(e,t,i){var r={single_source_shortest_paths:function(e,t,i){var n={},s={};s[t]=0;var a,o,l,c,h,u,d,p=r.PriorityQueue.make();for(p.push(t,0);!p.empty();)for(l in o=(a=p.pop()).value,c=a.cost,h=e[o]||{})h.hasOwnProperty(l)&&(u=c+h[l],d=s[l],(void 0===s[l]||d>u)&&(s[l]=u,p.push(l,u),n[l]=o));if(void 0!==i&&void 0===s[i]){var f=["Could not find a path from ",t," to ",i,"."].join("");throw new Error(f)}return n},extract_shortest_path_from_predecessor_list:function(e,t){for(var i=[],r=t;r;)i.push(r),e[r],r=e[r];return i.reverse(),i},find_path:function(e,t,i){var n=r.single_source_shortest_paths(e,t,i);return r.extract_shortest_path_from_predecessor_list(n,i)},PriorityQueue:{make:function(e){var t,i=r.PriorityQueue,n={};for(t in e=e||{},i)i.hasOwnProperty(t)&&(n[t]=i[t]);return n.queue=[],n.sorter=e.sorter||i.default_sorter,n},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var i={value:e,cost:t};this.queue.push(i),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};void 0!==t&&(t.exports=r)},{}],32:[function(e,t,i){i.read=function(e,t,i,r,n){var s,a,o=8*n-r-1,l=(1<<o)-1,c=l>>1,h=-7,u=i?n-1:0,d=i?-1:1,p=e[t+u];for(u+=d,s=p&(1<<-h)-1,p>>=-h,h+=o;h>0;s=256*s+e[t+u],u+=d,h-=8);for(a=s&(1<<-h)-1,s>>=-h,h+=r;h>0;a=256*a+e[t+u],u+=d,h-=8);if(0===s)s=1-c;else{if(s===l)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),s-=c}return(p?-1:1)*a*Math.pow(2,s-r)},i.write=function(e,t,i,r,n,s){var a,o,l,c=8*s-n-1,h=(1<<c)-1,u=h>>1,d=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:s-1,f=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,a=h):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+u>=1?d/l:d*Math.pow(2,1-u))*l>=2&&(a++,l/=2),a+u>=h?(o=0,a=h):a+u>=1?(o=(t*l-1)*Math.pow(2,n),a+=u):(o=t*Math.pow(2,u-1)*Math.pow(2,n),a=0));n>=8;e[i+p]=255&o,p+=f,o/=256,n-=8);for(a=a<<n|o,c+=n;c>0;e[i+p]=255&a,p+=f,a/=256,c-=8);e[i+p-f]|=128*g}},{}],33:[function(e,t,i){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}]},{},[24])(24)},t.exports=r()}));return{name:"qrcode",props:{value:null,options:Object,tag:{type:String,default:"canvas"}},render:function(e){return e(this.tag,this.$slots.default)},watch:{$props:{deep:!0,immediate:!0,handler:function(){this.$el&&this.generate()}}},methods:{generate:function(){var e=this,i=this.options,r=this.tag,n=String(this.value);"canvas"===r?t.toCanvas(this.$el,n,i,(function(e){if(e)throw e})):"img"===r?t.toDataURL(n,i,(function(t,i){if(t)throw t;e.$el.src=i})):t.toString(n,i,(function(t,i){if(t)throw t;e.$el.innerHTML=i}))}},mounted:function(){this.generate()}}}()},97380:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".fade-enter-active[data-v-42733c12], .fade-leave-active[data-v-42733c12] {\n transition: opacity 0.3s ease;\n}\n.fade-enter[data-v-42733c12], .fade-leave-to[data-v-42733c12] {\n opacity: 0;\n}\n.linked-icons[data-v-42733c12] {\n display: flex;\n}\n.linked-icons img[data-v-42733c12] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: 0.7;\n}\n.linked-icons img[data-v-42733c12]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-42733c12] {\n display: none;\n}\n.popovermenu.open[data-v-42733c12] {\n display: block;\n}\nli.collection-list-item[data-v-42733c12] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-42733c12] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-42733c12], li.collection-list-item .collection-item-name[data-v-42733c12] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-42733c12] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-42733c12] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-42733c12] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12] {\n display: flex;\n margin-left: 44px;\n border-radius: 3px;\n cursor: pointer;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-42733c12] {\n flex-grow: 1;\n padding: 3px;\n max-width: calc(100% - 30px);\n display: flex;\n}\nli.collection-list-item .resource-list-details span[data-v-42733c12] {\n display: inline-block;\n vertical-align: top;\n margin-right: 10px;\n}\nli.collection-list-item .resource-list-details span.resource-name[data-v-42733c12] {\n text-overflow: ellipsis;\n overflow: hidden;\n position: relative;\n vertical-align: top;\n white-space: nowrap;\n flex-grow: 1;\n padding: 4px;\n}\nli.collection-list-item .resource-list-details img[data-v-42733c12] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12] {\n opacity: 0.7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:hover, li.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-42733c12] {\n animation: shake-42733c12 0.6s 1 linear;\n}\n@keyframes shake-42733c12 {\n0% {\n transform: translate(15px);\n}\n20% {\n transform: translate(-15px);\n}\n40% {\n transform: translate(7px);\n}\n60% {\n transform: translate(-7px);\n}\n80% {\n transform: translate(3px);\n}\n100% {\n transform: translate(0px);\n}\n}.collection-list *[data-v-8ebb2593] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-8ebb2593] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-8ebb2593] {\n margin-top: auto;\n}\n#collection-select-container[data-v-8ebb2593] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-8ebb2593] {\n display: block;\n padding: 16px;\n opacity: 0.7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-8ebb2593]:hover {\n opacity: 1;\n}\np.hint[data-v-8ebb2593] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-8ebb2593] {\n width: 32px;\n height: 32px;\n margin: 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n margin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects[data-v-8ebb2593] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-8ebb2593] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-8ebb2593] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-8ebb2593] {\n padding: 4px;\n}\n.fade-enter-active[data-v-8ebb2593], .fade-leave-active[data-v-8ebb2593] {\n transition: opacity 0.5s;\n}\n.fade-enter[data-v-8ebb2593], .fade-leave-to[data-v-8ebb2593] {\n opacity: 0;\n}","",{version:3,sources:["webpack://./node_modules/nextcloud-vue-collections/dist/assets/index-CJAYjuyf.css"],names:[],mappings:"AAAA;EACE,6BAA6B;AAC/B;AACA;EACE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,aAAa;EACb,YAAY;EACZ,cAAc;EACd,4BAA4B;EAC5B,2BAA2B;EAC3B,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;AAChB;AACA;EACE,eAAe;EACf,YAAY;EACZ,eAAe;EACf,2BAA2B;AAC7B;AACA;EACE,eAAe;AACjB;AACA;EACE,eAAe;EACf,YAAY;EACZ,aAAa;AACf;AACA;EACE,iBAAiB;AACnB;AACA;EACE,eAAe;EACf,6CAA6C;AAC/C;AACA;EACE,YAAY;AACd;AACA;EACE,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,aAAa;EACb,iBAAiB;EACjB,kBAAkB;EAClB,eAAe;AACjB;AACA;EACE,8CAA8C;AAChD;AACA;EACE,YAAY;EACZ,YAAY;EACZ,4BAA4B;EAC5B,aAAa;AACf;AACA;EACE,qBAAqB;EACrB,mBAAmB;EACnB,kBAAkB;AACpB;AACA;EACE,uBAAuB;EACvB,gBAAgB;EAChB,kBAAkB;EAClB,mBAAmB;EACnB,mBAAmB;EACnB,YAAY;EACZ,YAAY;AACd;AACA;EACE,WAAW;EACX,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,uCAAuC;AACzC;AACA;AACA;IACI,0BAA0B;AAC9B;AACA;IACI,2BAA2B;AAC/B;AACA;IACI,yBAAyB;AAC7B;AACA;IACI,0BAA0B;AAC9B;AACA;IACI,yBAAyB;AAC7B;AACA;IACI,yBAAyB;AAC7B;AACA,CAAC;EACC,sBAAsB;AACxB;AACA;EACE,aAAa;EACb,kBAAkB;EAClB,SAAS;AACX;AACA;EACE,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,sBAAsB;AACxB;AACA;EACE,cAAc;EACd,aAAa;EACb,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,UAAU;AACZ;AACA;EACE,UAAU;EACV,iBAAiB;EACjB,gBAAgB;EAChB,oCAAoC;EACpC,mBAAmB;AACrB;AACA;EACE,WAAW;EACX,YAAY;EACZ,SAAS;EACT,YAAY;EACZ,8CAA8C;EAC9C,gBAAgB;AAClB;;AAEA,qCAAqC;AACrC;EACE,cAAc;EACd,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,2DAA2D;AAC7D;AACA;EACE,YAAY;AACd;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,UAAU;AACZ",sourcesContent:[".fade-enter-active[data-v-42733c12], .fade-leave-active[data-v-42733c12] {\n transition: opacity 0.3s ease;\n}\n.fade-enter[data-v-42733c12], .fade-leave-to[data-v-42733c12] {\n opacity: 0;\n}\n.linked-icons[data-v-42733c12] {\n display: flex;\n}\n.linked-icons img[data-v-42733c12] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: 0.7;\n}\n.linked-icons img[data-v-42733c12]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-42733c12] {\n display: none;\n}\n.popovermenu.open[data-v-42733c12] {\n display: block;\n}\nli.collection-list-item[data-v-42733c12] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-42733c12] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-42733c12], li.collection-list-item .collection-item-name[data-v-42733c12] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-42733c12] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-42733c12] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-42733c12] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12] {\n display: flex;\n margin-left: 44px;\n border-radius: 3px;\n cursor: pointer;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-42733c12] {\n flex-grow: 1;\n padding: 3px;\n max-width: calc(100% - 30px);\n display: flex;\n}\nli.collection-list-item .resource-list-details span[data-v-42733c12] {\n display: inline-block;\n vertical-align: top;\n margin-right: 10px;\n}\nli.collection-list-item .resource-list-details span.resource-name[data-v-42733c12] {\n text-overflow: ellipsis;\n overflow: hidden;\n position: relative;\n vertical-align: top;\n white-space: nowrap;\n flex-grow: 1;\n padding: 4px;\n}\nli.collection-list-item .resource-list-details img[data-v-42733c12] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12] {\n opacity: 0.7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:hover, li.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-42733c12] {\n animation: shake-42733c12 0.6s 1 linear;\n}\n@keyframes shake-42733c12 {\n0% {\n transform: translate(15px);\n}\n20% {\n transform: translate(-15px);\n}\n40% {\n transform: translate(7px);\n}\n60% {\n transform: translate(-7px);\n}\n80% {\n transform: translate(3px);\n}\n100% {\n transform: translate(0px);\n}\n}.collection-list *[data-v-8ebb2593] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-8ebb2593] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-8ebb2593] {\n margin-top: auto;\n}\n#collection-select-container[data-v-8ebb2593] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-8ebb2593] {\n display: block;\n padding: 16px;\n opacity: 0.7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-8ebb2593]:hover {\n opacity: 1;\n}\np.hint[data-v-8ebb2593] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-8ebb2593] {\n width: 32px;\n height: 32px;\n margin: 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n margin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects[data-v-8ebb2593] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-8ebb2593] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-8ebb2593] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-8ebb2593] {\n padding: 4px;\n}\n.fade-enter-active[data-v-8ebb2593], .fade-leave-active[data-v-8ebb2593] {\n transition: opacity 0.5s;\n}\n.fade-enter[data-v-8ebb2593], .fade-leave-to[data-v-8ebb2593] {\n opacity: 0;\n}"],sourceRoot:""}]);const o=a},38310:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".share-expiry-time[data-v-66d8c844]{display:inline-flex;align-items:center;justify-content:center}.share-expiry-time .hint-icon[data-v-66d8c844]{padding:0;margin:0;width:24px;height:24px}.hint-heading[data-v-66d8c844]{text-align:center;font-size:1rem;margin-top:8px;padding-bottom:8px;margin-bottom:0;border-bottom:1px solid var(--color-border)}.hint-body[data-v-66d8c844]{padding:var(--border-radius-element);max-width:300px}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/ShareExpiryTime.vue"],names:[],mappings:"AACA,oCACI,mBAAA,CACA,kBAAA,CACA,sBAAA,CAEA,+CACI,SAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CAIR,+BACI,iBAAA,CACA,cAAA,CACA,cAAA,CACA,kBAAA,CACA,eAAA,CACA,2CAAA,CAGJ,4BACI,oCAAA,CACA,eAAA",sourceRoot:""}]);const o=a},70162:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry[data-v-2dbd45b5]{display:flex;align-items:center;height:44px}.sharing-entry__summary[data-v-2dbd45b5]{padding:8px;padding-inline-start:10px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;flex:1 0;min-width:0}.sharing-entry__summary__desc[data-v-2dbd45b5]{display:inline-block;padding-bottom:0;line-height:1.2em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sharing-entry__summary__desc p[data-v-2dbd45b5],.sharing-entry__summary__desc small[data-v-2dbd45b5]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-2dbd45b5]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,yCACC,WAAA,CACA,yBAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,sBAAA,CACA,QAAA,CACA,WAAA,CAEA,+CACC,oBAAA,CACA,gBAAA,CACA,iBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,sGAEC,mCAAA,CAGD,sDACC,mCAAA",sourceRoot:""}]);const o=a},59879:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry[data-v-fe8ed59e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-fe8ed59e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;padding-inline-start:10px;line-height:1.2em}.sharing-entry__desc p[data-v-fe8ed59e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-fe8ed59e]{margin-inline-start: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,yBAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,wBAAA",sourceRoot:""}]);const o=a},38779:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry__internal .avatar-external[data-v-57874406]{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-57874406]{opacity:1;color:var(--color-success)}","",{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,CACA,0BAAA",sourceRoot:""}]);const o=a},58356:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry[data-v-43291a73]{display:flex;align-items:center;min-height:44px}.sharing-entry__summary[data-v-43291a73]{padding:8px;padding-inline-start:10px;display:flex;justify-content:space-between;flex:1 0;min-width:0}.sharing-entry__desc[data-v-43291a73]{display:flex;flex-direction:column;line-height:1.2em}.sharing-entry__desc p[data-v-43291a73]{color:var(--color-text-maxcontrast)}.sharing-entry__desc__title[data-v-43291a73]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__actions[data-v-43291a73]{display:flex;align-items:center;margin-inline-start:auto}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-43291a73]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-43291a73] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-43291a73]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-43291a73]{width:44px;height:44px;margin:0;padding:14px;margin-inline-start:auto}.sharing-entry .action-item~.action-item[data-v-43291a73],.sharing-entry .action-item~.sharing-entry__loading[data-v-43291a73]{margin-inline-start:0}.sharing-entry .icon-checkmark-color[data-v-43291a73]{opacity:1;color:var(--color-success)}.qr-code-dialog[data-v-43291a73]{display:flex;width:100%;justify-content:center}.qr-code-dialog__img[data-v-43291a73]{width:100%;height:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAEA,yCACC,WAAA,CACA,yBAAA,CACA,YAAA,CACA,6BAAA,CACA,QAAA,CACA,WAAA,CAGA,sCACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,wCACC,mCAAA,CAGD,6CACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIF,yCACC,YAAA,CACA,kBAAA,CACA,wBAAA,CAID,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,wBAAA,CAOA,+HAEC,qBAAA,CAIF,sDACC,SAAA,CACA,0BAAA,CAKF,iCACC,YAAA,CACA,UAAA,CACA,sBAAA,CAEA,sCACC,UAAA,CACA,WAAA",sourceRoot:""}]);const o=a},88522:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".share-select[data-v-2aa230f1]{display:block}.share-select[data-v-2aa230f1] .action-item__menutoggle{color:var(--color-primary-element) !important;font-size:12.5px !important;height:auto !important;min-height:auto !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__text{font-weight:normal !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__icon{height:24px !important;min-height:24px !important;width:24px !important;min-width:24px !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__wrapper{flex-direction:row-reverse !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue"],names:[],mappings:"AACA,+BACC,aAAA,CAIA,wDACC,6CAAA,CACA,2BAAA,CACA,sBAAA,CACA,0BAAA,CAEA,0EACC,6BAAA,CAGD,0EACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAGD,6EAEC,qCAAA",sourceRoot:""}]);const o=a},43570:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry[data-v-44339fa4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-44339fa4]{padding:8px;padding-inline-start:10px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-44339fa4]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-44339fa4]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-44339fa4]{margin-inline-start: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,yBAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,mCAAA",sourceRoot:""}]);const o=a},36196:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.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 .avatardiv__initials-wrapper{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,wEACC,YAAA",sourceRoot:""}]);const o=a},80365:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharingTabDetailsView[data-v-b61b0164]{display:flex;flex-direction:column;width:100%;margin:0 auto;position:relative;height:100%;overflow:hidden}.sharingTabDetailsView__header[data-v-b61b0164]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-b61b0164]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-b61b0164]{font-size:15px;padding-inline-start:.3em}.sharingTabDetailsView__wrapper[data-v-b61b0164]{position:relative;overflow:scroll;flex-shrink:1;padding:4px;padding-inline-end:12px}.sharingTabDetailsView__quick-permissions[data-v-b61b0164]{display:flex;justify-content:center;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-b61b0164]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-b61b0164]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-b61b0164]:nth-child(1){align-items:center;justify-content:center;padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-b61b0164] label span{display:flex;flex-direction:column}.sharingTabDetailsView__quick-permissions div span[data-v-b61b0164] span.checkbox-content__text.checkbox-radio-switch__text{flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-b61b0164] span.checkbox-content__text.checkbox-radio-switch__text .subline{display:block;flex-basis:100%}.sharingTabDetailsView__advanced-control[data-v-b61b0164]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-b61b0164]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-b61b0164]{width:100%;margin-bottom:.5em;text-align:start;padding-inline-start:0}.sharingTabDetailsView__advanced section textarea[data-v-b61b0164],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-b61b0164]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-b61b0164]{height:80px;margin:0}.sharingTabDetailsView__advanced section span[data-v-b61b0164] label{padding-inline-start:0 !important;background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-b61b0164]{padding-inline-start:1.5em}.sharingTabDetailsView__label[data-v-b61b0164]{padding-block-end:6px}.sharingTabDetailsView__delete>button[data-v-b61b0164]:first-child{color:#df0707}.sharingTabDetailsView__footer[data-v-b61b0164]{width:100%;display:flex;position:sticky;bottom:0;flex-direction:column;justify-content:space-between;align-items:flex-start;background:linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background))}.sharingTabDetailsView__footer .button-group[data-v-b61b0164]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-b61b0164]{margin-inline-start:16px}.sharingTabDetailsView__footer .button-group button[data-v-b61b0164]:first-child{margin-inline-start:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingDetailsTab.vue"],names:[],mappings:"AACA,wCACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,aAAA,CACA,iBAAA,CACA,WAAA,CACA,eAAA,CAEA,gDACC,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,WAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,wDACC,cAAA,CACA,yBAAA,CAMH,iDACC,iBAAA,CACA,eAAA,CACA,aAAA,CACA,WAAA,CACA,uBAAA,CAGD,2DACC,YAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,YAAA,CAGD,+EACC,YAAA,CACA,qBAAA,CAID,4HACC,cAAA,CAEA,qIACC,aAAA,CACA,eAAA,CAQL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,gBAAA,CACA,sBAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CACA,QAAA,CAYD,qEACC,iCAAA,CACA,mCAAA,CACA,sBAAA,CAGD,2FACC,0BAAA,CAKH,+CACC,qBAAA,CAIA,mEACC,aAAA,CAIF,gDACC,UAAA,CACA,YAAA,CACA,eAAA,CACA,QAAA,CACA,qBAAA,CACA,6BAAA,CACA,sBAAA,CACA,2FAAA,CAEA,8DACC,YAAA,CACA,6BAAA,CACA,UAAA,CACA,eAAA,CAEA,qEACC,wBAAA,CAEA,iFACC,qBAAA",sourceRoot:""}]);const o=a},56467:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry__inherited .avatar-shared[data-v-a6cc72e6]{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",sourceRoot:""}]);const o=a},53114:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".emptyContentWithSections[data-v-630c7354]{margin:1rem auto}.sharingTab[data-v-630c7354]{position:relative;height:100%}.sharingTab__content[data-v-630c7354]{padding:0 6px}.sharingTab__content section[data-v-630c7354]{padding-bottom:16px}.sharingTab__content section .section-header[data-v-630c7354]{margin-top:2px;margin-bottom:2px;display:flex;align-items:center;padding-bottom:4px}.sharingTab__content section .section-header h4[data-v-630c7354]{margin:0;font-size:16px}.sharingTab__content section .section-header .visually-hidden[data-v-630c7354]{display:none}.sharingTab__content section .section-header .hint-icon[data-v-630c7354]{color:var(--color-primary-element)}.sharingTab__content>section[data-v-630c7354]:not(:last-child){border-bottom:2px solid var(--color-border)}.sharingTab__additionalContent[data-v-630c7354]{margin:44px 0}.hint-body[data-v-630c7354]{max-width:300px;padding:var(--border-radius-element)}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AACA,2CACC,gBAAA,CAGD,6BACC,iBAAA,CACA,WAAA,CAEA,sCACC,aAAA,CAEA,8CACC,mBAAA,CAEA,8DACC,cAAA,CACA,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,iEACC,QAAA,CACA,cAAA,CAGD,+EACC,YAAA,CAGD,yEACC,kCAAA,CAOH,+DACC,2CAAA,CAKF,gDACC,aAAA,CAIF,4BACC,eAAA,CACA,oCAAA",sourceRoot:""}]);const o=a},48318:function(e,t,i){!function(e){"use strict";var t,i=function(){try{if(e.URLSearchParams&&"bar"===new e.URLSearchParams("foo=bar").get("foo"))return e.URLSearchParams}catch(e){}return null}(),r=i&&"a=1"===new i({a:1}).toString(),n=i&&"+"===new i("s=%2B").get("s"),s=i&&"size"in i.prototype,a="__URLSearchParams__",o=!i||((t=new i).append("s"," &"),"s=+%26"===t.toString()),l=p.prototype,c=!(!e.Symbol||!e.Symbol.iterator);if(!(i&&r&&n&&o&&s)){l.append=function(e,t){v(this[a],e,t)},l.delete=function(e){delete this[a][e]},l.get=function(e){var t=this[a];return this.has(e)?t[e][0]:null},l.getAll=function(e){var t=this[a];return this.has(e)?t[e].slice(0):[]},l.has=function(e){return C(this[a],e)},l.set=function(e,t){this[a][e]=[""+t]},l.toString=function(){var e,t,i,r,n=this[a],s=[];for(t in n)for(i=f(t),e=0,r=n[t];e<r.length;e++)s.push(i+"="+f(r[e]));return s.join("&")};var h,u=e.Proxy&&i&&(!n||!o||!r||!s);u?(h=new Proxy(i,{construct:function(e,t){return new e(new p(t[0]).toString())}})).toString=Function.prototype.toString.bind(p):h=p,Object.defineProperty(e,"URLSearchParams",{value:h});var d=e.URLSearchParams.prototype;d.polyfill=!0,!u&&e.Symbol&&(d[e.Symbol.toStringTag]="URLSearchParams"),"forEach"in d||(d.forEach=function(e,t){var i=m(this.toString());Object.getOwnPropertyNames(i).forEach((function(r){i[r].forEach((function(i){e.call(t,i,r,this)}),this)}),this)}),"sort"in d||(d.sort=function(){var e,t,i,r=m(this.toString()),n=[];for(e in r)n.push(e);for(n.sort(),t=0;t<n.length;t++)this.delete(n[t]);for(t=0;t<n.length;t++){var s=n[t],a=r[s];for(i=0;i<a.length;i++)this.append(s,a[i])}}),"keys"in d||(d.keys=function(){var e=[];return this.forEach((function(t,i){e.push(i)})),A(e)}),"values"in d||(d.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),A(e)}),"entries"in d||(d.entries=function(){var e=[];return this.forEach((function(t,i){e.push([i,t])})),A(e)}),c&&(d[e.Symbol.iterator]=d[e.Symbol.iterator]||d.entries),"size"in d||Object.defineProperty(d,"size",{get:function(){var e=m(this.toString());if(d===this)throw new TypeError("Illegal invocation at URLSearchParams.invokeGetter");return Object.keys(e).reduce((function(t,i){return t+e[i].length}),0)}})}function p(e){((e=e||"")instanceof URLSearchParams||e instanceof p)&&(e=e.toString()),this[a]=m(e)}function f(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'\(\)~]|%20|%00/g,(function(e){return t[e]}))}function g(e){return e.replace(/[ +]/g,"%20").replace(/(%[a-f0-9]{2})+/gi,(function(e){return decodeURIComponent(e)}))}function A(t){var i={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return c&&(i[e.Symbol.iterator]=function(){return i}),i}function m(e){var t={};if("object"==typeof e)if(y(e))for(var i=0;i<e.length;i++){var r=e[i];if(!y(r)||2!==r.length)throw new TypeError("Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements");v(t,r[0],r[1])}else for(var n in e)e.hasOwnProperty(n)&&v(t,n,e[n]);else{0===e.indexOf("?")&&(e=e.slice(1));for(var s=e.split("&"),a=0;a<s.length;a++){var o=s[a],l=o.indexOf("=");-1<l?v(t,g(o.slice(0,l)),g(o.slice(l+1))):o&&v(t,g(o),"")}}return t}function v(e,t,i){var r="string"==typeof i?i:null!=i&&"function"==typeof i.toString?i.toString():JSON.stringify(i);C(e,t)?e[t].push(r):e[t]=[r]}function y(e){return!!e&&"[object Array]"===Object.prototype.toString.call(e)}function C(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(void 0!==i.g?i.g:"undefined"!=typeof window?window:this)},58760:(e,i,r)=>{"use strict";r.r(i),r.d(i,{default:()=>Bi});var n=r(21777),s=r(35810),a=r(32981),o=r(63814),l=r(85072),c=r.n(l),h=r(97825),u=r.n(h),d=r(77659),p=r.n(d),f=r(55056),g=r.n(f),A=r(10540),m=r.n(A),v=r(41113),y=r.n(v),C=r(97380),w={};w.styleTagTransform=y(),w.setAttributes=g(),w.insert=p().bind(null,"head"),w.domAPI=u(),w.insertStyleElement=m(),c()(C.A,w),C.A&&C.A.locals&&C.A.locals;var b=r(53334),E=r(41944),_=r(67607);const x=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},S="object"==typeof global&&global&&global.Object===Object&&global;var I="object"==typeof self&&self&&self.Object===Object&&self;const k=S||I||Function("return this")(),T=function(){return k.Date.now()};var N=/\s/;var D=/^\s+/;const P=function(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&N.test(e.charAt(t)););return t}(e)+1).replace(D,""):e},R=k.Symbol;var B=Object.prototype,L=B.hasOwnProperty,O=B.toString,M=R?R.toStringTag:void 0;var U=Object.prototype.toString;var $=R?R.toStringTag:void 0;const F=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":$&&$ in Object(e)?function(e){var t=L.call(e,M),i=e[M];try{e[M]=void 0;var r=!0}catch(e){}var n=O.call(e);return r&&(t?e[M]=i:delete e[M]),n}(e):function(e){return U.call(e)}(e)};var V=/^[-+]0x[0-9a-f]+$/i,j=/^0b[01]+$/i,H=/^0o[0-7]+$/i,z=parseInt;const q=function(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return null!=e&&"object"==typeof e}(e)&&"[object Symbol]"==F(e)}(e))return NaN;if(x(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=x(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=P(e);var i=j.test(e);return i||H.test(e)?z(e.slice(2),i?2:8):V.test(e)?NaN:+e};var G=Math.max,Y=Math.min;var W=r(24764),X=r(57505),Q=r(85471),Z=r(65043);const K=new class{constructor(){this.http=Z.Ay}listCollection(e){return this.http.get((0,o.KT)("collaboration/resources/collections/{collectionId}",{collectionId:e}))}renameCollection(e,t){return this.http.put((0,o.KT)("collaboration/resources/collections/{collectionId}",{collectionId:e}),{collectionName:t}).then((e=>e.data.ocs.data))}getCollectionsByResource(e,t){return this.http.get((0,o.KT)("collaboration/resources/{resourceType}/{resourceId}",{resourceType:e,resourceId:t})).then((e=>e.data.ocs.data))}createCollection(e,t,i){return this.http.post((0,o.KT)("collaboration/resources/{resourceType}/{resourceId}",{resourceType:e,resourceId:t}),{name:i}).then((e=>e.data.ocs.data))}addResource(e,t,i){return i=""+i,this.http.post((0,o.KT)("collaboration/resources/collections/{collectionId}",{collectionId:e}),{resourceType:t,resourceId:i}).then((e=>e.data.ocs.data))}removeResource(e,t,i){return this.http.delete((0,o.KT)("collaboration/resources/collections/{collectionId}",{collectionId:e}),{params:{resourceType:t,resourceId:i}}).then((e=>e.data.ocs.data))}search(e){return this.http.get((0,o.KT)("collaboration/resources/collections/search/{query}",{query:e})).then((e=>e.data.ocs.data))}},J=(0,Q.Kh)({collections:[]}),ee={addCollections(e){(0,Q.hZ)(J,"collections",e)},addCollection(e){J.collections.push(e)},removeCollection(e){(0,Q.hZ)(J,"collections",J.collections.filter((t=>t.id!==e)))},updateCollection(e){const t=J.collections.findIndex((t=>t.id===e.id));-1!==t?(0,Q.hZ)(J.collections,t,e):J.collections.push(e)}},te={fetchCollectionsByResource:({resourceType:e,resourceId:t})=>K.getCollectionsByResource(e,t).then((e=>(ee.addCollections(e),e))),createCollection:({baseResourceType:e,baseResourceId:t,resourceType:i,resourceId:r,name:n})=>K.createCollection(e,t,n).then((e=>{ee.addCollection(e),te.addResourceToCollection({collectionId:e.id,resourceType:i,resourceId:r})})),renameCollection:({collectionId:e,name:t})=>K.renameCollection(e,t).then((e=>(ee.updateCollection(e),e))),addResourceToCollection:({collectionId:e,resourceType:t,resourceId:i})=>K.addResource(e,t,i).then((e=>(ee.updateCollection(e),e))),removeResource:({collectionId:e,resourceType:t,resourceId:i})=>K.removeResource(e,t,i).then((e=>{e.resources.length>0?ee.updateCollection(e):ee.removeCollection(e)})),search:e=>K.search(e)};function ie(e,t,i,r,n,s,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),r&&(c.functional=!0),s&&(c._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):n&&(l=o?function(){n.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:n),l)if(c.functional){c._injectStyles=l;var h=c.render;c.render=function(e,t){return l.call(t),h(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:e,options:c}}const re=ie({name:"CollectionListItem",components:{NcAvatar:E.A,NcActions:W.A,NcActionButton:X.A},props:{collection:{type:Object,default:null}},data:()=>({detailsOpen:!1,newName:null,error:{}}),computed:{getIcon:()=>e=>[e.iconClass],typeClass:()=>e=>"resource-type-"+e.type,limitedResources:()=>e=>e.resources?e.resources.slice(0,2):[],iconUrl:()=>e=>e.mimetype?OC.MimeType.getIconUrl(e.mimetype):e.iconUrl?e.iconUrl:""},methods:{t:b.t,toggleDetails(){this.detailsOpen=!this.detailsOpen},showDetails(){this.detailsOpen=!0},hideDetails(){this.detailsOpen=!1},removeResource(e,t){te.removeResource({collectionId:e.id,resourceType:t.type,resourceId:t.id})},openRename(){this.newName=this.collection.name},renameCollection(){""!==this.newName?te.renameCollection({collectionId:this.collection.id,name:this.newName}).then((e=>{this.newName=null})).catch((e=>{this.$set(this.error,"rename",(0,b.t)("core","Failed to rename the project")),console.error(e),setTimeout((()=>{(0,Q.hZ)(this.error,"rename",null)}),3e3)})):this.newName=null}}},(function(){var e=this,t=e._self._c;return t("li",{staticClass:"collection-list-item"},[t("NcAvatar",{staticClass:"collection-avatar",attrs:{"display-name":e.collection.name,"allow-placeholder":""}}),null===e.newName?t("span",{staticClass:"collection-item-name",attrs:{title:""},on:{click:e.showDetails}},[e._v(e._s(e.collection.name))]):t("form",{class:{shouldshake:e.error.rename},on:{submit:function(t){return t.preventDefault(),e.renameCollection.apply(null,arguments)}}},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.newName,expression:"newName"}],attrs:{type:"text",autocomplete:"off",autocapitalize:"off"},domProps:{value:e.newName},on:{input:function(t){t.target.composing||(e.newName=t.target.value)}}}),t("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]),e.detailsOpen||null!==e.newName?e._e():t("div",{staticClass:"linked-icons"},e._l(e.limitedResources(e.collection),(function(i){return t("a",{key:i.type+"|"+i.id,class:e.typeClass(i),attrs:{title:i.name,href:i.link}},[t("img",{attrs:{src:e.iconUrl(i)}})])})),0),null===e.newName?t("span",{staticClass:"sharingOptionsGroup"},[t("NcActions",[t("NcActionButton",{attrs:{icon:"icon-info"},on:{click:function(t){return t.preventDefault(),e.toggleDetails.apply(null,arguments)}}},[e._v(" "+e._s(e.detailsOpen?e.t("core","Hide details"):e.t("core","Show details"))+" ")]),t("NcActionButton",{attrs:{icon:"icon-rename"},on:{click:function(t){return t.preventDefault(),e.openRename.apply(null,arguments)}}},[e._v(" "+e._s(e.t("core","Rename project"))+" ")])],1)],1):e._e(),t("transition",{attrs:{name:"fade"}},[e.error.rename?t("div",{staticClass:"error"},[e._v(" "+e._s(e.error.rename)+" ")]):e._e()]),t("transition",{attrs:{name:"fade"}},[e.detailsOpen?t("ul",{staticClass:"resource-list-details"},e._l(e.collection.resources,(function(i){return t("li",{key:i.type+"|"+i.id,class:e.typeClass(i)},[t("a",{attrs:{href:i.link}},[t("img",{attrs:{src:e.iconUrl(i)}}),t("span",{staticClass:"resource-name"},[e._v(e._s(i.name||""))])]),t("span",{staticClass:"icon-close",on:{click:function(t){return e.removeResource(e.collection,i)}}})])})),0):e._e()])],1)}),[],!1,null,"42733c12",null,null).exports,ne=function(e,t,i){var r,n,s,a,o,l,c=0,h=!1,u=!1,d=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function p(t){var i=r,s=n;return r=n=void 0,c=t,a=e.apply(s,i)}function f(e){var i=e-l;return void 0===l||i>=t||i<0||u&&e-c>=s}function g(){var e=T();if(f(e))return A(e);o=setTimeout(g,function(e){var i=t-(e-l);return u?Y(i,s-(e-c)):i}(e))}function A(e){return o=void 0,d&&r?p(e):(r=n=void 0,a)}function m(){var e=T(),i=f(e);if(r=arguments,n=this,l=e,i){if(void 0===o)return function(e){return c=e,o=setTimeout(g,t),h?p(e):a}(l);if(u)return clearTimeout(o),o=setTimeout(g,t),p(l)}return void 0===o&&(o=setTimeout(g,t)),a}return t=q(t)||0,x(i)&&(h=!!i.leading,s=(u="maxWait"in i)?G(q(i.maxWait)||0,t):s,d="trailing"in i?!!i.trailing:d),m.cancel=function(){void 0!==o&&clearTimeout(o),c=0,r=l=n=o=void 0},m.flush=function(){return void 0===o?a:A(T())},m}((function(e,t){""!==e&&(t(!0),te.search(e).then((e=>{this.searchCollections=e})).catch((e=>{console.error("Failed to search for collections",e)})).finally((()=>{t(!1)})))}),500,{}),se={name:"CollectionList",components:{CollectionListItem:re,NcAvatar:E.A,NcSelect:_.A},props:{type:{type:String,default:null},id:{type:String,default:null},name:{type:String,default:""},isActive:{type:Boolean,default:!0}},setup:()=>({state:J}),data:()=>({selectIsOpen:!1,generatingCodes:!1,codes:void 0,value:null,model:{},searchCollections:[],error:null,isSelectOpen:!1}),computed:{collections(){return this.state.collections.filter((e=>void 0!==e.resources.find((e=>e&&e.id===""+this.id&&e.type===this.type))))},placeholder(){return this.isSelectOpen?(0,b.t)("core","Type to search for existing projects"):(0,b.t)("core","Add to a project")},options(){const e=[];window.OCP.Collaboration.getTypes().sort().forEach((t=>{e.push({method:0,type:t,title:window.OCP.Collaboration.getLabel(t),class:window.OCP.Collaboration.getIcon(t),action:()=>window.OCP.Collaboration.trigger(t)})}));for(const t in this.searchCollections)-1===this.collections.findIndex((e=>e.id===this.searchCollections[t].id))&&e.push({method:1,title:this.searchCollections[t].name,collectionId:this.searchCollections[t].id});return e}},watch:{type(){this.isActive&&te.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},id(){this.isActive&&te.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},isActive(e){e&&te.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})}},mounted(){te.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},methods:{t:b.t,select(e,t){0===e.method&&e.action().then((t=>{te.createCollection({baseResourceType:this.type,baseResourceId:this.id,resourceType:e.type,resourceId:t,name:this.name}).catch((e=>{this.setError((0,b.t)("core","Failed to create a project"),e)}))})).catch((e=>{console.error("No resource selected",e)})),1===e.method&&te.addResourceToCollection({collectionId:e.collectionId,resourceType:this.type,resourceId:this.id}).catch((e=>{this.setError((0,b.t)("core","Failed to add the item to the project"),e)}))},search(e,t){ne.bind(this)(e,t)},showSelect(){this.selectIsOpen=!0,this.$refs.select.$el.focus()},hideSelect(){this.selectIsOpen=!1},isVueComponent:e=>e._isVue,setError(e,t){console.error(e,t),this.error=e,setTimeout((()=>{this.error=null}),5e3)}}},ae=ie(se,(function(){var e=this,t=e._self._c;return e.collections&&e.type&&e.id?t("ul",{staticClass:"collection-list",attrs:{id:"collection-list"}},[t("li",{on:{click:e.showSelect}},[e._m(0),t("div",{attrs:{id:"collection-select-container"}},[t("NcSelect",{ref:"select",attrs:{"aria-label-combobox":e.t("core","Add to a project"),options:e.options,placeholder:e.placeholder,label:"title",limit:5},on:{close:function(t){e.isSelectOpen=!1},open:function(t){e.isSelectOpen=!0},"option:selected":e.select,search:e.search},scopedSlots:e._u([{key:"selected-option",fn:function(i){return[t("span",{staticClass:"option__desc"},[t("span",{staticClass:"option__title"},[e._v(e._s(i.title))])])]}},{key:"option",fn:function(i){return[t("span",{staticClass:"option__wrapper"},[i.class?t("span",{staticClass:"avatar",class:i.class}):2!==i.method?t("NcAvatar",{attrs:{"allow-placeholder":"","display-name":i.title}}):e._e(),t("span",{staticClass:"option__title"},[e._v(e._s(i.title))])],1)]}}],null,!1,2397208459),model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[t("p",{staticClass:"hint"},[e._v(" "+e._s(e.t("core","Connect items to a project to make them easier to find"))+" ")])])],1)]),t("transition",{attrs:{name:"fade"}},[e.error?t("li",{staticClass:"error"},[e._v(" "+e._s(e.error)+" ")]):e._e()]),e._l(e.collections,(function(e){return t("CollectionListItem",{key:e.id,attrs:{collection:e}})}))],2):e._e()}),[function(){var e=this._self._c;return e("div",{staticClass:"avatar"},[e("span",{staticClass:"icon-projects"})])}],!1,null,"8ebb2593",null,null).exports;var oe=r(77905),le=r(83241),ce=r(30912),he=r(19231),ue=r(97012),de=r(87485);class pe{constructor(){(function(e,t,i){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i})(this,"_capabilities",void 0),this._capabilities=(0,de.F)()}get defaultPermissions(){return this._capabilities.files_sharing?.default_permissions}get isPublicUploadEnabled(){return!0===this._capabilities.files_sharing?.public?.upload}get federatedShareDocLink(){return window.OC.appConfig.core.federatedCloudShareDoc}get defaultExpirationDate(){return this.isDefaultExpireDateEnabled&&null!==this.defaultExpireDate?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}get defaultInternalExpirationDate(){return this.isDefaultInternalExpireDateEnabled&&null!==this.defaultInternalExpireDate?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}get defaultRemoteExpirationDateString(){return this.isDefaultRemoteExpireDateEnabled&&null!==this.defaultRemoteExpireDate?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}get enforcePasswordForPublicLink(){return!0===window.OC.appConfig.core.enforcePasswordForPublicLink}get enableLinkPasswordByDefault(){return!0===window.OC.appConfig.core.enableLinkPasswordByDefault}get isDefaultExpireDateEnforced(){return!0===window.OC.appConfig.core.defaultExpireDateEnforced}get isDefaultExpireDateEnabled(){return!0===window.OC.appConfig.core.defaultExpireDateEnabled}get isDefaultInternalExpireDateEnforced(){return!0===window.OC.appConfig.core.defaultInternalExpireDateEnforced}get isDefaultInternalExpireDateEnabled(){return!0===window.OC.appConfig.core.defaultInternalExpireDateEnabled}get isDefaultRemoteExpireDateEnforced(){return!0===window.OC.appConfig.core.defaultRemoteExpireDateEnforced}get isDefaultRemoteExpireDateEnabled(){return!0===window.OC.appConfig.core.defaultRemoteExpireDateEnabled}get isRemoteShareAllowed(){return!0===window.OC.appConfig.core.remoteShareAllowed}get isPublicShareAllowed(){return!0===this._capabilities?.files_sharing?.public?.enabled}get isMailShareAllowed(){return!0===this._capabilities?.files_sharing?.sharebymail?.enabled&&!0===this.isPublicShareAllowed}get defaultExpireDate(){return window.OC.appConfig.core.defaultExpireDate}get defaultInternalExpireDate(){return window.OC.appConfig.core.defaultInternalExpireDate}get defaultRemoteExpireDate(){return window.OC.appConfig.core.defaultRemoteExpireDate}get isResharingAllowed(){return!0===window.OC.appConfig.core.resharingAllowed}get isPasswordForMailSharesRequired(){return!0===this._capabilities.files_sharing?.sharebymail?.password?.enforced}get shouldAlwaysShowUnique(){return!0===this._capabilities.files_sharing?.sharee?.always_show_unique}get allowGroupSharing(){return!0===window.OC.appConfig.core.allowGroupSharing}get maxAutocompleteResults(){return parseInt(window.OC.config["sharing.maxAutocompleteResults"],10)||25}get minSearchStringLength(){return parseInt(window.OC.config["sharing.minSearchStringLength"],10)||0}get passwordPolicy(){return this._capabilities?.password_policy||{}}get allowCustomTokens(){return this._capabilities?.files_sharing?.public?.custom_tokens}}var fe=r(35947);const ge=(0,fe.YK)().setApp("files_sharing").detectUser().build();class Ae{constructor(e){if(function(e,t,i){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i}(this,"_share",void 0),e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),"string"==typeof e.id&&(e.id=Number.parseInt(e.id)),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,e.attributes&&"string"==typeof e.attributes)try{e.attributes=JSON.parse(e.attributes)}catch(t){console.warn("Could not parse share attributes returned by server",e.attributes)}e.attributes=e.attributes??[],this._share=e}get state(){return this._share}get id(){return this._share.id}get type(){return this._share.share_type}get permissions(){return this._share.permissions}get attributes(){return this._share.attributes||[]}set permissions(e){this._share.permissions=e}get owner(){return this._share.uid_owner}get ownerDisplayName(){return this._share.displayname_owner}get shareWith(){return this._share.share_with}get shareWithDisplayName(){return this._share.share_with_displayname||this._share.share_with}get shareWithDisplayNameUnique(){return this._share.share_with_displayname_unique||this._share.share_with}get shareWithLink(){return this._share.share_with_link}get shareWithAvatar(){return this._share.share_with_avatar}get uidFileOwner(){return this._share.uid_file_owner}get displaynameFileOwner(){return this._share.displayname_file_owner||this._share.uid_file_owner}get createdTime(){return this._share.stime}get expireDate(){return this._share.expiration}set expireDate(e){this._share.expiration=e}get token(){return this._share.token}set token(e){this._share.token=e}get note(){return this._share.note}set note(e){this._share.note=e}get label(){return this._share.label??""}set label(e){this._share.label=e}get mailSend(){return!0===this._share.mail_send}get hideDownload(){return!0===this._share.hide_download||void 0!==this.attributes.find?.((e=>{let{scope:t,key:i,value:r}=e;return"permissions"===t&&"download"===i&&!r}))}set hideDownload(e){this._share.hide_download=!0===e}get password(){return this._share.password}set password(e){this._share.password=e}get passwordExpirationTime(){return this._share.password_expiration_time}set passwordExpirationTime(e){this._share.password_expiration_time=e}get sendPasswordByTalk(){return this._share.send_password_by_talk}set sendPasswordByTalk(e){this._share.send_password_by_talk=e}get path(){return this._share.path}get itemType(){return this._share.item_type}get mimetype(){return this._share.mimetype}get fileSource(){return this._share.file_source}get fileTarget(){return this._share.file_target}get fileParent(){return this._share.file_parent}get hasReadPermission(){return!!(this.permissions&window.OC.PERMISSION_READ)}get hasCreatePermission(){return!!(this.permissions&window.OC.PERMISSION_CREATE)}get hasDeletePermission(){return!!(this.permissions&window.OC.PERMISSION_DELETE)}get hasUpdatePermission(){return!!(this.permissions&window.OC.PERMISSION_UPDATE)}get hasSharePermission(){return!!(this.permissions&window.OC.PERMISSION_SHARE)}get hasDownloadPermission(){return this.attributes.some((e=>"permissions"===e.scope&&"download"===e.key&&!1===e.value))}get isFileRequest(){return function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"[]";const t=e=>"fileRequest"===e.scope&&"enabled"===e.key&&!0===e.value;try{return JSON.parse(e).some(t)}catch(e){return ge.error("Error while parsing share attributes",{error:e}),!1}}(JSON.stringify(this.attributes))}set hasDownloadPermission(e){this.setAttribute("permissions","download",!!e)}setAttribute(e,t,i){const r={scope:e,key:t,value:i};for(const e in this._share.attributes){const t=this._share.attributes[e];if(t.scope===r.scope&&t.key===r.key)return void this._share.attributes.splice(e,1,r)}this._share.attributes.push(r)}get canEdit(){return!0===this._share.can_edit}get canDelete(){return!0===this._share.can_delete}get viaFileid(){return this._share.via_fileid}get viaPath(){return this._share.via_path}get parent(){return this._share.parent}get storageId(){return this._share.storage_id}get storage(){return this._share.storage}get itemSource(){return this._share.item_source}get status(){return this._share.status}}var me=r(85168),ve=r(54373),ye=r(31773);const Ce={name:"SharingEntrySimple",components:{NcActions:W.A},props:{title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}};var we=r(43570),be={};be.styleTagTransform=y(),be.setAttributes=g(),be.insert=p().bind(null,"head"),be.domAPI=u(),be.insertStyleElement=m(),c()(we.A,be),we.A&&we.A.locals&&we.A.locals;var Ee=r(14486);const _e=(0,Ee.A)(Ce,(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,"44339fa4",null).exports,xe={name:"SharingEntryInternal",components:{NcActionButton:X.A,SharingEntrySimple:_e,CheckIcon:ve.A,ClipboardIcon:ye.A},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({copied:!1,copySuccess:!1}),computed:{internalLink(){return window.location.protocol+"//"+window.location.host+(0,o.Jv)("/f/")+this.fileInfo.id},copyLinkTooltip(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy internal link to clipboard")},internalLinkSubtitle(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for people with access to this folder"):t("files_sharing","Only works for people with access to this file")}},methods:{async copyLink(){try{await navigator.clipboard.writeText(this.internalLink),(0,me.Te)(t("files_sharing","Link copied")),this.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,console.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}}}};var Se=r(38779),Ie={};Ie.styleTagTransform=y(),Ie.setAttributes=g(),Ie.insert=p().bind(null,"head"),Ie.domAPI=u(),Ie.insertStyleElement=m(),c()(Se.A,Ie),Se.A&&Se.A.locals&&Se.A.locals;const ke=(0,Ee.A)(xe,(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("NcActionButton",{attrs:{title:e.copyLinkTooltip,"aria-label":e.copyLinkTooltip},on:{click:e.copyLink},scopedSlots:e._u([{key:"icon",fn:function(){return[e.copied&&e.copySuccess?t("CheckIcon",{staticClass:"icon-checkmark-color",attrs:{size:20}}):t("ClipboardIcon",{attrs:{size:20}})]},proxy:!0}])})],1)],1)}),[],!1,null,"57874406",null).exports;var Te=r(17334),Ne=r.n(Te),De=(r(48318),r(61338));const Pe=(0,o.KT)("apps/files_sharing/api/v1/shares"),Re={methods:{async createShare(e){let{path:i,permissions:r,shareType:n,shareWith:s,publicUpload:a,password:o,sendPasswordByTalk:l,expireDate:c,label:h,note:u,attributes:d}=e;try{const e=await Z.Ay.post(Pe,{path:i,permissions:r,shareType:n,shareWith:s,publicUpload:a,password:o,sendPasswordByTalk:l,expireDate:c,label:h,note:u,attributes:d});if(!e?.data?.ocs)throw e;const t=new Ae(e.data.ocs.data);return(0,De.Ic)("files_sharing:share:created",{share:t}),t}catch(e){console.error("Error while creating share",e);const i=e?.response?.data?.ocs?.meta?.message;throw OC.Notification.showTemporary(i?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:i}):t("files_sharing","Error creating the share"),{type:"error"}),e}},async deleteShare(e){try{const t=await Z.Ay.delete(Pe+`/${e}`);if(!t?.data?.ocs)throw t;return(0,De.Ic)("files_sharing:share:deleted",{id:e}),!0}catch(e){console.error("Error while deleting share",e);const i=e?.response?.data?.ocs?.meta?.message;throw OC.Notification.showTemporary(i?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:i}):t("files_sharing","Error deleting the share"),{type:"error"}),e}},async updateShare(e,i){try{const t=await Z.Ay.put(Pe+`/${e}`,i);if((0,De.Ic)("files_sharing:share:updated",{id:e}),t?.data?.ocs)return t.data.ocs.data;throw t}catch(e){if(console.error("Error while updating share",e),400!==e.response.status){const i=e?.response?.data?.ocs?.meta?.message;OC.Notification.showTemporary(i?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:i}):t("files_sharing","Error updating the share"),{type:"error"})}const i=e.response.data.ocs.meta.message;throw new Error(i)}}}},Be={methods:{async openSharingDetails(e){let t={};if(e.handler){const i={};this.suggestions&&(i.suggestions=this.suggestions,i.fileInfo=this.fileInfo,i.query=this.query);const r=await e.handler(i);t=this.mapShareRequestToShareObject(r)}else t=this.mapShareRequestToShareObject(e);const i={fileInfo:this.fileInfo,share:t};this.$emit("open-sharing-details",i)},openShareDetailsForCustomSettings(e){e.setCustomPermissions=!0,this.openSharingDetails(e)},mapShareRequestToShareObject(e){if(e.id)return e;const t={attributes:[{value:!0,key:"download",scope:"permissions"}],hideDownload:!1,share_type:e.shareType,share_with:e.shareWith,is_no_user:e.isNoUser,user:e.shareWith,share_with_displayname:e.displayName,subtitle:e.subtitle,permissions:e.permissions??(new pe).defaultPermissions,expiration:""};return new Ae(t)}}},Le={name:"SharingInput",components:{NcSelect:_.A},mixins:[Re,Be],props:{shares:{type:Array,default:()=>[],required:!0},linkShares:{type:Array,default:()=>[],required:!0},fileInfo:{type:Object,default:()=>{},required:!0},reshare:{type:Ae,default:null},canReshare:{type:Boolean,required:!0},isExternal:{type:Boolean,default:!1},placeholder:{type:String,default:""}},setup:()=>({shareInputId:`share-input-${Math.random().toString(36).slice(2,7)}`}),data:()=>({config:new pe,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[],value:null}),computed:{externalResults(){return this.ShareSearch.results},inputPlaceholder(){const e=this.config.isRemoteShareAllowed;return this.canReshare?this.placeholder?this.placeholder:e?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted(){this.isExternal||this.getRecommendations()},methods:{onSelected(e){this.value=null,this.openSharingDetails(e)},async asyncFind(e){this.query=e.trim(),this.isValidQuery&&(this.loading=!0,await this.debounceGetSuggestions(e))},async getSuggestions(e){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.loading=!0,!0===(0,de.F)().files_sharing.sharee.query_lookup_default&&(i=!0);let r=[];this.isExternal?(r.push(oe.I.Remote),r.push(oe.I.RemoteGroup)):r=r.concat([oe.I.User,oe.I.Group,oe.I.Team,oe.I.Room,oe.I.Guest,oe.I.Deck,oe.I.ScienceMesh]),!0===(0,de.F)().files_sharing.public.enabled&&this.isExternal&&r.push(oe.I.Email);let n=null;try{n=await Z.Ay.get((0,o.KT)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===this.fileInfo.type?"folder":"file",search:e,lookup:i,perPage:this.config.maxAutocompleteResults,shareType:r}})}catch(e){return void console.error("Error fetching suggestions",e)}const s=n.data.ocs.data,a=n.data.ocs.data.exact;s.exact=[];const l=Object.values(a).reduce(((e,t)=>e.concat(t)),[]),c=Object.values(s).reduce(((e,t)=>e.concat(t)),[]),h=this.filterOutExistingShares(l).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),u=this.filterOutExistingShares(c).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),d=[];s.lookupEnabled&&!i&&d.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0});const p=this.externalResults.filter((e=>!e.condition||e.condition(this))),f=h.concat(u).concat(p).concat(d),g=f.reduce(((e,t)=>t.displayName?(e[t.displayName]||(e[t.displayName]=0),e[t.displayName]++,e):e),{});this.suggestions=f.map((e=>g[e.displayName]>1&&!e.desc?{...e,desc:e.shareWithDisplayNameUnique}:e)),this.loading=!1,console.info("suggestions",this.suggestions)},debounceGetSuggestions:Ne()((function(){this.getSuggestions(...arguments)}),300),async getRecommendations(){this.loading=!0;let e=null;try{e=await Z.Ay.get((0,o.KT)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:this.fileInfo.type}})}catch(e){return void console.error("Error fetching recommendations",e)}const t=this.externalResults.filter((e=>!e.condition||e.condition(this))),i=Object.values(e.data.ocs.data.exact).reduce(((e,t)=>e.concat(t)),[]);this.recommendations=this.filterOutExistingShares(i).map((e=>this.formatForMultiselect(e))).concat(t),this.loading=!1,console.info("recommendations",this.recommendations)},filterOutExistingShares(e){return e.reduce(((e,t)=>{if("object"!=typeof t)return e;try{if(t.value.shareType===oe.I.User){if(t.value.shareWith===(0,n.HW)().uid)return e;if(this.reshare&&t.value.shareWith===this.reshare.owner)return e}if(t.value.shareType===oe.I.Email){if(-1!==this.linkShares.map((e=>e.shareWith)).indexOf(t.value.shareWith.trim()))return e}else{const i=this.shares.reduce(((e,t)=>(e[t.shareWith]=t.type,e)),{}),r=t.value.shareWith.trim();if(r in i&&i[r]===t.value.shareType)return e}e.push(t)}catch{return e}return e}),[])},shareTypeToIcon(e){switch(e){case oe.I.Guest:return{icon:"icon-user",iconTitle:t("files_sharing","Guest")};case oe.I.RemoteGroup:case oe.I.Group:return{icon:"icon-group",iconTitle:t("files_sharing","Group")};case oe.I.Email:return{icon:"icon-mail",iconTitle:t("files_sharing","Email")};case oe.I.Team:return{icon:"icon-teams",iconTitle:t("files_sharing","Team")};case oe.I.Room:return{icon:"icon-room",iconTitle:t("files_sharing","Talk conversation")};case oe.I.Deck:return{icon:"icon-deck",iconTitle:t("files_sharing","Deck board")};case oe.I.Sciencemesh:return{icon:"icon-sciencemesh",iconTitle:t("files_sharing","ScienceMesh")};default:return{}}},formatForMultiselect(e){let i;return i=e.value.shareType===oe.I.User&&this.config.shouldAlwaysShowUnique?e.shareWithDisplayNameUnique??"":e.value.shareType!==oe.I.Remote&&e.value.shareType!==oe.I.RemoteGroup||!e.value.server?e.value.shareType===oe.I.Email?e.value.shareWith:e.shareWithDescription??"":t("files_sharing","on {server}",{server:e.value.server}),{shareWith:e.value.shareWith,shareType:e.value.shareType,user:e.uuid||e.value.shareWith,isNoUser:e.value.shareType!==oe.I.User,displayName:e.name||e.label,subname:i,shareWithDisplayNameUnique:e.shareWithDisplayNameUnique||"",...this.shareTypeToIcon(e.value.shareType)}}}};var Oe=r(36196),Me={};Me.styleTagTransform=y(),Me.setAttributes=g(),Me.insert=p().bind(null,"head"),Me.domAPI=u(),Me.insertStyleElement=m(),c()(Oe.A,Me),Oe.A&&Oe.A.locals&&Oe.A.locals;const Ue=(0,Ee.A)(Le,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharing-search"},[t("label",{staticClass:"hidden-visually",attrs:{for:e.shareInputId}},[e._v("\n\t\t"+e._s(e.isExternal?e.t("files_sharing","Enter external recipients"):e.t("files_sharing","Search for internal recipients"))+"\n\t")]),e._v(" "),t("NcSelect",{ref:"select",staticClass:"sharing-search__input",attrs:{"input-id":e.shareInputId,disabled:!e.canReshare,loading:e.loading,filterable:!1,placeholder:e.inputPlaceholder,"clear-search-on-blur":()=>!1,"user-select":!0,options:e.options,"label-outside":!0},on:{search:e.asyncFind,"option:selected":e.onSelected},scopedSlots:e._u([{key:"no-options",fn:function(t){let{search:i}=t;return[e._v("\n\t\t\t"+e._s(i?e.noResultText:e.placeholder)+"\n\t\t")]}}]),model:{value:e.value,callback:function(t){e.value=t},expression:"value"}})],1)}),[],!1,null,null,null).exports;var $e=r(71225),Fe=r(74479),Ve=r(71418),je=r(49264);const He={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},ze={READ_ONLY:He.READ,UPLOAD_AND_UPDATE:He.READ|He.UPDATE|He.CREATE|He.DELETE,FILE_DROP:He.CREATE,ALL:He.UPDATE|He.CREATE|He.READ|He.DELETE|He.SHARE,ALL_FILE:He.UPDATE|He.READ|He.SHARE};var qe=r(77815);const Ge=(0,qe.KU)(),Ye={mixins:[Re],props:{fileInfo:{type:Object,default:()=>{},required:!0},share:{type:Ae,default:null},isUnique:{type:Boolean,default:!0}},data(){return{config:new pe,node:null,ShareType:oe.I,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new je.A({concurrency:1}),reactiveState:this.share?.state}},computed:{path(){return(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/")},hasNote:{get(){return""!==this.share.note},set(e){this.share.note=e?null:""}},dateTomorrow:()=>new Date((new Date).setDate((new Date).getDate()+1)),lang(){const 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"}},isNewShare(){return!this.share.id},isFolder(){return"dir"===this.fileInfo.type},isPublicShare(){const e=this.share.shareType??this.share.type;return[oe.I.Link,oe.I.Email].includes(e)},isRemoteShare(){return this.share.type===oe.I.RemoteGroup||this.share.type===oe.I.Remote},isShareOwner(){return this.share&&this.share.owner===(0,n.HW)().uid},isExpiryDateEnforced(){return this.isPublicShare?this.config.isDefaultExpireDateEnforced:this.isRemoteShare?this.config.isDefaultRemoteExpireDateEnforced:this.config.isDefaultInternalExpireDateEnforced},hasCustomPermissions(){return![ze.ALL,ze.READ_ONLY,ze.FILE_DROP].includes(this.share.permissions)},maxExpirationDateEnforced(){return this.isExpiryDateEnforced?this.isPublicShare?this.config.defaultExpirationDate:this.isRemoteShare?this.config.defaultRemoteExpirationDateString:this.config.defaultInternalExpirationDate:null}},methods:{async getNode(){const e={path:this.path};try{this.node=await(async e=>{const t=(0,qe.aN)(),i=await Ge.stat(`${(0,qe.ei)()}${e}`,{details:!0,data:t});return(0,qe.pO)(i.data)})(e.path),ge.info("Fetched node:",{node:this.node})}catch(e){ge.error("Error:",e)}},checkShare:e=>(!e.password||"string"==typeof e.password&&""!==e.password.trim())&&!(e.expirationDate&&!e.expirationDate.isValid()),formatDateToString:e=>new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())).toISOString().split("T")[0],onExpirationChange(e){const t=e?this.formatDateToString(new Date(e)):"";this.share.expireDate=t},onNoteChange(e){this.$set(this.share,"newNote",e.trim())},onNoteSubmit(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},async onDelete(){try{this.loading=!0,this.open=!1,await this.deleteShare(this.share.id),console.debug("Share deleted",this.share.id);const e="file"===this.share.itemType?t("files_sharing",'File "{path}" has been unshared',{path:this.share.path}):t("files_sharing",'Folder "{path}" has been unshared',{path:this.share.path});(0,me.Te)(e),this.$emit("remove:share",this.share),await this.getNode(),(0,De.Ic)("files:node:updated",this.node)}catch(e){this.open=!0}finally{this.loading=!1}},queueUpdate(){for(var e=arguments.length,i=new Array(e),r=0;r<e;r++)i[r]=arguments[r];if(0!==i.length){if(this.share.id){const e={};return i.forEach((t=>{null===this.share[t]||void 0===this.share[t]?e[t]="":"object"==typeof this.share[t]?e[t]=JSON.stringify(this.share[t]):e[t]=this.share[t].toString()})),this.updateQueue.add((async()=>{this.saving=!0,this.errors={};try{const t=await this.updateShare(this.share.id,e);i.indexOf("password")>=0&&(this.$delete(this.share,"newPassword"),this.share.passwordExpirationTime=t.password_expiration_time),this.$delete(this.errors,i[0]),(0,me.Te)(this.updateSuccessMessage(i))}catch(e){ge.error("Could not update share",{error:e,share:this.share,propertyNames:i});const{message:r}=e;r&&""!==r?(this.onSyncError(i[0],r),(0,me.Qg)(r)):(0,me.Qg)(t("files_sharing","Could not update share"))}finally{this.saving=!1}}))}console.debug("Updated local share",this.share)}},updateSuccessMessage(e){if(1!==e.length)return t("files_sharing","Share saved");switch(e[0]){case"expireDate":return t("files_sharing","Share expiry date saved");case"hideDownload":return t("files_sharing","Share hide-download state saved");case"label":return t("files_sharing","Share label saved");case"note":return t("files_sharing","Share note for recipient saved");case"password":return t("files_sharing","Share password saved");case"permissions":return t("files_sharing","Share permissions saved");default:return t("files_sharing","Share saved")}},onSyncError(e,t){switch(this.open=!0,e){case"password":case"pending":case"expireDate":case"label":case"note":{this.$set(this.errors,e,t);let i=this.$refs[e];if(i){i.$el&&(i=i.$el);const e=i.querySelector(".focusable");e&&e.focus()}break}case"sendPasswordByTalk":this.$set(this.errors,e,t),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:Ne()((function(e){this.queueUpdate(e)}),500)}},We={name:"SharingEntryInherited",components:{NcActionButton:X.A,NcActionLink:Fe.A,NcActionText:Ve.A,NcAvatar:E.A,SharingEntrySimple:_e},mixins:[Ye],props:{share:{type:Ae,required:!0}},computed:{viaFileTargetUrl(){return(0,o.Jv)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName(){return(0,$e.P8)(this.share.viaPath)}}};var Xe=r(59879),Qe={};Qe.styleTagTransform=y(),Qe.setAttributes=g(),Qe.insert=p().bind(null,"head"),Qe.domAPI=u(),Qe.insertStyleElement=m(),c()(Xe.A,Qe),Xe.A&&Xe.A.locals&&Xe.A.locals;const Ze=(0,Ee.A)(We,(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,"fe8ed59e",null).exports,Ke={name:"SharingInherited",components:{NcActionButton:X.A,SharingEntryInherited:Ze,SharingEntrySimple:_e},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}),computed:{showInheritedSharesIcon(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:()=>t("files_sharing","Others with access"),subTitle(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other accounts with access found"):""},toggleTooltip(){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(){return`${this.fileInfo.path}/${this.fileInfo.name}`.replace("//","/")}},watch:{fileInfo(){this.resetState()}},methods:{toggleInheritedShares(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},async fetchInheritedShares(){this.loading=!0;try{const e=(0,o.KT)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:this.fullPath}),t=await Z.Ay.get(e);this.shares=t.data.ocs.data.map((e=>new Ae(e))).sort(((e,t)=>t.createdTime-e.createdTime)),console.info(this.shares),this.loaded=!0}catch(e){OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"})}finally{this.loading=!1}},resetState(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}};var Je=r(56467),et={};et.styleTagTransform=y(),et.setAttributes=g(),et.insert=p().bind(null,"head"),et.domAPI=u(),et.insertStyleElement=m(),c()(Je.A,et),Je.A&&Je.A.locals&&Je.A.locals;const tt=(0,Ee.A)(Ke,(function(){var e=this,t=e._self._c;return e.shares.length?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}],null,!1,1184892072)},[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(i){return t("SharingEntryInherited",{key:i.id,attrs:{"file-info":e.fileInfo,share:i},on:{"remove:share":e.removeShare}})}))],2):e._e()}),[],!1,null,"a6cc72e6",null).exports;var it=r(17816),rt=r.n(it),nt=r(97691),st=r(44131),at=r(15502),ot=r(94219);const lt={name:"TuneIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ct=(0,Ee.A)(lt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon tune-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,ht={name:"CalendarBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ut=(0,Ee.A)(ht,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon calendar-blank-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,dt={name:"QrcodeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pt=(0,Ee.A)(dt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon qrcode-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,ft={name:"ExclamationIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},gt=(0,Ee.A)(ft,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon exclamation-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M 11,4L 13,4L 13,15L 11,15L 11,4 Z M 13,18L 13,20L 11,20L 11,18L 13,18 Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,At={name:"LockIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mt=(0,Ee.A)(At,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon lock-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,vt={name:"CheckBoldIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},yt=(0,Ee.A)(vt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon check-bold-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var Ct=r(66001),wt=r(96078);const bt={name:"TriangleSmallDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Et=(0,Ee.A)(bt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon triangle-small-down-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M8 9H16L12 16"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,_t={name:"EyeOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},xt=(0,Ee.A)(_t,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon eye-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var St=r(2413);const It={name:"FileUploadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},kt=(0,Ee.A)(It,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon file-upload-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13.5,16V19H10.5V16H8L12,12L16,16H13.5M13,9V3.5L18.5,9H13Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Tt={name:"SharingEntryQuickShareSelect",components:{DropdownIcon:Et,NcActions:W.A,NcActionButton:X.A},mixins:[Ye,Be],props:{share:{type:Object,required:!0}},emits:["open-sharing-details"],data:()=>({selectedOption:""}),computed:{ariaLabel(){return t("files_sharing",'Quick share options, the current selected is "{selectedOption}"',{selectedOption:this.selectedOption})},canViewText:()=>t("files_sharing","View only"),canEditText:()=>t("files_sharing","Can edit"),fileDropText:()=>t("files_sharing","File request"),customPermissionsText:()=>t("files_sharing","Custom permissions"),preSelectedOption(){return(this.share.permissions&~He.SHARE)===ze.READ_ONLY?this.canViewText:this.share.permissions===ze.ALL||this.share.permissions===ze.ALL_FILE?this.canEditText:(this.share.permissions&~He.SHARE)===ze.FILE_DROP?this.fileDropText:this.customPermissionsText},options(){const e=[{label:this.canViewText,icon:xt},{label:this.canEditText,icon:St.A}];return this.supportsFileDrop&&e.push({label:this.fileDropText,icon:kt}),e.push({label:this.customPermissionsText,icon:ct}),e},supportsFileDrop(){if(this.isFolder&&this.config.isPublicUploadEnabled){const e=this.share.type??this.share.shareType;return[oe.I.Link,oe.I.Email].includes(e)}return!1},dropDownPermissionValue(){switch(this.selectedOption){case this.canEditText:return this.isFolder?ze.ALL:ze.ALL_FILE;case this.fileDropText:return ze.FILE_DROP;case this.customPermissionsText:return"custom";case this.canViewText:default:return ze.READ_ONLY}}},created(){this.selectedOption=this.preSelectedOption},mounted(){(0,De.B1)("update:share",(e=>{e.id===this.share.id&&(this.share.permissions=e.permissions,this.selectedOption=this.preSelectedOption)}))},unmounted(){(0,De.al)("update:share")},methods:{selectOption(e){this.selectedOption=e,e===this.customPermissionsText?this.$emit("open-sharing-details"):(this.share.permissions=this.dropDownPermissionValue,this.queueUpdate("permissions"),this.$refs.quickShareActions.$refs.menuButton.$el.focus())}}},Nt=Tt;var Dt=r(88522),Pt={};Pt.styleTagTransform=y(),Pt.setAttributes=g(),Pt.insert=p().bind(null,"head"),Pt.domAPI=u(),Pt.insertStyleElement=m(),c()(Dt.A,Pt),Dt.A&&Dt.A.locals&&Dt.A.locals;const Rt=(0,Ee.A)(Nt,(function(){var e=this,t=e._self._c;return t("NcActions",{ref:"quickShareActions",staticClass:"share-select",attrs:{"menu-name":e.selectedOption,"aria-label":e.ariaLabel,type:"tertiary-no-background",disabled:!e.share.canEdit,"force-name":""},scopedSlots:e._u([{key:"icon",fn:function(){return[t("DropdownIcon",{attrs:{size:15}})]},proxy:!0}])},[e._v(" "),e._l(e.options,(function(i){return t("NcActionButton",{key:i.label,attrs:{type:"radio","model-value":i.label===e.selectedOption,"close-after-click":""},on:{click:function(t){return e.selectOption(i.label)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t(i.icon,{tag:"component"})]},proxy:!0}],null,!0)},[e._v("\n\t\t"+e._s(i.label)+"\n\t")])}))],2)}),[],!1,null,"2aa230f1",null).exports;var Bt=r(4604);const Lt={name:"ClockIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ot=(0,Ee.A)(Lt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon clock-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Mt={name:"ShareExpiryTime",components:{NcButton:ue.A,NcPopover:ce.N,NcDateTime:Bt.A,ClockIcon:Ot},props:{share:{type:Object,required:!0}},computed:{expiryTime(){return this.share?.expireDate?new Date(this.share.expireDate).getTime():null},timeFormat:()=>({dateStyle:"full",timeStyle:"short"})}};var Ut=r(38310),$t={};$t.styleTagTransform=y(),$t.setAttributes=g(),$t.insert=p().bind(null,"head"),$t.domAPI=u(),$t.insertStyleElement=m(),c()(Ut.A,$t),Ut.A&&Ut.A.locals&&Ut.A.locals;const Ft=(0,Ee.A)(Mt,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"share-expiry-time"},[t("NcPopover",{attrs:{"popup-role":"dialog"},scopedSlots:e._u([{key:"trigger",fn:function(){return[e.expiryTime?t("NcButton",{staticClass:"hint-icon",attrs:{type:"tertiary","aria-label":e.t("files_sharing","Share expiration: ")+new Date(e.expiryTime).toLocaleString()},scopedSlots:e._u([{key:"icon",fn:function(){return[t("ClockIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,3754271979)}):e._e()]},proxy:!0}])},[e._v(" "),t("h3",{staticClass:"hint-heading"},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Share Expiration"))+"\n\t\t")]),e._v(" "),e.expiryTime?t("p",{staticClass:"hint-body"},[t("NcDateTime",{attrs:{timestamp:e.expiryTime,format:e.timeFormat,"relative-time":!1}}),e._v(" ("),t("NcDateTime",{attrs:{timestamp:e.expiryTime}}),e._v(")\n\t\t")],1):e._e()])],1)}),[],!1,null,"66d8c844",null).exports,Vt={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:()=>({})},fileInfo:{type:Object,default:()=>{},required:!0},share:{type:Ae,default:null}},computed:{data(){return this.action.data(this)}}},jt=(0,Ee.A)(Vt,(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,Ht=new pe;async function zt(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(Ht.passwordPolicy.api&&Ht.passwordPolicy.api.generate)try{const t=await Z.Ay.get(Ht.passwordPolicy.api.generate);if(t.data.ocs.data.password)return e&&(0,me.Te)((0,b.Tl)("files_sharing","Password created successfully")),t.data.ocs.data.password}catch(t){console.info("Error generating password from password_policy",t),e&&(0,me.Qg)((0,b.Tl)("files_sharing","Error generating password from password policy"))}const t=new Uint8Array(10),i=52/255;self.crypto.getRandomValues(t);let r="";for(let e=0;e<t.length;e++)r+="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789".charAt(t[e]*i);return r}const qt={name:"SharingEntryLink",components:{ExternalShareAction:jt,NcActions:W.A,NcActionButton:X.A,NcActionCheckbox:nt.N,NcActionInput:st.A,NcActionLink:Fe.A,NcActionText:Ve.A,NcActionSeparator:at.A,NcAvatar:E.A,NcDialog:ot.A,VueQrcode:rt(),Tune:ct,IconCalendarBlank:ut,IconQr:pt,ErrorIcon:gt,LockIcon:mt,CheckIcon:yt,ClipboardIcon:ye.A,CloseIcon:Ct.A,PlusIcon:wt.A,SharingEntryQuickShareSelect:Rt,ShareExpiryTime:Ft},mixins:[Ye,Be],props:{canReshare:{type:Boolean,default:!0},index:{type:Number,default:null}},data:()=>({shareCreationComplete:!1,copySuccess:!0,copied:!1,defaultExpirationDateEnabled:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state,logger:(0,fe.YK)().setApp("files_sharing").detectUser().build(),showQRCode:!1}),computed:{title(){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?this.isFileRequest?t("files_sharing","File request ({label})",{label:this.share.label.trim()}):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&&""!==this.share.shareWith.trim()?this.share.shareWith:this.isFileRequest?t("files_sharing","File request"):t("files_sharing","Mail share");if(null===this.index)return t("files_sharing","Share link")}return this.index>=1?t("files_sharing","Share link ({index})",{index:this.index}):t("files_sharing","Create public link")},subtitle(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(e){Q.Ay.set(this.share,"password",e?await zt(!0):""),Q.Ay.set(this.share,"newPassword",this.share.password)}},passwordExpirationTime(){if(null===this.share.passwordExpirationTime)return null;const e=(0,he.A)(this.share.passwordExpirationTime);return!(e.diff((0,he.A)())<0)&&e.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(e){this.share.sendPasswordByTalk=e}},isEmailShareType(){return!!this.share&&this.share.type===oe.I.Email},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingDataIsMissing(){return this.pendingPassword||this.pendingEnforcedPassword||this.pendingDefaultExpirationDate||this.pendingEnforcedExpirationDate},pendingPassword(){return this.config.enableLinkPasswordByDefault&&this.isPendingShare},pendingEnforcedPassword(){return this.config.enforcePasswordForPublicLink&&this.isPendingShare},pendingEnforcedExpirationDate(){return this.config.isDefaultExpireDateEnforced&&this.isPendingShare},pendingDefaultExpirationDate(){return(this.config.defaultExpirationDate instanceof Date||!isNaN(new Date(this.config.defaultExpirationDate).getTime()))&&this.isPendingShare},isPendingShare(){return!(!this.share||this.share.id)},sharePolicyHasEnforcedProperties(){return this.config.enforcePasswordForPublicLink||this.config.isDefaultExpireDateEnforced},enforcedPropertiesMissing(){if(!this.sharePolicyHasEnforcedProperties)return!1;if(!this.share)return!0;if(this.share.id)return!0;const e=this.config.enforcePasswordForPublicLink&&!this.share.password,t=this.config.isDefaultExpireDateEnforced&&!this.share.expireDate;return e||t},hasUnsavedPassword(){return void 0!==this.share.newPassword},shareLink(){return(0,o.Jv)("/s/{token}",{token:this.share.token},{baseURL:(0,o.$_)()})},actionsTooltip(){return t("files_sharing",'Actions for "{title}"',{title:this.title})},copyLinkTooltip(){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(){return this.ExternalLegacyLinkActions.actions},externalLinkActions(){return this.ExternalShareActions.actions.filter((e=>(e.shareType.includes(oe.I.Link)||e.shareType.includes(oe.I.Email))&&!e.advanced))},isPasswordPolicyEnabled(){return"object"==typeof this.config.passwordPolicy},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((e=>"permissions"===e.scope&&"download"===e.key&&!1===e.value))},isFileRequest(){return this.share.isFileRequest}},mounted(){this.defaultExpirationDateEnabled=this.config.defaultExpirationDate instanceof Date,this.share&&this.isNewShare&&(this.share.expireDate=this.defaultExpirationDateEnabled?this.formatDateToString(this.config.defaultExpirationDate):"")},methods:{shareRequiresReview(e){return!e&&(this.defaultExpirationDateEnabled||this.config.enableLinkPasswordByDefault)},async onNewLinkShare(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.logger.debug("onNewLinkShare called (with this.share)",this.share),this.loading)return;const i={share_type:oe.I.Link};if(this.config.isDefaultExpireDateEnforced&&(i.expiration=this.formatDateToString(this.config.defaultExpirationDate)),this.logger.debug("Missing required properties?",this.enforcedPropertiesMissing),this.sharePolicyHasEnforcedProperties&&this.enforcedPropertiesMissing||this.shareRequiresReview(!0===e)){this.pending=!0,this.shareCreationComplete=!1,this.logger.info("Share policy requires a review or has mandated properties (password, expirationDate)..."),(this.config.enableLinkPasswordByDefault||this.config.enforcePasswordForPublicLink)&&(i.password=await zt(!0));const e=new Ae(i),t=await new Promise((t=>{this.$emit("add:share",e,t)}));this.open=!1,this.pending=!1,t.open=!0}else{if(this.share&&!this.share.id){if(this.checkShare(this.share)){try{this.logger.info("Sending existing share to server",this.share),await this.pushNewLinkShare(this.share,!0),this.shareCreationComplete=!0,this.logger.info("Share created on server",this.share)}catch(e){return this.pending=!1,this.logger.error("Error creating share",e),!1}return!0}return this.open=!0,(0,me.Qg)(t("files_sharing","Error, please enter proper password and/or expiration date")),!1}const e=new Ae(i);await this.pushNewLinkShare(e),this.shareCreationComplete=!0}},async pushNewLinkShare(e,i){try{if(this.loading)return!0;this.loading=!0,this.errors={};const r={path:(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),shareType:oe.I.Link,password:e.password,expireDate:e.expireDate??"",attributes:JSON.stringify(this.fileInfo.shareAttributes)};console.debug("Creating link share with options",r);const n=await this.createShare(r);let s;this.open=!1,this.shareCreationComplete=!0,console.debug("Link share created",n),s=i?await new Promise((e=>{this.$emit("update:share",n,e)})):await new Promise((e=>{this.$emit("add:share",n,e)})),await this.getNode(),(0,De.Ic)("files:node:updated",this.node),this.config.enforcePasswordForPublicLink||s.copyLink(),(0,me.Te)(t("files_sharing","Link share created"))}catch(e){const i=e?.response?.data?.ocs?.meta?.message;if(!i)return(0,me.Qg)(t("files_sharing","Error while creating the share")),void console.error(e);throw i.match(/password/i)?this.onSyncError("password",i):i.match(/date/i)?this.onSyncError("expireDate",i):this.onSyncError("pending",i),e}finally{this.loading=!1,this.shareCreationComplete=!0}},async copyLink(){try{await navigator.clipboard.writeText(this.shareLink),(0,me.Te)(t("files_sharing","Link copied")),this.$refs.copyButton.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,console.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}},onPasswordChange(e){this.$set(this.share,"newPassword",e)},onPasswordDisable(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose(){this.onPasswordSubmit(),this.onNoteSubmit()},onExpirationDateToggleUpdate(e){this.share.expireDate=e?this.formatDateToString(this.config.defaultExpirationDate):""},expirationDateChanged(e){const t=e.target.value;this.onExpirationChange(t),this.defaultExpirationDateEnabled=!!t},onCancel(){this.shareCreationComplete||this.$emit("remove:share",this.share)}}},Gt=qt;var Yt=r(58356),Wt={};Wt.styleTagTransform=y(),Wt.setAttributes=g(),Wt.insert=p().bind(null,"head"),Wt.domAPI=u(),Wt.insertStyleElement=m(),c()(Yt.A,Wt),Yt.A&&Yt.A.locals&&Yt.A.locals;const Xt={name:"SharingLinkList",components:{SharingEntryLink:(0,Ee.A)(Gt,(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__summary"},[t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title",attrs:{title:e.title}},[e._v("\n\t\t\t\t"+e._s(e.title)+"\n\t\t\t")]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t\t"+e._s(e.subtitle)+"\n\t\t\t")]):e._e(),e._v(" "),e.share&&void 0!==e.share.permissions?t("SharingEntryQuickShareSelect",{attrs:{share:e.share,"file-info":e.fileInfo},on:{"open-sharing-details":function(t){return e.openShareDetailsForCustomSettings(e.share)}}}):e._e()],1),e._v(" "),t("div",{staticClass:"sharing-entry__actions"},[e.share&&e.share.expireDate?t("ShareExpiryTime",{attrs:{share:e.share}}):e._e(),e._v(" "),t("div",[e.share&&(!e.isEmailShareType||e.isFileRequest)&&e.share.token?t("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("NcActionButton",{attrs:{"aria-label":e.copyLinkTooltip,title:e.copyLinkTooltip,href:e.shareLink},on:{click:function(t){return t.preventDefault(),e.copyLink.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.copied&&e.copySuccess?t("CheckIcon",{staticClass:"icon-checkmark-color",attrs:{size:20}}):t("ClipboardIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,4269614823)})],1):e._e()],1)],1)]),e._v(" "),!e.pending&&e.pendingDataIsMissing?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.onCancel}},[e.errors.pending?t("NcActionText",{staticClass:"error",scopedSlots:e._u([{key:"icon",fn:function(){return[t("ErrorIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,1966124155)},[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("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.config.enforcePasswordForPublicLink?e.t("files_sharing","Password protection (enforced)"):e.t("files_sharing","Password protection"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingEnforcedPassword||e.share.password?t("NcActionInput",{staticClass:"share-link-password",attrs:{label:e.t("files_sharing","Enter a password"),value:e.share.password,disabled:e.saving,required:e.config.enableLinkPasswordByDefault||e.config.enforcePasswordForPublicLink,minlength:e.isPasswordPolicyEnabled&&e.config.passwordPolicy.minLength,autocomplete:"new-password"},on:{"update:value":function(t){return e.$set(e.share,"password",t)},submit:function(t){return e.onNewLinkShare(!0)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("LockIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2056568168)}):e._e(),e._v(" "),e.pendingDefaultExpirationDate?t("NcActionCheckbox",{staticClass:"share-link-expiration-date-checkbox",attrs:{checked:e.defaultExpirationDateEnabled,disabled:e.pendingEnforcedExpirationDate||e.saving},on:{"update:checked":function(t){e.defaultExpirationDateEnabled=t},"update:model-value":e.onExpirationDateToggleUpdate}},[e._v("\n\t\t\t"+e._s(e.config.isDefaultExpireDateEnforced?e.t("files_sharing","Enable link expiration (enforced)"):e.t("files_sharing","Enable link expiration"))+"\n\t\t")]):e._e(),e._v(" "),(e.pendingDefaultExpirationDate||e.pendingEnforcedExpirationDate)&&e.defaultExpirationDateEnabled?t("NcActionInput",{staticClass:"share-link-expire-date",attrs:{"data-cy-files-sharing-expiration-date-input":"",label:e.pendingEnforcedExpirationDate?e.t("files_sharing","Enter expiration date (enforced)"):e.t("files_sharing","Enter expiration date"),disabled:e.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.maxExpirationDateEnforced},on:{change:function(t){return e.expirationDateChanged(t)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconCalendarBlank",{attrs:{size:20}})]},proxy:!0}],null,!1,3418578971)}):e._e(),e._v(" "),t("NcActionButton",{on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare(!0)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("CheckIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2630571749)},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Create share"))+"\n\t\t")]),e._v(" "),t("NcActionButton",{on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onCancel.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("CloseIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2428343285)},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t")])],1):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("NcActionButton",{attrs:{disabled:e.saving,"close-after-click":!0},on:{click:function(t){return t.preventDefault(),e.openSharingDetails.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Tune",{attrs:{size:20}})]},proxy:!0}],null,!1,1300586850)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Customize link"))+"\n\t\t\t\t")])]:e._e(),e._v(" "),t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(t){t.preventDefault(),e.showQRCode=!0}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconQr",{attrs:{size:20}})]},proxy:!0}],null,!1,1082198240)},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Generate QR code"))+"\n\t\t\t")]),e._v(" "),t("NcActionSeparator"),e._v(" "),e._l(e.externalLinkActions,(function(i){return t("ExternalShareAction",{key:i.id,attrs:{id:i.id,action:i,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),e._l(e.externalLegacyLinkActions,(function(i,r){let{icon:n,url:s,name:a}=i;return t("NcActionLink",{key:r,attrs:{href:s(e.shareLink),icon:n,target:"_blank"}},[e._v("\n\t\t\t\t"+e._s(a)+"\n\t\t\t")])})),e._v(" "),!e.isEmailShareType&&e.canReshare?t("NcActionButton",{staticClass:"new-share-link",on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("PlusIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2953566425)},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Add another link"))+"\n\t\t\t")]):e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("CloseIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2428343285)},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\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),e._v(" "),e.showQRCode?t("NcDialog",{attrs:{size:"normal",open:e.showQRCode,name:e.title,"close-on-click-outside":!0},on:{"update:open":function(t){e.showQRCode=t},close:function(t){e.showQRCode=!1}}},[t("div",{staticClass:"qr-code-dialog"},[t("VueQrcode",{staticClass:"qr-code-dialog__img",attrs:{tag:"img",value:e.shareLink}})],1)]):e._e()],1)}),[],!1,null,"43291a73",null).exports},mixins:[Be],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0},canReshare:{type:Boolean,required:!0}},data:()=>({canLinkShare:(0,de.F)().files_sharing.public.enabled}),computed:{hasLinkShares(){return this.shares.filter((e=>e.type===oe.I.Link)).length>0},hasShares(){return this.shares.length>0}},methods:{t:b.t,addShare(e,t){this.shares.push(e),this.awaitForShare(e,t)},awaitForShare(e,t){this.$nextTick((()=>{const i=this.$children.find((t=>t.share===e));i&&t(i)}))},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}},Qt=(0,Ee.A)(Xt,(function(){var e=this,t=e._self._c;return e.canLinkShare?t("ul",{staticClass:"sharing-link-list",attrs:{"aria-label":e.t("files_sharing","Link shares")}},[!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(i,r){return t("SharingEntryLink",{key:i.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(...arguments)}],"add:share":function(t){return e.addShare(...arguments)},"remove:share":e.removeShare,"open-sharing-details":function(t){return e.openSharingDetails(i)}}})})):e._e()],2):e._e()}),[],!1,null,null,null).exports;var Zt=r(26690);const Kt={name:"SharingEntry",components:{NcButton:ue.A,NcAvatar:E.A,DotsHorizontalIcon:Zt.A,NcSelect:_.A,ShareExpiryTime:Ft,SharingEntryQuickShareSelect:Rt},mixins:[Ye,Be],computed:{title(){let e=this.share.shareWithDisplayName;return this.share.type===oe.I.Group?e+=` (${t("files_sharing","group")})`:this.share.type===oe.I.Room?e+=` (${t("files_sharing","conversation")})`:this.share.type===oe.I.Remote?e+=` (${t("files_sharing","remote")})`:this.share.type===oe.I.RemoteGroup?e+=` (${t("files_sharing","remote group")})`:this.share.type===oe.I.Guest&&(e+=` (${t("files_sharing","guest")})`),!this.isShareOwner&&this.share.ownerDisplayName&&(e+=" "+t("files_sharing","by {initiator}",{initiator:this.share.ownerDisplayName})),e},tooltip(){if(this.share.owner!==this.share.uidFileOwner){const e={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===oe.I.Group?t("files_sharing","Shared with the group {user} by {owner}",e):this.share.type===oe.I.Room?t("files_sharing","Shared with the conversation {user} by {owner}",e):t("files_sharing","Shared with {user} by {owner}",e)}return null},hasStatus(){return this.share.type===oe.I.User&&"object"==typeof this.share.status&&!Array.isArray(this.share.status)}},methods:{onMenuClose(){this.onNoteSubmit()}}};var Jt=r(70162),ei={};ei.styleTagTransform=y(),ei.setAttributes=g(),ei.insert=p().bind(null,"head"),ei.domAPI=u(),ei.insertStyleElement=m(),c()(Jt.A,ei),Jt.A&&Jt.A.locals&&Jt.A.locals;const ti={name:"SharingList",components:{SharingEntry:(0,Ee.A)(Kt,(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.ShareType.User,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}),e._v(" "),t("div",{staticClass:"sharing-entry__summary"},[t(e.share.shareWithLink?"a":"div",{tag:"component",staticClass:"sharing-entry__summary__desc",attrs:{title:e.tooltip,"aria-label":e.tooltip,href:e.share.shareWithLink}},[t("span",[e._v(e._s(e.title)+"\n\t\t\t\t"),e.isUnique?e._e():t("span",{staticClass:"sharing-entry__summary__desc-unique"},[e._v(" ("+e._s(e.share.shareWithDisplayNameUnique)+")")]),e._v(" "),e.hasStatus&&e.share.status.message?t("small",[e._v("("+e._s(e.share.status.message)+")")]):e._e()])]),e._v(" "),t("SharingEntryQuickShareSelect",{attrs:{share:e.share,"file-info":e.fileInfo},on:{"open-sharing-details":function(t){return e.openShareDetailsForCustomSettings(e.share)}}})],1),e._v(" "),e.share&&e.share.expireDate?t("ShareExpiryTime",{attrs:{share:e.share}}):e._e(),e._v(" "),e.share.canEdit?t("NcButton",{staticClass:"sharing-entry__action",attrs:{"data-cy-files-sharing-share-actions":"","aria-label":e.t("files_sharing","Open Sharing Details"),type:"tertiary"},on:{click:function(t){return e.openSharingDetails(e.share)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("DotsHorizontalIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,1700783217)}):e._e()],1)}),[],!1,null,"2dbd45b5",null).exports},mixins:[Be],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0}},setup:()=>({t:b.t}),computed:{hasShares(){return 0===this.shares.length},isUnique(){return e=>[...this.shares].filter((t=>e.type===oe.I.User&&e.shareWithDisplayName===t.shareWithDisplayName)).length<=1}}},ii=(0,Ee.A)(ti,(function(){var e=this,t=e._self._c;return t("ul",{staticClass:"sharing-sharee-list",attrs:{"aria-label":e.t("files_sharing","Shares")}},e._l(e.shares,(function(i){return t("SharingEntry",{key:i.id,attrs:{"file-info":e.fileInfo,share:i,"is-unique":e.isUnique(i)},on:{"open-sharing-details":function(t){return e.openSharingDetails(i)}}})})),1)}),[],!1,null,null,null).exports;var ri=r(32073),ni=r(48046),si=r(16879),ai=r(59892),oi=r(16044),li=r(177);const ci={name:"CircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},hi=(0,Ee.A)(ci,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon circle-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,ui={name:"EmailIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},di=(0,Ee.A)(ui,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon email-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var pi=r(36600),fi=r(43261);const gi={name:"ShareCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ai=(0,Ee.A)(gi,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon share-circle-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M14 16V13C10.39 13 7.81 14.43 6 17C6.72 13.33 8.94 9.73 14 9V6L19 11L14 16Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,mi={name:"AccountCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},vi=(0,Ee.A)(mi,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon account-circle-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.07,18.28C7.5,17.38 10.12,16.5 12,16.5C13.88,16.5 16.5,17.38 16.93,18.28C15.57,19.36 13.86,20 12,20C10.14,20 8.43,19.36 7.07,18.28M18.36,16.83C16.93,15.09 13.46,14.5 12,14.5C10.54,14.5 7.07,15.09 5.64,16.83C4.62,15.5 4,13.82 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,13.82 19.38,15.5 18.36,16.83M12,6C10.06,6 8.5,7.56 8.5,9.5C8.5,11.44 10.06,13 12,13C13.94,13 15.5,11.44 15.5,9.5C15.5,7.56 13.94,6 12,6M12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,yi={name:"EyeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ci=(0,Ee.A)(yi,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon eye-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var wi=r(65422),bi=r(25384),Ei=r(33388);const _i={name:"RefreshIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},xi=(0,Ee.A)(_i,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon refresh-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Si={name:"SharingDetailsTab",components:{NcAvatar:E.A,NcButton:ue.A,NcCheckboxRadioSwitch:ri.A,NcDateTimePickerNative:ni.A,NcInputField:si.A,NcLoadingIcon:ai.A,NcPasswordField:oi.A,NcTextArea:li.A,CloseIcon:Ct.A,CircleIcon:hi,EditIcon:St.A,ExternalShareAction:jt,LinkIcon:pi.A,GroupIcon:fi.A,ShareIcon:Ai,UserIcon:vi,UploadIcon:wi.A,ViewIcon:Ci,MenuDownIcon:bi.A,MenuUpIcon:Ei.A,DotsHorizontalIcon:Zt.A,Refresh:xi},mixins:[Re,Ye],props:{shareRequestValue:{type:Object,required:!1},fileInfo:{type:Object,required:!0},share:{type:Object,required:!0}},data(){return{writeNoteToRecipientIsChecked:!1,sharingPermission:ze.ALL.toString(),revertSharingPermission:ze.ALL.toString(),setCustomPermissions:!1,passwordError:!1,advancedSectionAccordionExpanded:!1,bundledPermissions:ze,isFirstComponentLoad:!0,test:!1,creating:!1,initialToken:this.share.token,loadingToken:!1,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}},computed:{title(){switch(this.share.type){case oe.I.User:return t("files_sharing","Share with {userName}",{userName:this.share.shareWithDisplayName});case oe.I.Email:return t("files_sharing","Share with email {email}",{email:this.share.shareWith});case oe.I.Link:return t("files_sharing","Share link");case oe.I.Group:return t("files_sharing","Share with group");case oe.I.Room:return t("files_sharing","Share in conversation");case oe.I.Remote:{const[e,i]=this.share.shareWith.split("@");return t("files_sharing","Share with {user} on remote server {server}",{user:e,server:i})}case oe.I.RemoteGroup:return t("files_sharing","Share with remote group");case oe.I.Guest:return t("files_sharing","Share with guest");default:return this.share.id?t("files_sharing","Update share"):t("files_sharing","Create share")}},canEdit:{get(){return this.share.hasUpdatePermission},set(e){this.updateAtomicPermissions({isEditChecked:e})}},canCreate:{get(){return this.share.hasCreatePermission},set(e){this.updateAtomicPermissions({isCreateChecked:e})}},canDelete:{get(){return this.share.hasDeletePermission},set(e){this.updateAtomicPermissions({isDeleteChecked:e})}},canReshare:{get(){return this.share.hasSharePermission},set(e){this.updateAtomicPermissions({isReshareChecked:e})}},showInGridView:{get(){return this.getShareAttribute("config","grid_view",!1)},set(e){this.setShareAttribute("config","grid_view",e)}},canDownload:{get(){return this.getShareAttribute("permissions","download",!0)},set(e){this.setShareAttribute("permissions","download",e)}},hasRead:{get(){return this.share.hasReadPermission},set(e){this.updateAtomicPermissions({isReadChecked:e})}},hasExpirationDate:{get(){return this.isValidShareAttribute(this.share.expireDate)},set(e){this.share.expireDate=e?this.formatDateToString(this.defaultExpiryDate):""}},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(e){e?(this.share.password=await zt(!0),this.$set(this.share,"newPassword",this.share.password)):(this.share.password="",this.$delete(this.share,"newPassword"))}},isFolder(){return"dir"===this.fileInfo.type},isSetDownloadButtonVisible(){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)},isPasswordEnforced(){return this.isPublicShare&&this.config.enforcePasswordForPublicLink},defaultExpiryDate(){return(this.isGroupShare||this.isUserShare)&&this.config.isDefaultInternalExpireDateEnabled?new Date(this.config.defaultInternalExpirationDate):this.isRemoteShare&&this.config.isDefaultRemoteExpireDateEnabled?new Date(this.config.defaultRemoteExpireDateEnabled):this.isPublicShare&&this.config.isDefaultExpireDateEnabled?new Date(this.config.defaultExpirationDate):new Date((new Date).setDate((new Date).getDate()+1))},isUserShare(){return this.share.type===oe.I.User},isGroupShare(){return this.share.type===oe.I.Group},allowsFileDrop(){return!(!this.isFolder||!this.config.isPublicUploadEnabled||this.share.type!==oe.I.Link&&this.share.type!==oe.I.Email)},hasFileDropPermissions(){return this.share.permissions===this.bundledPermissions.FILE_DROP},shareButtonText(){return this.isNewShare?t("files_sharing","Save share"):t("files_sharing","Update share")},resharingIsPossible(){return this.config.isResharingAllowed&&this.share.type!==oe.I.Link&&this.share.type!==oe.I.Email},canSetEdit(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canSetDownload(){return this.fileInfo.canDownload()||this.canDownload},canRemoveReadPermission(){return this.allowsFileDrop&&(this.share.type===oe.I.Link||this.share.type===oe.I.Email)},hasUnsavedPassword(){return void 0!==this.share.newPassword},passwordExpirationTime(){if(!this.isValidShareAttribute(this.share.passwordExpirationTime))return null;const e=(0,he.A)(this.share.passwordExpirationTime);return!(e.diff((0,he.A)())<0)&&e.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(e){this.share.sendPasswordByTalk=e}},isEmailShareType(){return!!this.share&&this.share.type===oe.I.Email},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPublicShare||!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword||void 0===OC.appswebroots.spreed)},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((e=>"download"===e.key&&"permissions"===e.scope&&!1===e.value))},customPermissionsList(){const e={[He.READ]:this.t("files_sharing","Read"),[He.CREATE]:this.t("files_sharing","Create"),[He.UPDATE]:this.t("files_sharing","Edit"),[He.SHARE]:this.t("files_sharing","Share"),[He.DELETE]:this.t("files_sharing","Delete")};return[He.READ,He.CREATE,He.UPDATE,...this.resharingIsPossible?[He.SHARE]:[],He.DELETE].filter((e=>{return t=this.share.permissions,i=e,t!==He.NONE&&(t&i)===i;var t,i})).map(((t,i)=>0===i?e[t]:e[t].toLocaleLowerCase((0,b.Z0)()))).join(", ")},advancedControlExpandedValue(){return this.advancedSectionAccordionExpanded?"true":"false"},errorPasswordLabel(){if(this.passwordError)return t("files_sharing","Password field cannot be empty")},passwordHint(){if(!this.isNewShare&&!this.hasUnsavedPassword)return t("files_sharing","Replace current password")},externalLinkActions(){return this.ExternalShareActions.actions.filter((e=>(e.shareType.includes(oe.I.Link)||e.shareType.includes(oe.I.Email))&&e.advanced))}},watch:{setCustomPermissions(e){this.sharingPermission=e?"custom":this.revertSharingPermission}},beforeMount(){this.initializePermissions(),this.initializeAttributes(),ge.debug("Share object received",{share:this.share}),ge.debug("Configuration object received",{config:this.config})},mounted(){this.$refs.quickPermissions?.querySelector("input:checked")?.focus()},methods:{setShareAttribute(e,t,i){this.share.attributes||this.$set(this.share,"attributes",[]);const r=this.share.attributes.find((i=>i.scope===e||i.key===t));r?r.value=i:this.share.attributes.push({scope:e,key:t,value:i})},getShareAttribute(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;const r=this.share.attributes?.find((i=>i.scope===e&&i.key===t));return r?.value??i},async generateNewToken(){if(!this.loadingToken){this.loadingToken=!0;try{this.share.token=await(async()=>{const{data:e}=await Z.Ay.get((0,o.KT)("/apps/files_sharing/api/v1/token"));return e.ocs.data.token})()}catch(e){(0,me.Qg)(t("files_sharing","Failed to generate a new token"))}this.loadingToken=!1}},cancel(){this.share.token=this.initialToken,this.$emit("close-sharing-details")},updateAtomicPermissions(){let{isReadChecked:e=this.hasRead,isEditChecked:t=this.canEdit,isCreateChecked:i=this.canCreate,isDeleteChecked:r=this.canDelete,isReshareChecked:n=this.canReshare}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const s=(e?He.READ:0)|(i?He.CREATE:0)|(r?He.DELETE:0)|(t?He.UPDATE:0)|(n?He.SHARE:0);this.share.permissions=s},expandCustomPermissions(){this.advancedSectionAccordionExpanded||(this.advancedSectionAccordionExpanded=!0),this.toggleCustomPermissions()},toggleCustomPermissions(e){const t="custom"===this.sharingPermission;this.revertSharingPermission=t?"custom":e,this.setCustomPermissions=t},async initializeAttributes(){if(this.isNewShare)return this.isPasswordEnforced&&this.isPublicShare&&(this.$set(this.share,"newPassword",await zt(!0)),this.advancedSectionAccordionExpanded=!0),this.isPublicShare&&this.config.isDefaultExpireDateEnabled?this.share.expireDate=this.config.defaultExpirationDate.toDateString():this.isRemoteShare&&this.config.isDefaultRemoteExpireDateEnabled?this.share.expireDate=this.config.defaultRemoteExpirationDateString.toDateString():this.config.isDefaultInternalExpireDateEnabled&&(this.share.expireDate=this.config.defaultInternalExpirationDate.toDateString()),void(this.isValidShareAttribute(this.share.expireDate)&&(this.advancedSectionAccordionExpanded=!0));!this.isValidShareAttribute(this.share.expireDate)&&this.isExpiryDateEnforced&&(this.hasExpirationDate=!0),(this.isValidShareAttribute(this.share.password)||this.isValidShareAttribute(this.share.expireDate)||this.isValidShareAttribute(this.share.label))&&(this.advancedSectionAccordionExpanded=!0),this.share.note&&(this.writeNoteToRecipientIsChecked=!0)},handleShareType(){"shareType"in this.share?this.share.type=this.share.shareType:this.share.share_type&&(this.share.type=this.share.share_type)},handleDefaultPermissions(){if(this.isNewShare){const e=this.config.defaultPermissions;e===ze.READ_ONLY||e===ze.ALL?this.sharingPermission=e.toString():(this.sharingPermission="custom",this.share.permissions=e,this.advancedSectionAccordionExpanded=!0,this.setCustomPermissions=!0)}this.canRemoveReadPermission||(this.hasRead=!0)},handleCustomPermissions(){this.isNewShare||!this.hasCustomPermissions&&!this.share.setCustomPermissions?this.share.permissions&&(this.sharingPermission=this.share.permissions.toString()):(this.sharingPermission="custom",this.advancedSectionAccordionExpanded=!0,this.setCustomPermissions=!0)},initializePermissions(){this.handleShareType(),this.handleDefaultPermissions(),this.handleCustomPermissions()},async saveShare(){const e=["permissions","attributes","note","expireDate"],t=["label","password","hideDownload"];this.config.allowCustomTokens&&t.push("token"),this.isPublicShare&&e.push(...t);const i=parseInt(this.sharingPermission);if(this.setCustomPermissions?this.updateAtomicPermissions():this.share.permissions=i,this.isFolder||this.share.permissions!==ze.ALL||(this.share.permissions=ze.ALL_FILE),this.writeNoteToRecipientIsChecked||(this.share.note=""),this.isPasswordProtected?this.hasUnsavedPassword&&this.isValidShareAttribute(this.share.newPassword)?(this.share.password=this.share.newPassword,this.$delete(this.share,"newPassword")):this.isPasswordEnforced&&this.isNewShare&&!this.isValidShareAttribute(this.share.password)&&(this.passwordError=!0):this.share.password="",this.hasExpirationDate||(this.share.expireDate=""),this.isNewShare){const t={permissions:this.share.permissions,shareType:this.share.type,shareWith:this.share.shareWith,attributes:this.share.attributes,note:this.share.note,fileInfo:this.fileInfo};t.expireDate=this.hasExpirationDate?this.share.expireDate:"",this.isPasswordProtected&&(t.password=this.share.password),this.creating=!0;const i=await this.addShare(t);this.share._share.id=i.id,await this.queueUpdate(...e);for(const t of e)if(t in i&&t in this.share)try{i[t]=this.share[t]}catch{i._share[t]=this.share[t]}this.share=i,this.creating=!1,this.$emit("add:share",this.share)}else this.$emit("update:share",this.share),(0,De.Ic)("update:share",this.share),this.queueUpdate(...e);await this.getNode(),(0,De.Ic)("files:node:updated",this.node),this.$refs.externalLinkActions?.length>0&&await Promise.allSettled(this.$refs.externalLinkActions.map((e=>"function"!=typeof e.$children.at(0)?.onSave?Promise.resolve():e.$children.at(0)?.onSave?.()))),this.$emit("close-sharing-details")},async addShare(e){ge.debug("Adding a new share from the input for",{share:e});const t=this.path;try{return await this.createShare({path:t,shareType:e.shareType,shareWith:e.shareWith,permissions:e.permissions,expireDate:e.expireDate,attributes:JSON.stringify(e.attributes),...e.note?{note:e.note}:{},...e.password?{password:e.password}:{}})}catch(e){ge.error("Error while adding new share",{error:e})}},async removeShare(){await this.onDelete(),await this.getNode(),(0,De.Ic)("files:node:updated",this.node),this.$emit("close-sharing-details")},onPasswordChange(e){if(""===e)return this.$delete(this.share,"newPassword"),void(this.passwordError=this.isNewShare&&this.isPasswordEnforced);this.passwordError=!this.isValidShareAttribute(e),this.$set(this.share,"newPassword",e)},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},isValidShareAttribute:e=>![null,void 0].includes(e)&&e.trim().length>0,getShareTypeIcon(e){switch(e){case oe.I.Link:return pi.A;case oe.I.Guest:return vi;case oe.I.RemoteGroup:case oe.I.Group:return fi.A;case oe.I.Email:return di;case oe.I.Team:return hi;case oe.I.Room:case oe.I.Deck:case oe.I.ScienceMesh:return Ai;default:return null}}}};var Ii=r(80365),ki={};ki.styleTagTransform=y(),ki.setAttributes=g(),ki.insert=p().bind(null,"head"),ki.domAPI=u(),ki.insertStyleElement=m(),c()(Ii.A,ki),Ii.A&&Ii.A.locals&&Ii.A.locals;const Ti=(0,Ee.A)(Si,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharingTabDetailsView"},[t("div",{staticClass:"sharingTabDetailsView__header"},[t("span",[e.isUserShare?t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.shareType!==e.ShareType.User,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}):e._e(),e._v(" "),t(e.getShareTypeIcon(e.share.type),{tag:"component",attrs:{size:32}})],1),e._v(" "),t("span",[t("h1",[e._v(e._s(e.title))])])]),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__wrapper"},[t("div",{ref:"quickPermissions",staticClass:"sharingTabDetailsView__quick-permissions"},[t("div",[t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,"data-cy-files-sharing-share-permissions-bundle":"read-only",checked:e.sharingPermission,value:e.bundledPermissions.READ_ONLY.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]},scopedSlots:e._u([{key:"icon",fn:function(){return[t("ViewIcon",{attrs:{size:20}})]},proxy:!0}])},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","View only"))+"\n\t\t\t\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,"data-cy-files-sharing-share-permissions-bundle":"upload-edit",checked:e.sharingPermission,value:e.bundledPermissions.ALL.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]},scopedSlots:e._u([{key:"icon",fn:function(){return[t("EditIcon",{attrs:{size:20}})]},proxy:!0}])},[e.allowsFileDrop?[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Allow upload and editing"))+"\n\t\t\t\t\t")]:[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Allow editing"))+"\n\t\t\t\t\t")]],2),e._v(" "),e.allowsFileDrop?t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-sharing-share-permissions-bundle":"file-drop","button-variant":!0,checked:e.sharingPermission,value:e.bundledPermissions.FILE_DROP.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]},scopedSlots:e._u([{key:"icon",fn:function(){return[t("UploadIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,1083194048)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","File request"))+"\n\t\t\t\t\t"),t("small",{staticClass:"subline"},[e._v(e._s(e.t("files_sharing","Upload only")))])]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,"data-cy-files-sharing-share-permissions-bundle":"custom",checked:e.sharingPermission,value:"custom",name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.expandCustomPermissions]},scopedSlots:e._u([{key:"icon",fn:function(){return[t("DotsHorizontalIcon",{attrs:{size:20}})]},proxy:!0}])},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Custom permissions"))+"\n\t\t\t\t\t"),t("small",{staticClass:"subline"},[e._v(e._s(e.customPermissionsList))])])],1)]),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__advanced-control"},[t("NcButton",{attrs:{id:"advancedSectionAccordionAdvancedControl",type:"tertiary",alignment:"end-reverse","aria-controls":"advancedSectionAccordionAdvanced","aria-expanded":e.advancedControlExpandedValue},on:{click:function(t){e.advancedSectionAccordionExpanded=!e.advancedSectionAccordionExpanded}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.advancedSectionAccordionExpanded?t("MenuUpIcon"):t("MenuDownIcon")]},proxy:!0}])},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Advanced settings"))+"\n\t\t\t\t")])],1),e._v(" "),e.advancedSectionAccordionExpanded?t("div",{staticClass:"sharingTabDetailsView__advanced",attrs:{id:"advancedSectionAccordionAdvanced","aria-labelledby":"advancedSectionAccordionAdvancedControl",role:"region"}},[t("section",[e.isPublicShare?t("NcInputField",{staticClass:"sharingTabDetailsView__label",attrs:{autocomplete:"off",label:e.t("files_sharing","Share label"),value:e.share.label},on:{"update:value":function(t){return e.$set(e.share,"label",t)}}}):e._e(),e._v(" "),e.config.allowCustomTokens&&e.isPublicShare&&!e.isNewShare?t("NcInputField",{attrs:{autocomplete:"off",label:e.t("files_sharing","Share link token"),"helper-text":e.t("files_sharing","Set the public share link token to something easy to remember or generate a new token. It is not recommended to use a guessable token for shares which contain sensitive information."),"show-trailing-button":"","trailing-button-label":e.loadingToken?e.t("files_sharing","Generating…"):e.t("files_sharing","Generate new token"),value:e.share.token},on:{"update:value":function(t){return e.$set(e.share,"token",t)},"trailing-button-click":e.generateNewToken},scopedSlots:e._u([{key:"trailing-button-icon",fn:function(){return[e.loadingToken?t("NcLoadingIcon"):t("Refresh",{attrs:{size:20}})]},proxy:!0}],null,!1,4228062821)}):e._e(),e._v(" "),e.isPublicShare?[t("NcCheckboxRadioSwitch",{attrs:{checked:e.isPasswordProtected,disabled:e.isPasswordEnforced},on:{"update:checked":function(t){e.isPasswordProtected=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Set password"))+"\n\t\t\t\t\t")]),e._v(" "),e.isPasswordProtected?t("NcPasswordField",{attrs:{autocomplete:"new-password",value:e.hasUnsavedPassword?e.share.newPassword:"",error:e.passwordError,"helper-text":e.errorPasswordLabel||e.passwordHint,required:e.isPasswordEnforced&&e.isNewShare,label:e.t("files_sharing","Password")},on:{"update:value":e.onPasswordChange}}):e._e(),e._v(" "),e.isEmailShareType&&e.passwordExpirationTime?t("span",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:e.passwordExpirationTime}))+"\n\t\t\t\t\t")]):e.isEmailShareType&&null!==e.passwordExpirationTime?t("span",{attrs:{icon:"icon-error"}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Password expired"))+"\n\t\t\t\t\t")]):e._e()]:e._e(),e._v(" "),e.canTogglePasswordProtectedByTalkAvailable?t("NcCheckboxRadioSwitch",{attrs:{checked:e.isPasswordProtectedByTalk},on:{"update:checked":[function(t){e.isPasswordProtectedByTalk=t},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("NcCheckboxRadioSwitch",{attrs:{checked:e.hasExpirationDate,disabled:e.isExpiryDateEnforced},on:{"update:checked":function(t){e.hasExpirationDate=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.isExpiryDateEnforced?e.t("files_sharing","Expiration date (enforced)"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcDateTimePickerNative",{attrs:{id:"share-date-picker",value:new Date(e.share.expireDate??e.dateTomorrow),min:e.dateTomorrow,max:e.maxExpirationDateEnforced,"hide-label":"",label:e.t("files_sharing","Expiration date"),placeholder:e.t("files_sharing","Expiration date"),type:"date"},on:{input:e.onExpirationChange}}):e._e(),e._v(" "),e.isPublicShare?t("NcCheckboxRadioSwitch",{attrs:{disabled:e.canChangeHideDownload,checked:e.share.hideDownload},on:{"update:checked":[function(t){return e.$set(e.share,"hideDownload",t)},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")]):t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetDownload,checked:e.canDownload,"data-cy-files-sharing-share-permissions-checkbox":"download"},on:{"update:checked":function(t){e.canDownload=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Allow download and sync"))+"\n\t\t\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.writeNoteToRecipientIsChecked},on:{"update:checked":function(t){e.writeNoteToRecipientIsChecked=t}}},[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.writeNoteToRecipientIsChecked?[t("NcTextArea",{attrs:{label:e.t("files_sharing","Note to recipient"),placeholder:e.t("files_sharing","Enter a note for the share recipient"),value:e.share.note},on:{"update:value":function(t){return e.$set(e.share,"note",t)}}})]:e._e(),e._v(" "),e.isPublicShare&&e.isFolder?t("NcCheckboxRadioSwitch",{attrs:{checked:e.showInGridView},on:{"update:checked":function(t){e.showInGridView=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Show files in grid view"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e._l(e.externalLinkActions,(function(i){return t("ExternalShareAction",{key:i.id,ref:"externalLinkActions",refInFor:!0,attrs:{id:i.id,action:i,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.setCustomPermissions},on:{"update:checked":function(t){e.setCustomPermissions=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Custom permissions"))+"\n\t\t\t\t")]),e._v(" "),e.setCustomPermissions?t("section",{staticClass:"custom-permissions-group"},[t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canRemoveReadPermission,checked:e.hasRead,"data-cy-files-sharing-share-permissions-checkbox":"read"},on:{"update:checked":function(t){e.hasRead=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Read"))+"\n\t\t\t\t\t")]),e._v(" "),e.isFolder?t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetCreate,checked:e.canCreate,"data-cy-files-sharing-share-permissions-checkbox":"create"},on:{"update:checked":function(t){e.canCreate=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Create"))+"\n\t\t\t\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetEdit,checked:e.canEdit,"data-cy-files-sharing-share-permissions-checkbox":"update"},on:{"update:checked":function(t){e.canEdit=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Edit"))+"\n\t\t\t\t\t")]),e._v(" "),e.resharingIsPossible?t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetReshare,checked:e.canReshare,"data-cy-files-sharing-share-permissions-checkbox":"share"},on:{"update:checked":function(t){e.canReshare=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Share"))+"\n\t\t\t\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetDelete,checked:e.canDelete,"data-cy-files-sharing-share-permissions-checkbox":"delete"},on:{"update:checked":function(t){e.canDelete=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Delete"))+"\n\t\t\t\t\t")])],1):e._e(),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__delete"},[e.isNewShare?e._e():t("NcButton",{attrs:{"aria-label":e.t("files_sharing","Delete share"),disabled:!1,readonly:!1,type:"tertiary"},on:{click:function(t){return t.preventDefault(),e.removeShare.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("CloseIcon",{attrs:{size:16}})]},proxy:!0}],null,!1,2746485232)},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Delete share"))+"\n\t\t\t\t\t")])],1)],2)]):e._e()]),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__footer"},[t("div",{staticClass:"button-group"},[t("NcButton",{attrs:{"data-cy-files-sharing-share-editor-action":"cancel"},on:{click:e.cancel}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t\t")]),e._v(" "),t("NcButton",{attrs:{type:"primary","data-cy-files-sharing-share-editor-action":"save"},on:{click:e.saveShare},scopedSlots:e._u([e.creating?{key:"icon",fn:function(){return[t("NcLoadingIcon")]},proxy:!0}:null],null,!0)},[e._v("\n\t\t\t\t"+e._s(e.shareButtonText)+"\n\t\t\t\t")])],1)])])}),[],!1,null,"b61b0164",null).exports,Ni={name:"SharingTab",components:{CollectionList:ae,InfoIcon:le.A,NcAvatar:E.A,NcButton:ue.A,NcPopover:ce.N,SharingEntryInternal:ke,SharingEntrySimple:_e,SharingInherited:tt,SharingInput:Ue,SharingLinkList:Qt,SharingList:ii,SharingDetailsTab:Ti},mixins:[Be],data:()=>({config:new pe,deleteEvent:null,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,a.C)("core","projects_enabled",!1),showSharingDetailsView:!1,shareDetailsData:{},returnFocusElement:null,internalSharesHelpText:t("files_sharing","Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access."),externalSharesHelpText:t("files_sharing","Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID."),additionalSharesHelpText:t("files_sharing","Shares that are not part of the internal or external shares. This can be shares from apps or other sources.")}),computed:{isSharedWithMe(){return Object.keys(this.sharedWithMe).length>0},canReshare(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{async update(e){this.fileInfo=e,this.resetState(),this.getShares()},async getShares(){try{this.loading=!0;const e=(0,o.KT)("apps/files_sharing/api/v1/shares"),t="json",i=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),r=Z.Ay.get(e,{params:{format:t,path:i,reshares:!0}}),n=Z.Ay.get(e,{params:{format:t,path:i,shared_with_me:!0}}),[s,a]=await Promise.all([r,n]);this.loading=!1,this.processSharedWithMe(a),this.processShares(s)}catch(e){this.error=e?.response?.data?.ocs?.meta?.message?e.response.data.ocs.meta.message:t("files_sharing","Unable to load the shares list"),this.loading=!1,console.error("Error loading the shares list",e)}},resetState(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[],this.showSharingDetailsView=!1,this.shareDetailsData={}},updateExpirationSubtitle(e){const i=(0,he.A)(e.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:(0,he.A)(1e3*i).fromNow()})),(0,he.A)().unix()>i&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares(e){let{data:t}=e;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){const e=(0,s.My)(t.ocs.data.map((e=>new Ae(e))),[e=>e.shareWithDisplayName,e=>e.label,e=>e.createdTime]);this.linkShares=e.filter((e=>e.type===oe.I.Link||e.type===oe.I.Email)),this.shares=e.filter((e=>e.type!==oe.I.Link&&e.type!==oe.I.Email)),console.debug("Processed",this.linkShares.length,"link share(s)"),console.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe(e){let{data:i}=e;if(i.ocs&&i.ocs.data&&i.ocs.data[0]){const e=new Ae(i),r=function(e){return e.type===oe.I.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===oe.I.Team?t("files_sharing","Shared with you and {circle} by {owner}",{circle:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===oe.I.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})}(e),n=e.ownerDisplayName,s=e.owner;this.sharedWithMe={displayName:n,title:r,user:s},this.reshare=e,e.expireDate&&(0,he.A)(e.expireDate).unix()>(0,he.A)().unix()&&(this.updateExpirationSubtitle(e),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,e))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==(0,n.HW)().uid&&(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(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{};e.type===oe.I.Email?this.linkShares.unshift(e):this.shares.unshift(e),this.awaitForShare(e,t)},removeShare(e){const t=e.type===oe.I.Email||e.type===oe.I.Link?this.linkShares:this.shares,i=t.findIndex((t=>t.id===e.id));-1!==i&&t.splice(i,1)},awaitForShare(e,t){this.$nextTick((()=>{let i=this.$refs.shareList;e.type===oe.I.Email&&(i=this.$refs.linkShareList);const r=i.$children.find((t=>t.share===e));r&&t(r)}))},toggleShareDetailsView(e){if(!this.showSharingDetailsView)if(Array.from(document.activeElement.classList).some((e=>e.startsWith("action-")))){const e=document.activeElement.closest('[role="menu"]')?.id;this.returnFocusElement=document.querySelector(`[aria-controls="${e}"]`)}else this.returnFocusElement=document.activeElement;e&&(this.shareDetailsData=e),this.showSharingDetailsView=!this.showSharingDetailsView,this.showSharingDetailsView||this.$nextTick((()=>{this.returnFocusElement?.focus(),this.returnFocusElement=null}))}}},Di=Ni;var Pi=r(53114),Ri={};Ri.styleTagTransform=y(),Ri.setAttributes=g(),Ri.insert=p().bind(null,"head"),Ri.domAPI=u(),Ri.insertStyleElement=m(),c()(Pi.A,Ri),Pi.A&&Pi.A.locals&&Pi.A.locals;const Bi=(0,Ee.A)(Di,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharingTab",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))])]):e._e(),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:!e.showSharingDetailsView,expression:"!showSharingDetailsView"}],staticClass:"sharingTab__content"},[e.isSharedWithMe?t("ul",[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))],1):e._e(),e._v(" "),t("section",[t("div",{staticClass:"section-header"},[t("h4",[e._v(e._s(e.t("files_sharing","Internal shares")))]),e._v(" "),t("NcPopover",{attrs:{"popup-role":"dialog"},scopedSlots:e._u([{key:"trigger",fn:function(){return[t("NcButton",{staticClass:"hint-icon",attrs:{type:"tertiary-no-background","aria-label":e.t("files_sharing","Internal shares explanation")},scopedSlots:e._u([{key:"icon",fn:function(){return[t("InfoIcon",{attrs:{size:20}})]},proxy:!0}])})]},proxy:!0}])},[e._v(" "),t("p",{staticClass:"hint-body"},[e._v("\n\t\t\t\t\t\t"+e._s(e.internalSharesHelpText)+"\n\t\t\t\t\t")])])],1),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,placeholder:e.t("files_sharing","Share with accounts and teams")},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.loading?e._e():t("SharingList",{ref:"shareList",attrs:{shares:e.shares,"file-info":e.fileInfo},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.canReshare&&!e.loading?t("SharingInherited",{attrs:{"file-info":e.fileInfo}}):e._e(),e._v(" "),t("SharingEntryInternal",{attrs:{"file-info":e.fileInfo}})],1),e._v(" "),t("section",[t("div",{staticClass:"section-header"},[t("h4",[e._v(e._s(e.t("files_sharing","External shares")))]),e._v(" "),t("NcPopover",{attrs:{"popup-role":"dialog"},scopedSlots:e._u([{key:"trigger",fn:function(){return[t("NcButton",{staticClass:"hint-icon",attrs:{type:"tertiary-no-background","aria-label":e.t("files_sharing","External shares explanation")},scopedSlots:e._u([{key:"icon",fn:function(){return[t("InfoIcon",{attrs:{size:20}})]},proxy:!0}])})]},proxy:!0}])},[e._v(" "),t("p",{staticClass:"hint-body"},[e._v("\n\t\t\t\t\t\t"+e._s(e.externalSharesHelpText)+"\n\t\t\t\t\t")])])],1),e._v(" "),e.loading?e._e():t("SharingInput",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,"link-shares":e.linkShares,"is-external":!0,placeholder:e.t("files_sharing","Email, federated cloud id"),reshare:e.reshare,shares:e.shares},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.loading?e._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,shares:e.linkShares},on:{"open-sharing-details":e.toggleShareDetailsView}})],1),e._v(" "),e.sections.length>0&&!e.showSharingDetailsView?t("section",[t("div",{staticClass:"section-header"},[t("h4",[e._v(e._s(e.t("files_sharing","Additional shares")))]),e._v(" "),t("NcPopover",{attrs:{"popup-role":"dialog"},scopedSlots:e._u([{key:"trigger",fn:function(){return[t("NcButton",{staticClass:"hint-icon",attrs:{type:"tertiary-no-background","aria-label":e.t("files_sharing","Additional shares explanation")},scopedSlots:e._u([{key:"icon",fn:function(){return[t("InfoIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,915383693)})]},proxy:!0}],null,!1,1027936137)},[e._v(" "),t("p",{staticClass:"hint-body"},[e._v("\n\t\t\t\t\t\t"+e._s(e.additionalSharesHelpText)+"\n\t\t\t\t\t")])])],1),e._v(" "),e._l(e.sections,(function(i,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(i(e.$refs["section-"+r],e.fileInfo),{tag:"component",attrs:{"file-info":e.fileInfo}})],1)})),e._v(" "),e.projectsEnabled?t("div",{directives:[{name:"show",rawName:"v-show",value:!e.showSharingDetailsView&&e.fileInfo,expression:"!showSharingDetailsView && fileInfo"}],staticClass:"sharingTab__additionalContent"},[t("CollectionList",{attrs:{id:`${e.fileInfo.id}`,type:"file",name:e.fileInfo.name}})],1):e._e()],2):e._e()]),e._v(" "),e.showSharingDetailsView?t("SharingDetailsTab",{attrs:{"file-info":e.shareDetailsData.fileInfo,share:e.shareDetailsData.share},on:{"close-sharing-details":e.toggleShareDetailsView,"add:share":e.addShare,"remove:share":e.removeShare}}):e._e()],1)}),[],!1,null,"630c7354",null).exports},27518:e=>{"use strict";e.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},27514:e=>{"use strict";e.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},79722:e=>{"use strict";e.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},86886:e=>{"use strict";e.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"},35810:(e,t,i)=>{"use strict";i.d(t,{Al:()=>r.r,H4:()=>r.c,My:()=>u,Q$:()=>r.e,R3:()=>r.n,VL:()=>r.l,lJ:()=>r.d,pt:()=>r.F,ur:()=>d,v7:()=>c});var r=i(68251),n=(i(43627),i(53334)),s=i(380),a=i(65606);Error;const o=["B","KB","MB","GB","TB","PB"],l=["B","KiB","MiB","GiB","TiB","PiB"];function c(e,t=!1,i=!1,r=!1){i=i&&!r,"string"==typeof e&&(e=Number(e));let s=e>0?Math.floor(Math.log(e)/Math.log(r?1e3:1024)):0;s=Math.min((i?l.length:o.length)-1,s);const a=i?l[s]:o[s];let c=(e/Math.pow(r?1e3:1024,s)).toFixed(1);return!0===t&&0===s?("0.0"!==c?"< 1 ":"0 ")+(i?l[1]:o[1]):(c=s<2?parseFloat(c).toFixed(0):parseFloat(c).toLocaleString((0,n.lO)()),c+" "+a)}function h(e){return e instanceof Date?e.toISOString():String(e)}function u(e,t,i){i=i??[];const r=(t=t??[e=>e]).map(((e,t)=>"asc"===(i[t]??"asc")?1:-1)),s=Intl.Collator([(0,n.Z0)(),(0,n.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,i)=>{for(const[n,a]of t.entries()){const t=s.compare(h(a(e)),h(a(i)));if(0!==t)return t*r[n]}return 0}))}function d(e,t={}){const i={sortingMode:"basename",sortingOrder:"asc",...t};return u(e,[...i.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...i.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==i.sortingMode?[e=>e[i.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...i.sortFavoritesFirst?["asc"]:[],...i.sortFoldersFirst?["asc"]:[],..."mtime"===i.sortingMode?["asc"===i.sortingOrder?"desc":"asc"]:[],..."mtime"!==i.sortingMode&&"basename"!==i.sortingMode?[i.sortingOrder]:[],i.sortingOrder,i.sortingOrder])}var p,f,g={},A={};function m(){return p||(p=1,function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",i="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",r=new RegExp("^"+i+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,i){if(t){const r=Object.keys(t),n=r.length;for(let s=0;s<n;s++)e[r[s]]="strict"===i?[t[r[s]]]:t[r[s]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){return!(null==r.exec(e))},e.getAllMatches=function(e,t){const i=[];let r=t.exec(e);for(;r;){const n=[];n.startIndex=t.lastIndex-r[0].length;const s=r.length;for(let e=0;e<s;e++)n.push(r[e]);i.push(n),r=t.exec(e)}return i},e.nameRegexp=i}(A)),A}function v(){if(f)return g;f=1;const e=m(),t={allowBooleanAttributes:!1,unpairedTags:[]};function i(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function r(e,t){const i=t;for(;t<e.length;t++)if("?"!=e[t]&&" "!=e[t]);else{const r=e.substr(i,t-i);if(t>5&&"xml"===r)return u("InvalidXml","XML declaration allowed only at the start of the document.",p(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function n(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t<e.length;t++)if("-"===e[t]&&"-"===e[t+1]&&">"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let i=1;for(t+=8;t<e.length;t++)if("<"===e[t])i++;else if(">"===e[t]&&(i--,0===i))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t<e.length;t++)if("]"===e[t]&&"]"===e[t+1]&&">"===e[t+2]){t+=2;break}return t}g.validate=function(s,a){a=Object.assign({},t,a);const l=[];let d=!1,f=!1;"\ufeff"===s[0]&&(s=s.substr(1));for(let t=0;t<s.length;t++)if("<"===s[t]&&"?"===s[t+1]){if(t+=2,t=r(s,t),t.err)return t}else{if("<"!==s[t]){if(i(s[t]))continue;return u("InvalidChar","char '"+s[t]+"' is not expected.",p(s,t))}{let A=t;if(t++,"!"===s[t]){t=n(s,t);continue}{let m=!1;"/"===s[t]&&(m=!0,t++);let v="";for(;t<s.length&&">"!==s[t]&&" "!==s[t]&&"\t"!==s[t]&&"\n"!==s[t]&&"\r"!==s[t];t++)v+=s[t];if(v=v.trim(),"/"===v[v.length-1]&&(v=v.substring(0,v.length-1),t--),g=v,!e.isName(g)){let e;return e=0===v.trim().length?"Invalid space after '<'.":"Tag '"+v+"' is an invalid name.",u("InvalidTag",e,p(s,t))}const y=o(s,t);if(!1===y)return u("InvalidAttr","Attributes for '"+v+"' have open quote.",p(s,t));let C=y.value;if(t=y.index,"/"===C[C.length-1]){const e=t-C.length;C=C.substring(0,C.length-1);const i=c(C,a);if(!0!==i)return u(i.err.code,i.err.msg,p(s,e+i.err.line));d=!0}else if(m){if(!y.tagClosed)return u("InvalidTag","Closing tag '"+v+"' doesn't have proper closing.",p(s,t));if(C.trim().length>0)return u("InvalidTag","Closing tag '"+v+"' can't have attributes or invalid starting.",p(s,A));if(0===l.length)return u("InvalidTag","Closing tag '"+v+"' has not been opened.",p(s,A));{const e=l.pop();if(v!==e.tagName){let t=p(s,e.tagStartPos);return u("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+t.line+", col "+t.col+") instead of closing tag '"+v+"'.",p(s,A))}0==l.length&&(f=!0)}}else{const e=c(C,a);if(!0!==e)return u(e.err.code,e.err.msg,p(s,t-C.length+e.err.line));if(!0===f)return u("InvalidXml","Multiple possible root nodes found.",p(s,t));-1!==a.unpairedTags.indexOf(v)||l.push({tagName:v,tagStartPos:A}),d=!0}for(t++;t<s.length;t++)if("<"===s[t]){if("!"===s[t+1]){t++,t=n(s,t);continue}if("?"!==s[t+1])break;if(t=r(s,++t),t.err)return t}else if("&"===s[t]){const e=h(s,t);if(-1==e)return u("InvalidChar","char '&' is not expected.",p(s,t));t=e}else if(!0===f&&!i(s[t]))return u("InvalidXml","Extra text at the end",p(s,t));"<"===s[t]&&t--}}}var g;return d?1==l.length?u("InvalidTag","Unclosed tag '"+l[0].tagName+"'.",p(s,l[0].tagStartPos)):!(l.length>0)||u("InvalidXml","Invalid '"+JSON.stringify(l.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):u("InvalidXml","Start tag expected.",1)};const s='"',a="'";function o(e,t){let i="",r="",n=!1;for(;t<e.length;t++){if(e[t]===s||e[t]===a)""===r?r=e[t]:r!==e[t]||(r="");else if(">"===e[t]&&""===r){n=!0;break}i+=e[t]}return""===r&&{value:i,index:t,tagClosed:n}}const l=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function c(t,i){const r=e.getAllMatches(t,l),n={};for(let e=0;e<r.length;e++){if(0===r[e][1].length)return u("InvalidAttr","Attribute '"+r[e][2]+"' has no space in starting.",A(r[e]));if(void 0!==r[e][3]&&void 0===r[e][4])return u("InvalidAttr","Attribute '"+r[e][2]+"' is without value.",A(r[e]));if(void 0===r[e][3]&&!i.allowBooleanAttributes)return u("InvalidAttr","boolean attribute '"+r[e][2]+"' is not allowed.",A(r[e]));const t=r[e][2];if(!d(t))return u("InvalidAttr","Attribute '"+t+"' is an invalid name.",A(r[e]));if(n.hasOwnProperty(t))return u("InvalidAttr","Attribute '"+t+"' is repeated.",A(r[e]));n[t]=1}return!0}function h(e,t){if(";"===e[++t])return-1;if("#"===e[t])return function(e,t){let i=/\d/;for("x"===e[t]&&(t++,i=/[\da-fA-F]/);t<e.length;t++){if(";"===e[t])return t;if(!e[t].match(i))break}return-1}(e,++t);let i=0;for(;t<e.length;t++,i++)if(!(e[t].match(/\w/)&&i<20)){if(";"===e[t])break;return-1}return t}function u(e,t,i){return{err:{code:e,msg:t,line:i.line||i,col:i.col}}}function d(t){return e.isName(t)}function p(e,t){const i=e.substring(0,t).split(/\r?\n/);return{line:i.length,col:i[i.length-1].length+1}}function A(e){return e.startIndex+e[1].length}return g}var y,C,w,b,E,_,x,S,I,k,T,N={};function D(){return I?S:(I=1,S=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1})}var P,R,B,L,O,M,U,$,F,V,j,H,z,q={};function G(){if(P)return q;function e(n,s,a){let o;const l={};for(let c=0;c<n.length;c++){const h=n[c],u=t(h);let d="";if(d=void 0===a?u:a+"."+u,u===s.textNodeName)void 0===o?o=h[u]:o+=""+h[u];else{if(void 0===u)continue;if(h[u]){let t=e(h[u],s,d);const n=r(t,s);h[":@"]?i(t,h[":@"],d,s):1!==Object.keys(t).length||void 0===t[s.textNodeName]||s.alwaysCreateTextNode?0===Object.keys(t).length&&(s.alwaysCreateTextNode?t[s.textNodeName]="":t=""):t=t[s.textNodeName],void 0!==l[u]&&l.hasOwnProperty(u)?(Array.isArray(l[u])||(l[u]=[l[u]]),l[u].push(t)):s.isArray(u,d,n)?l[u]=[t]:l[u]=t}}}return"string"==typeof o?o.length>0&&(l[s.textNodeName]=o):void 0!==o&&(l[s.textNodeName]=o),l}function t(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const i=t[e];if(":@"!==i)return i}}function i(e,t,i,r){if(t){const n=Object.keys(t),s=n.length;for(let a=0;a<s;a++){const s=n[a];r.isArray(s,i+"."+s,!0,!0)?e[s]=[t[s]]:e[s]=t[s]}}}function r(e,t){const{textNodeName:i}=t,r=Object.keys(e).length;return 0===r||!(1!==r||!e[i]&&"boolean"!=typeof e[i]&&0!==e[i])}return P=1,q.prettify=function(t,i){return e(t,i)},q}function Y(){if(B)return R;B=1;const{buildOptions:e}=function(){if(y)return N;y=1;const e={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,i){return e}};return N.buildOptions=function(t){return Object.assign({},e,t)},N.defaultOptions=e,N}(),t=function(){if(T)return k;T=1;const e=m(),t=w?C:(w=1,C=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}),i=function(){if(E)return b;E=1;const e=m();function t(e,t){let i="";for(;t<e.length&&"'"!==e[t]&&'"'!==e[t];t++)i+=e[t];if(i=i.trim(),-1!==i.indexOf(" "))throw new Error("External entites are not supported");const r=e[t++];let n="";for(;t<e.length&&e[t]!==r;t++)n+=e[t];return[i,n,t]}function i(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"N"===e[t+3]&&"T"===e[t+4]&&"I"===e[t+5]&&"T"===e[t+6]&&"Y"===e[t+7]}function r(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"L"===e[t+3]&&"E"===e[t+4]&&"M"===e[t+5]&&"E"===e[t+6]&&"N"===e[t+7]&&"T"===e[t+8]}function n(e,t){return"!"===e[t+1]&&"A"===e[t+2]&&"T"===e[t+3]&&"T"===e[t+4]&&"L"===e[t+5]&&"I"===e[t+6]&&"S"===e[t+7]&&"T"===e[t+8]}function s(e,t){return"!"===e[t+1]&&"N"===e[t+2]&&"O"===e[t+3]&&"T"===e[t+4]&&"A"===e[t+5]&&"T"===e[t+6]&&"I"===e[t+7]&&"O"===e[t+8]&&"N"===e[t+9]}function a(t){if(e.isName(t))return t;throw new Error(`Invalid entity name ${t}`)}return b=function(e,o){const l={};if("O"!==e[o+3]||"C"!==e[o+4]||"T"!==e[o+5]||"Y"!==e[o+6]||"P"!==e[o+7]||"E"!==e[o+8])throw new Error("Invalid Tag instead of DOCTYPE");{o+=9;let c=1,h=!1,u=!1,d="";for(;o<e.length;o++)if("<"!==e[o]||u)if(">"===e[o]){if(u?"-"===e[o-1]&&"-"===e[o-2]&&(u=!1,c--):c--,0===c)break}else"["===e[o]?h=!0:d+=e[o];else{if(h&&i(e,o)){let i,r;o+=7,[i,r,o]=t(e,o+1),-1===r.indexOf("&")&&(l[a(i)]={regx:RegExp(`&${i};`,"g"),val:r})}else h&&r(e,o)||h&&n(e,o)?o+=8:h&&s(e,o)?o+=9:u=!0;c++,d=""}if(0!==c)throw new Error("Unclosed DOCTYPE")}return{entities:l,i:o}}}(),r=function(){if(x)return _;x=1;const e=/^[-+]?0x[a-fA-F0-9]+$/,t=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const i={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return _=function(r,n={}){if(n=Object.assign({},i,n),!r||"string"!=typeof r)return r;let s=r.trim();if(void 0!==n.skipLike&&n.skipLike.test(s))return r;if(n.hex&&e.test(s))return Number.parseInt(s,16);{const e=t.exec(s);if(e){const t=e[1],i=e[2];let o=(a=e[3])&&-1!==a.indexOf(".")?("."===(a=a.replace(/0+$/,""))?a="0":"."===a[0]?a="0"+a:"."===a[a.length-1]&&(a=a.substr(0,a.length-1)),a):a;const l=e[4]||e[6];if(!n.leadingZeros&&i.length>0&&t&&"."!==s[2])return r;if(!n.leadingZeros&&i.length>0&&!t&&"."!==s[1])return r;{const e=Number(s),a=""+e;return-1!==a.search(/[eE]/)||l?n.eNotation?e:r:-1!==s.indexOf(".")?"0"===a&&""===o||a===o||t&&a==="-"+o?e:r:i?o===a||t+o===a?e:r:s===a||s===t+a?e:r}}return r}var a}}(),n=D();function s(e){const t=Object.keys(e);for(let i=0;i<t.length;i++){const r=t[i];this.lastEntities[r]={regex:new RegExp("&"+r+";","g"),val:e[r]}}}function a(e,t,i,r,n,s,a){if(void 0!==e&&(this.options.trimValues&&!r&&(e=e.trim()),e.length>0)){a||(e=this.replaceEntitiesValue(e));const r=this.options.tagValueProcessor(t,e,i,n,s);return null==r?e:typeof r!=typeof e||r!==e?r:this.options.trimValues||e.trim()===e?y(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function o(e){if(this.options.removeNSPrefix){const t=e.split(":"),i="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=i+t[1])}return e}const l=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function c(t,i,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const r=e.getAllMatches(t,l),n=r.length,s={};for(let e=0;e<n;e++){const t=this.resolveNameSpace(r[e][1]);if(this.ignoreAttributesFn(t,i))continue;let n=r[e][4],a=this.options.attributeNamePrefix+t;if(t.length)if(this.options.transformAttributeName&&(a=this.options.transformAttributeName(a)),"__proto__"===a&&(a="#__proto__"),void 0!==n){this.options.trimValues&&(n=n.trim()),n=this.replaceEntitiesValue(n);const e=this.options.attributeValueProcessor(t,n,i);s[a]=null==e?n:typeof e!=typeof n||e!==n?e:y(n,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(s[a]=!0)}if(!Object.keys(s).length)return;if(this.options.attributesGroupName){const e={};return e[this.options.attributesGroupName]=s,e}return s}}const h=function(e){e=e.replace(/\r\n?/g,"\n");const r=new t("!xml");let n=r,s="",a="";for(let o=0;o<e.length;o++)if("<"===e[o])if("/"===e[o+1]){const t=g(e,">",o,"Closing Tag is not closed.");let i=e.substring(o+2,t).trim();if(this.options.removeNSPrefix){const e=i.indexOf(":");-1!==e&&(i=i.substr(e+1))}this.options.transformTagName&&(i=this.options.transformTagName(i)),n&&(s=this.saveTextToParentTag(s,n,a));const r=a.substring(a.lastIndexOf(".")+1);if(i&&-1!==this.options.unpairedTags.indexOf(i))throw new Error(`Unpaired tag can not be used as closing tag: </${i}>`);let l=0;r&&-1!==this.options.unpairedTags.indexOf(r)?(l=a.lastIndexOf(".",a.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=a.lastIndexOf("."),a=a.substring(0,l),n=this.tagsNodeStack.pop(),s="",o=t}else if("?"===e[o+1]){let i=A(e,o,!1,"?>");if(!i)throw new Error("Pi Tag is not closed.");if(s=this.saveTextToParentTag(s,n,a),this.options.ignoreDeclaration&&"?xml"===i.tagName||this.options.ignorePiTags);else{const e=new t(i.tagName);e.add(this.options.textNodeName,""),i.tagName!==i.tagExp&&i.attrExpPresent&&(e[":@"]=this.buildAttributesMap(i.tagExp,a,i.tagName)),this.addChild(n,e,a)}o=i.closeIndex+1}else if("!--"===e.substr(o+1,3)){const t=g(e,"--\x3e",o+4,"Comment is not closed.");if(this.options.commentPropName){const i=e.substring(o+4,t-2);s=this.saveTextToParentTag(s,n,a),n.add(this.options.commentPropName,[{[this.options.textNodeName]:i}])}o=t}else if("!D"===e.substr(o+1,2)){const t=i(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=g(e,"]]>",o,"CDATA is not closed.")-2,i=e.substring(o+9,t);s=this.saveTextToParentTag(s,n,a);let r=this.parseTextData(i,n.tagname,a,!0,!1,!0,!0);null==r&&(r=""),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:i}]):n.add(this.options.textNodeName,r),o=t+2}else{let i=A(e,o,this.options.removeNSPrefix),l=i.tagName;const c=i.rawTagName;let h=i.tagExp,u=i.attrExpPresent,d=i.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),n&&s&&"!xml"!==n.tagname&&(s=this.saveTextToParentTag(s,n,a,!1));const p=n;if(p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(n=this.tagsNodeStack.pop(),a=a.substring(0,a.lastIndexOf("."))),l!==r.tagname&&(a+=a?"."+l:l),this.isItStopNode(this.options.stopNodes,a,l)){let r="";if(h.length>0&&h.lastIndexOf("/")===h.length-1)"/"===l[l.length-1]?(l=l.substr(0,l.length-1),a=a.substr(0,a.length-1),h=l):h=h.substr(0,h.length-1),o=i.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(l))o=i.closeIndex;else{const t=this.readStopNodeData(e,c,d+1);if(!t)throw new Error(`Unexpected end of ${c}`);o=t.i,r=t.tagContent}const s=new t(l);l!==h&&u&&(s[":@"]=this.buildAttributesMap(h,a,l)),r&&(r=this.parseTextData(r,l,a,!0,u,!0,!0)),a=a.substr(0,a.lastIndexOf(".")),s.add(this.options.textNodeName,r),this.addChild(n,s,a)}else{if(h.length>0&&h.lastIndexOf("/")===h.length-1){"/"===l[l.length-1]?(l=l.substr(0,l.length-1),a=a.substr(0,a.length-1),h=l):h=h.substr(0,h.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));const e=new t(l);l!==h&&u&&(e[":@"]=this.buildAttributesMap(h,a,l)),this.addChild(n,e,a),a=a.substr(0,a.lastIndexOf("."))}else{const e=new t(l);this.tagsNodeStack.push(n),l!==h&&u&&(e[":@"]=this.buildAttributesMap(h,a,l)),this.addChild(n,e,a),n=e}s="",o=d}}else s+=e[o];return r.child};function u(e,t,i){const r=this.options.updateTag(t.tagname,i,t[":@"]);!1===r||("string"==typeof r?(t.tagname=r,e.addChild(t)):e.addChild(t))}const d=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const i=this.docTypeEntities[t];e=e.replace(i.regx,i.val)}for(let t in this.lastEntities){const i=this.lastEntities[t];e=e.replace(i.regex,i.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const i=this.htmlEntities[t];e=e.replace(i.regex,i.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function p(e,t,i,r){return e&&(void 0===r&&(r=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,i,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,r))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function f(e,t,i){const r="*."+i;for(const i in e){const n=e[i];if(r===n||t===n)return!0}return!1}function g(e,t,i,r){const n=e.indexOf(t,i);if(-1===n)throw new Error(r);return n+t.length-1}function A(e,t,i,r=">"){const n=function(e,t,i=">"){let r,n="";for(let s=t;s<e.length;s++){let t=e[s];if(r)t===r&&(r="");else if('"'===t||"'"===t)r=t;else if(t===i[0]){if(!i[1])return{data:n,index:s};if(e[s+1]===i[1])return{data:n,index:s}}else"\t"===t&&(t=" ");n+=t}}(e,t+1,r);if(!n)return;let s=n.data;const a=n.index,o=s.search(/\s/);let l=s,c=!0;-1!==o&&(l=s.substring(0,o),s=s.substring(o+1).trimStart());const h=l;if(i){const e=l.indexOf(":");-1!==e&&(l=l.substr(e+1),c=l!==n.data.substr(e+1))}return{tagName:l,tagExp:s,closeIndex:a,attrExpPresent:c,rawTagName:h}}function v(e,t,i){const r=i;let n=1;for(;i<e.length;i++)if("<"===e[i])if("/"===e[i+1]){const s=g(e,">",i,`${t} is not closed`);if(e.substring(i+2,s).trim()===t&&(n--,0===n))return{tagContent:e.substring(r,i),i:s};i=s}else if("?"===e[i+1])i=g(e,"?>",i+1,"StopNode is not closed.");else if("!--"===e.substr(i+1,3))i=g(e,"--\x3e",i+3,"StopNode is not closed.");else if("!["===e.substr(i+1,2))i=g(e,"]]>",i,"StopNode is not closed.")-2;else{const r=A(e,i,">");r&&((r&&r.tagName)===t&&"/"!==r.tagExp[r.tagExp.length-1]&&n++,i=r.closeIndex)}}function y(t,i,n){if(i&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&r(t,n)}return e.isExist(t)?t:""}return k=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=s,this.parseXml=h,this.parseTextData=a,this.resolveNameSpace=o,this.buildAttributesMap=c,this.isItStopNode=f,this.replaceEntitiesValue=d,this.readStopNodeData=v,this.saveTextToParentTag=p,this.addChild=u,this.ignoreAttributesFn=n(this.options.ignoreAttributes)}}}(),{prettify:i}=G(),r=v();return R=class{constructor(t){this.externalEntities={},this.options=e(t)}parse(e,n){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(n){!0===n&&(n={});const t=r.validate(e,n);if(!0!==t)throw Error(`${t.err.msg}:${t.err.line}:${t.err.col}`)}const s=new t(this.options);s.addExternalEntities(this.externalEntities);const a=s.parseXml(e);return this.options.preserveOrder||void 0===a?a:i(a,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}}function W(){if(O)return L;function e(s,a,o,l){let c="",h=!1;for(let u=0;u<s.length;u++){const d=s[u],p=t(d);if(void 0===p)continue;let f="";if(f=0===o.length?p:`${o}.${p}`,p===a.textNodeName){let e=d[p];r(f,a)||(e=a.tagValueProcessor(p,e),e=n(e,a)),h&&(c+=l),c+=e,h=!1;continue}if(p===a.cdataPropName){h&&(c+=l),c+=`<![CDATA[${d[p][0][a.textNodeName]}]]>`,h=!1;continue}if(p===a.commentPropName){c+=l+`\x3c!--${d[p][0][a.textNodeName]}--\x3e`,h=!0;continue}if("?"===p[0]){const e=i(d[":@"],a),t="?xml"===p?"":l;let r=d[p][0][a.textNodeName];r=0!==r.length?" "+r:"",c+=t+`<${p}${r}${e}?>`,h=!0;continue}let g=l;""!==g&&(g+=a.indentBy);const A=l+`<${p}${i(d[":@"],a)}`,m=e(d[p],a,f,g);-1!==a.unpairedTags.indexOf(p)?a.suppressUnpairedNode?c+=A+">":c+=A+"/>":m&&0!==m.length||!a.suppressEmptyNode?m&&m.endsWith(">")?c+=A+`>${m}${l}</${p}>`:(c+=A+">",m&&""!==l&&(m.includes("/>")||m.includes("</"))?c+=l+a.indentBy+m+l:c+=m,c+=`</${p}>`):c+=A+"/>",h=!0}return c}function t(e){const t=Object.keys(e);for(let i=0;i<t.length;i++){const r=t[i];if(e.hasOwnProperty(r)&&":@"!==r)return r}}function i(e,t){let i="";if(e&&!t.ignoreAttributes)for(let r in e){if(!e.hasOwnProperty(r))continue;let s=t.attributeValueProcessor(r,e[r]);s=n(s,t),!0===s&&t.suppressBooleanAttributes?i+=` ${r.substr(t.attributeNamePrefix.length)}`:i+=` ${r.substr(t.attributeNamePrefix.length)}="${s}"`}return i}function r(e,t){let i=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let r in t.stopNodes)if(t.stopNodes[r]===e||t.stopNodes[r]==="*."+i)return!0;return!1}function n(e,t){if(e&&e.length>0&&t.processEntities)for(let i=0;i<t.entities.length;i++){const r=t.entities[i];e=e.replace(r.regex,r.val)}return e}return O=1,L=function(t,i){let r="";return i.format&&i.indentBy.length>0&&(r="\n"),e(t,i,"",r)}}function X(){if(j)return V;j=1;const e="object"==typeof a&&a.env&&a.env.NODE_DEBUG&&/\bsemver\b/i.test(a.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};return V=e}function Q(){if(z)return H;z=1;const e=Number.MAX_SAFE_INTEGER||9007199254740991;return H={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:e,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}!function(){if(F)return $;F=1;const e=v(),t=Y(),i=function(){if(U)return M;U=1;const e=W(),t=D(),i={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function r(e){this.options=Object.assign({},i,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=t(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=a),this.processTextOrObjNode=n,this.options.format?(this.indentate=s,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function n(e,t,i,r){const n=this.j2x(e,i+1,r.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,i):this.buildObjectNode(n.val,t,n.attrStr,i)}function s(e){return this.options.indentBy.repeat(e)}function a(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}return r.prototype.build=function(t){return this.options.preserveOrder?e(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},r.prototype.j2x=function(e,t,i){let r="",n="";const s=i.join(".");for(let a in e)if(Object.prototype.hasOwnProperty.call(e,a))if(void 0===e[a])this.isAttribute(a)&&(n+="");else if(null===e[a])this.isAttribute(a)?n+="":"?"===a[0]?n+=this.indentate(t)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+a+"/"+this.tagEndChar;else if(e[a]instanceof Date)n+=this.buildTextValNode(e[a],a,"",t);else if("object"!=typeof e[a]){const i=this.isAttribute(a);if(i&&!this.ignoreAttributesFn(i,s))r+=this.buildAttrPairStr(i,""+e[a]);else if(!i)if(a===this.options.textNodeName){let t=this.options.tagValueProcessor(a,""+e[a]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[a],a,"",t)}else if(Array.isArray(e[a])){const r=e[a].length;let s="",o="";for(let l=0;l<r;l++){const r=e[a][l];if(void 0===r);else if(null===r)"?"===a[0]?n+=this.indentate(t)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+a+"/"+this.tagEndChar;else if("object"==typeof r)if(this.options.oneListGroup){const e=this.j2x(r,t+1,i.concat(a));s+=e.val,this.options.attributesGroupName&&r.hasOwnProperty(this.options.attributesGroupName)&&(o+=e.attrStr)}else s+=this.processTextOrObjNode(r,a,t,i);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(a,r);e=this.replaceEntitiesValue(e),s+=e}else s+=this.buildTextValNode(r,a,"",t)}this.options.oneListGroup&&(s=this.buildObjectNode(s,a,o,t)),n+=s}else if(this.options.attributesGroupName&&a===this.options.attributesGroupName){const t=Object.keys(e[a]),i=t.length;for(let n=0;n<i;n++)r+=this.buildAttrPairStr(t[n],""+e[a][t[n]])}else n+=this.processTextOrObjNode(e[a],a,t,i);return{attrStr:r,val:n}},r.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},r.prototype.buildObjectNode=function(e,t,i,r){if(""===e)return"?"===t[0]?this.indentate(r)+"<"+t+i+"?"+this.tagEndChar:this.indentate(r)+"<"+t+i+this.closeTag(t)+this.tagEndChar;{let n="</"+t+this.tagEndChar,s="";return"?"===t[0]&&(s="?",n=""),!i&&""!==i||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===s.length?this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(r)+"<"+t+i+s+this.tagEndChar+e+this.indentate(r)+n:this.indentate(r)+"<"+t+i+s+">"+e+n}},r.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},r.prototype.buildTextValNode=function(e,t,i,r){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(r)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(r)+"<"+t+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(t,e);return n=this.replaceEntitiesValue(n),""===n?this.indentate(r)+"<"+t+i+this.closeTag(t)+this.tagEndChar:this.indentate(r)+"<"+t+i+">"+n+"</"+t+this.tagEndChar}},r.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const i=this.options.entities[t];e=e.replace(i.regex,i.val)}return e},M=r}();$={XMLParser:t,XMLValidator:e,XMLBuilder:i}}();var Z,K,J,ee,te,ie,re,ne,se,ae,oe,le,ce,he={exports:{}};function ue(){if(re)return ie;re=1;const e=X(),{MAX_LENGTH:t,MAX_SAFE_INTEGER:i}=Q(),{safeRe:r,t:n}=(Z||(Z=1,function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:i,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:n}=Q(),s=X(),a=(t=e.exports={}).re=[],o=t.safeRe=[],l=t.src=[],c=t.t={};let h=0;const u="[a-zA-Z0-9-]",d=[["\\s",1],["\\d",n],[u,r]],p=(e,t,i)=>{const r=(e=>{for(const[t,i]of d)e=e.split(`${t}*`).join(`${t}{0,${i}}`).split(`${t}+`).join(`${t}{1,${i}}`);return e})(t),n=h++;s(e,n,t),c[e]=n,l[n]=t,a[n]=new RegExp(t,i?"g":void 0),o[n]=new RegExp(r,i?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${u}*`),p("MAINVERSION",`(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${l[c.NUMERICIDENTIFIER]}|${l[c.NONNUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${l[c.NUMERICIDENTIFIERLOOSE]}|${l[c.NONNUMERICIDENTIFIER]})`),p("PRERELEASE",`(?:-(${l[c.PRERELEASEIDENTIFIER]}(?:\\.${l[c.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${l[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[c.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${u}+`),p("BUILD",`(?:\\+(${l[c.BUILDIDENTIFIER]}(?:\\.${l[c.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${l[c.MAINVERSION]}${l[c.PRERELEASE]}?${l[c.BUILD]}?`),p("FULL",`^${l[c.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${l[c.MAINVERSIONLOOSE]}${l[c.PRERELEASELOOSE]}?${l[c.BUILD]}?`),p("LOOSE",`^${l[c.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${l[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${l[c.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:${l[c.PRERELEASE]})?${l[c.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:${l[c.PRERELEASELOOSE]})?${l[c.BUILD]}?)?)?`),p("XRANGE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${i}})(?:\\.(\\d{1,${i}}))?(?:\\.(\\d{1,${i}}))?`),p("COERCE",`${l[c.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",l[c.COERCEPLAIN]+`(?:${l[c.PRERELEASE]})?(?:${l[c.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",l[c.COERCE],!0),p("COERCERTLFULL",l[c.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${l[c.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",p("TILDE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${l[c.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",p("CARET",`^${l[c.LONECARET]}${l[c.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${l[c.LONECARET]}${l[c.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${l[c.GTLT]}\\s*(${l[c.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]}|${l[c.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${l[c.XRANGEPLAIN]})\\s+-\\s+(${l[c.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${l[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[c.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(he,he.exports)),he.exports),s=function(){if(J)return K;J=1;const e=Object.freeze({loose:!0}),t=Object.freeze({});return K=i=>i?"object"!=typeof i?e:i:t}(),{compareIdentifiers:a}=function(){if(te)return ee;te=1;const e=/^[0-9]+$/,t=(t,i)=>{const r=e.test(t),n=e.test(i);return r&&n&&(t=+t,i=+i),t===i?0:r&&!n?-1:n&&!r?1:t<i?-1:1};return ee={compareIdentifiers:t,rcompareIdentifiers:(e,i)=>t(i,e)}}();class o{constructor(a,l){if(l=s(l),a instanceof o){if(a.loose===!!l.loose&&a.includePrerelease===!!l.includePrerelease)return a;a=a.version}else if("string"!=typeof a)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof a}".`);if(a.length>t)throw new TypeError(`version is longer than ${t} characters`);e("SemVer",a,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const c=a.trim().match(l.loose?r[n.LOOSE]:r[n.FULL]);if(!c)throw new TypeError(`Invalid Version: ${a}`);if(this.raw=a,this.major=+c[1],this.minor=+c[2],this.patch=+c[3],this.major>i||this.major<0)throw new TypeError("Invalid major version");if(this.minor>i||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>i||this.patch<0)throw new TypeError("Invalid patch version");c[4]?this.prerelease=c[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<i)return t}return e})):this.prerelease=[],this.build=c[5]?c[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(e("SemVer.compare",this.version,this.options,t),!(t instanceof o)){if("string"==typeof t&&t===this.version)return 0;t=new o(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(e){return e instanceof o||(e=new o(e,this.options)),a(this.major,e.major)||a(this.minor,e.minor)||a(this.patch,e.patch)}comparePre(t){if(t instanceof o||(t=new o(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let i=0;do{const r=this.prerelease[i],n=t.prerelease[i];if(e("prerelease compare",i,r,n),void 0===r&&void 0===n)return 0;if(void 0===n)return 1;if(void 0===r)return-1;if(r!==n)return a(r,n)}while(++i)}compareBuild(t){t instanceof o||(t=new o(t,this.options));let i=0;do{const r=this.build[i],n=t.build[i];if(e("build compare",i,r,n),void 0===r&&void 0===n)return 0;if(void 0===n)return 1;if(void 0===r)return-1;if(r!==n)return a(r,n)}while(++i)}inc(e,t,i){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,i);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,i);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,i),this.inc("pre",t,i);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,i),this.inc("pre",t,i);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(i)?1:0;if(!t&&!1===i)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[e];else{let r=this.prerelease.length;for(;--r>=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);if(-1===r){if(t===this.prerelease.join(".")&&!1===i)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let r=[t,e];!1===i&&(r=[t]),0===a(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return ie=o}!function(){if(oe)return ae;oe=1;const e=function(){if(se)return ne;se=1;const e=ue();return ne=(t,i,r=!1)=>{if(t instanceof e)return t;try{return new e(t,i)}catch(e){if(!r)return null;throw e}}}();ae=(t,i)=>{const r=e(t,i);return r?r.version:null}}(),function(){if(ce)return le;ce=1;const e=ue();le=(t,i)=>new e(t,i).major}(),s.m}}]);
-//# sourceMappingURL=4542-4542.js.map?v=6ae44488299a7decef00 \ No newline at end of file
diff --git a/dist/4542-4542.js.map b/dist/4542-4542.js.map
deleted file mode 100644
index badee93f182..00000000000
--- a/dist/4542-4542.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"4542-4542.js?v=6ae44488299a7decef00","mappings":"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","sources":["webpack:///nextcloud/node_modules/@chenfengyuan/vue-qrcode/dist/vue-qrcode.js","webpack:///nextcloud/node_modules/nextcloud-vue-collections/dist/assets/index-CJAYjuyf.css","webpack:///nextcloud/apps/files_sharing/src/components/ShareExpiryTime.vue?vue&type=style&index=0&id=66d8c844&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=2dbd45b5&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=fe8ed59e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=57874406&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=43291a73&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=2aa230f1&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=44339fa4&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&id=272b9f81&prod&lang=scss","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=style&index=0&id=b61b0164&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=a6cc72e6&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=630c7354&prod&scoped=true&lang=scss","webpack:///nextcloud/node_modules/url-search-params-polyfill/index.js","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?0ae8","webpack://nextcloud/./node_modules/nextcloud-vue-collections/dist/assets/index-CJAYjuyf.css?bb25","webpack:///nextcloud/node_modules/lodash-es/isObject.js","webpack:///nextcloud/node_modules/lodash-es/_freeGlobal.js","webpack:///nextcloud/node_modules/lodash-es/_root.js","webpack:///nextcloud/node_modules/lodash-es/now.js","webpack:///nextcloud/node_modules/lodash-es/_trimmedEndIndex.js","webpack:///nextcloud/node_modules/lodash-es/_baseTrim.js","webpack:///nextcloud/node_modules/lodash-es/_Symbol.js","webpack:///nextcloud/node_modules/lodash-es/_getRawTag.js","webpack:///nextcloud/node_modules/lodash-es/_objectToString.js","webpack:///nextcloud/node_modules/lodash-es/_baseGetTag.js","webpack:///nextcloud/node_modules/lodash-es/toNumber.js","webpack:///nextcloud/node_modules/lodash-es/isSymbol.js","webpack:///nextcloud/node_modules/lodash-es/isObjectLike.js","webpack:///nextcloud/node_modules/lodash-es/debounce.js","webpack:///nextcloud/node_modules/nextcloud-vue-collections/dist/index.mjs","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.ts","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/models/Share.ts","webpack:///nextcloud/apps/files_sharing/src/services/SharingService.ts","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?6c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?f180","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?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?8c53","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?65df","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareDetails.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?e4c8","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?45a6","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","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?a297","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?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?0657","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?de0b","webpack:///nextcloud/node_modules/vue-material-design-icons/Tune.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Tune.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Tune.vue?7202","webpack:///nextcloud/node_modules/vue-material-design-icons/Tune.vue?vue&type=template&id=18d04e6a","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarBlank.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarBlank.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/CalendarBlank.vue?3d12","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarBlank.vue?vue&type=template&id=41fe7db9","webpack:///nextcloud/node_modules/vue-material-design-icons/Qrcode.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Qrcode.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Qrcode.vue?b80a","webpack:///nextcloud/node_modules/vue-material-design-icons/Qrcode.vue?vue&type=template&id=aba87788","webpack:///nextcloud/node_modules/vue-material-design-icons/Exclamation.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Exclamation.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Exclamation.vue?46e6","webpack:///nextcloud/node_modules/vue-material-design-icons/Exclamation.vue?vue&type=template&id=03239926","webpack:///nextcloud/node_modules/vue-material-design-icons/Lock.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Lock.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Lock.vue?93ae","webpack:///nextcloud/node_modules/vue-material-design-icons/Lock.vue?vue&type=template&id=6d856da2","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckBold.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckBold.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/CheckBold.vue?7500","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckBold.vue?vue&type=template&id=5603f41f","webpack:///nextcloud/node_modules/vue-material-design-icons/TriangleSmallDown.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/TriangleSmallDown.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/TriangleSmallDown.vue?8651","webpack:///nextcloud/node_modules/vue-material-design-icons/TriangleSmallDown.vue?vue&type=template&id=1eed3dd9","webpack:///nextcloud/node_modules/vue-material-design-icons/EyeOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/EyeOutline.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/EyeOutline.vue?9ce8","webpack:///nextcloud/node_modules/vue-material-design-icons/EyeOutline.vue?vue&type=template&id=e26de6f6","webpack:///nextcloud/node_modules/vue-material-design-icons/FileUpload.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FileUpload.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FileUpload.vue?c468","webpack:///nextcloud/node_modules/vue-material-design-icons/FileUpload.vue?vue&type=template&id=caa55e94","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?eb90","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?4441","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?0b36","webpack://nextcloud/./apps/files_sharing/src/components/ShareExpiryTime.vue?4496","webpack:///nextcloud/node_modules/vue-material-design-icons/Clock.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Clock.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Clock.vue?f027","webpack:///nextcloud/node_modules/vue-material-design-icons/Clock.vue?vue&type=template&id=539578bc","webpack:///nextcloud/apps/files_sharing/src/components/ShareExpiryTime.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/components/ShareExpiryTime.vue","webpack://nextcloud/./apps/files_sharing/src/components/ShareExpiryTime.vue?abc0","webpack://nextcloud/./apps/files_sharing/src/components/ShareExpiryTime.vue?bc23","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/utils/GeneratePassword.ts","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?7910","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","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/components/SharingEntryLink.vue?64e9","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?e340","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?06a5","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?f8d7","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?7f2e","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CircleOutline.vue?68bc","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue?vue&type=template&id=c013567c","webpack:///nextcloud/node_modules/vue-material-design-icons/Email.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Email.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Email.vue?3953","webpack:///nextcloud/node_modules/vue-material-design-icons/Email.vue?vue&type=template&id=7dd7f6aa","webpack:///nextcloud/node_modules/vue-material-design-icons/ShareCircle.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ShareCircle.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ShareCircle.vue?a1b2","webpack:///nextcloud/node_modules/vue-material-design-icons/ShareCircle.vue?vue&type=template&id=0e958886","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountCircleOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountCircleOutline.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountCircleOutline.vue?a068","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountCircleOutline.vue?vue&type=template&id=5b2fe1de","webpack:///nextcloud/node_modules/vue-material-design-icons/Eye.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Eye.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Eye.vue?157b","webpack:///nextcloud/node_modules/vue-material-design-icons/Eye.vue?vue&type=template&id=4ae2345c","webpack:///nextcloud/node_modules/vue-material-design-icons/Refresh.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Refresh.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Refresh.vue?0940","webpack:///nextcloud/node_modules/vue-material-design-icons/Refresh.vue?vue&type=template&id=2864f909","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue","webpack:///nextcloud/apps/files_sharing/src/services/TokenService.ts","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?82f5","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?10fc","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?8a9e","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs"],"sourcesContent":["/*!\n * vue-qrcode v1.0.2\n * https://fengyuanchen.github.io/vue-qrcode\n *\n * Copyright 2018-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-01-18T06:04:33.222Z\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global = global || self, global.VueQrcode = factory());\n}(this, (function () { 'use strict';\n\n\tfunction commonjsRequire () {\n\t\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n\t}\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar qrcode = createCommonjsModule(function (module, exports) {\n\t(function(f){{module.exports=f();}})(function(){return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof commonjsRequire&&commonjsRequire;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u=\"function\"==typeof commonjsRequire&&commonjsRequire,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\t// can-promise has a crash in some versions of react native that dont have\n\t// standard global objects\n\t// https://github.com/soldair/node-qrcode/issues/157\n\n\tmodule.exports = function () {\n\t return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n\t};\n\n\t},{}],2:[function(require,module,exports){\n\t/**\n\t * Alignment pattern are fixed reference pattern in defined positions\n\t * in a matrix symbology, which enables the decode software to re-synchronise\n\t * the coordinate mapping of the image modules in the event of moderate amounts\n\t * of distortion of the image.\n\t *\n\t * Alignment patterns are present only in QR Code symbols of version 2 or larger\n\t * and their number depends on the symbol version.\n\t */\n\n\tvar getSymbolSize = require('./utils').getSymbolSize;\n\n\t/**\n\t * Calculate the row/column coordinates of the center module of each alignment pattern\n\t * for the specified QR Code version.\n\t *\n\t * The alignment patterns are positioned symmetrically on either side of the diagonal\n\t * running from the top left corner of the symbol to the bottom right corner.\n\t *\n\t * Since positions are simmetrical only half of the coordinates are returned.\n\t * Each item of the array will represent in turn the x and y coordinate.\n\t * @see {@link getPositions}\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Array} Array of coordinate\n\t */\n\texports.getRowColCoords = function getRowColCoords (version) {\n\t if (version === 1) return []\n\n\t var posCount = Math.floor(version / 7) + 2;\n\t var size = getSymbolSize(version);\n\t var intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2;\n\t var positions = [size - 7]; // Last coord is always (size - 7)\n\n\t for (var i = 1; i < posCount - 1; i++) {\n\t positions[i] = positions[i - 1] - intervals;\n\t }\n\n\t positions.push(6); // First coord is always 6\n\n\t return positions.reverse()\n\t};\n\n\t/**\n\t * Returns an array containing the positions of each alignment pattern.\n\t * Each array's element represent the center point of the pattern as (x, y) coordinates\n\t *\n\t * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n\t * and filtering out the items that overlaps with finder pattern\n\t *\n\t * @example\n\t * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n\t * The alignment patterns, therefore, are to be centered on (row, column)\n\t * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n\t * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n\t * and are not therefore used for alignment patterns.\n\t *\n\t * var pos = getPositions(7)\n\t * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Array} Array of coordinates\n\t */\n\texports.getPositions = function getPositions (version) {\n\t var coords = [];\n\t var pos = exports.getRowColCoords(version);\n\t var posLength = pos.length;\n\n\t for (var i = 0; i < posLength; i++) {\n\t for (var j = 0; j < posLength; j++) {\n\t // Skip if position is occupied by finder patterns\n\t if ((i === 0 && j === 0) || // top-left\n\t (i === 0 && j === posLength - 1) || // bottom-left\n\t (i === posLength - 1 && j === 0)) { // top-right\n\t continue\n\t }\n\n\t coords.push([pos[i], pos[j]]);\n\t }\n\t }\n\n\t return coords\n\t};\n\n\t},{\"./utils\":21}],3:[function(require,module,exports){\n\tvar Mode = require('./mode');\n\n\t/**\n\t * Array of characters available in alphanumeric mode\n\t *\n\t * As per QR Code specification, to each character\n\t * is assigned a value from 0 to 44 which in this case coincides\n\t * with the array index\n\t *\n\t * @type {Array}\n\t */\n\tvar ALPHA_NUM_CHARS = [\n\t '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n\t 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n\t 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n\t ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n\t];\n\n\tfunction AlphanumericData (data) {\n\t this.mode = Mode.ALPHANUMERIC;\n\t this.data = data;\n\t}\n\n\tAlphanumericData.getBitsLength = function getBitsLength (length) {\n\t return 11 * Math.floor(length / 2) + 6 * (length % 2)\n\t};\n\n\tAlphanumericData.prototype.getLength = function getLength () {\n\t return this.data.length\n\t};\n\n\tAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n\t return AlphanumericData.getBitsLength(this.data.length)\n\t};\n\n\tAlphanumericData.prototype.write = function write (bitBuffer) {\n\t var i;\n\n\t // Input data characters are divided into groups of two characters\n\t // and encoded as 11-bit binary codes.\n\t for (i = 0; i + 2 <= this.data.length; i += 2) {\n\t // The character value of the first character is multiplied by 45\n\t var value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45;\n\n\t // The character value of the second digit is added to the product\n\t value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1]);\n\n\t // The sum is then stored as 11-bit binary number\n\t bitBuffer.put(value, 11);\n\t }\n\n\t // If the number of input data characters is not a multiple of two,\n\t // the character value of the final character is encoded as a 6-bit binary number.\n\t if (this.data.length % 2) {\n\t bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6);\n\t }\n\t};\n\n\tmodule.exports = AlphanumericData;\n\n\t},{\"./mode\":14}],4:[function(require,module,exports){\n\tfunction BitBuffer () {\n\t this.buffer = [];\n\t this.length = 0;\n\t}\n\n\tBitBuffer.prototype = {\n\n\t get: function (index) {\n\t var bufIndex = Math.floor(index / 8);\n\t return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n\t },\n\n\t put: function (num, length) {\n\t for (var i = 0; i < length; i++) {\n\t this.putBit(((num >>> (length - i - 1)) & 1) === 1);\n\t }\n\t },\n\n\t getLengthInBits: function () {\n\t return this.length\n\t },\n\n\t putBit: function (bit) {\n\t var bufIndex = Math.floor(this.length / 8);\n\t if (this.buffer.length <= bufIndex) {\n\t this.buffer.push(0);\n\t }\n\n\t if (bit) {\n\t this.buffer[bufIndex] |= (0x80 >>> (this.length % 8));\n\t }\n\n\t this.length++;\n\t }\n\t};\n\n\tmodule.exports = BitBuffer;\n\n\t},{}],5:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\n\t/**\n\t * Helper class to handle QR Code symbol modules\n\t *\n\t * @param {Number} size Symbol size\n\t */\n\tfunction BitMatrix (size) {\n\t if (!size || size < 1) {\n\t throw new Error('BitMatrix size must be defined and greater than 0')\n\t }\n\n\t this.size = size;\n\t this.data = BufferUtil.alloc(size * size);\n\t this.reservedBit = BufferUtil.alloc(size * size);\n\t}\n\n\t/**\n\t * Set bit value at specified location\n\t * If reserved flag is set, this bit will be ignored during masking process\n\t *\n\t * @param {Number} row\n\t * @param {Number} col\n\t * @param {Boolean} value\n\t * @param {Boolean} reserved\n\t */\n\tBitMatrix.prototype.set = function (row, col, value, reserved) {\n\t var index = row * this.size + col;\n\t this.data[index] = value;\n\t if (reserved) this.reservedBit[index] = true;\n\t};\n\n\t/**\n\t * Returns bit value at specified location\n\t *\n\t * @param {Number} row\n\t * @param {Number} col\n\t * @return {Boolean}\n\t */\n\tBitMatrix.prototype.get = function (row, col) {\n\t return this.data[row * this.size + col]\n\t};\n\n\t/**\n\t * Applies xor operator at specified location\n\t * (used during masking process)\n\t *\n\t * @param {Number} row\n\t * @param {Number} col\n\t * @param {Boolean} value\n\t */\n\tBitMatrix.prototype.xor = function (row, col, value) {\n\t this.data[row * this.size + col] ^= value;\n\t};\n\n\t/**\n\t * Check if bit at specified location is reserved\n\t *\n\t * @param {Number} row\n\t * @param {Number} col\n\t * @return {Boolean}\n\t */\n\tBitMatrix.prototype.isReserved = function (row, col) {\n\t return this.reservedBit[row * this.size + col]\n\t};\n\n\tmodule.exports = BitMatrix;\n\n\t},{\"../utils/buffer\":28}],6:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\tvar Mode = require('./mode');\n\n\tfunction ByteData (data) {\n\t this.mode = Mode.BYTE;\n\t this.data = BufferUtil.from(data);\n\t}\n\n\tByteData.getBitsLength = function getBitsLength (length) {\n\t return length * 8\n\t};\n\n\tByteData.prototype.getLength = function getLength () {\n\t return this.data.length\n\t};\n\n\tByteData.prototype.getBitsLength = function getBitsLength () {\n\t return ByteData.getBitsLength(this.data.length)\n\t};\n\n\tByteData.prototype.write = function (bitBuffer) {\n\t for (var i = 0, l = this.data.length; i < l; i++) {\n\t bitBuffer.put(this.data[i], 8);\n\t }\n\t};\n\n\tmodule.exports = ByteData;\n\n\t},{\"../utils/buffer\":28,\"./mode\":14}],7:[function(require,module,exports){\n\tvar ECLevel = require('./error-correction-level');\r\n\r\n\tvar EC_BLOCKS_TABLE = [\r\n\t// L M Q H\r\n\t 1, 1, 1, 1,\r\n\t 1, 1, 1, 1,\r\n\t 1, 1, 2, 2,\r\n\t 1, 2, 2, 4,\r\n\t 1, 2, 4, 4,\r\n\t 2, 4, 4, 4,\r\n\t 2, 4, 6, 5,\r\n\t 2, 4, 6, 6,\r\n\t 2, 5, 8, 8,\r\n\t 4, 5, 8, 8,\r\n\t 4, 5, 8, 11,\r\n\t 4, 8, 10, 11,\r\n\t 4, 9, 12, 16,\r\n\t 4, 9, 16, 16,\r\n\t 6, 10, 12, 18,\r\n\t 6, 10, 17, 16,\r\n\t 6, 11, 16, 19,\r\n\t 6, 13, 18, 21,\r\n\t 7, 14, 21, 25,\r\n\t 8, 16, 20, 25,\r\n\t 8, 17, 23, 25,\r\n\t 9, 17, 23, 34,\r\n\t 9, 18, 25, 30,\r\n\t 10, 20, 27, 32,\r\n\t 12, 21, 29, 35,\r\n\t 12, 23, 34, 37,\r\n\t 12, 25, 34, 40,\r\n\t 13, 26, 35, 42,\r\n\t 14, 28, 38, 45,\r\n\t 15, 29, 40, 48,\r\n\t 16, 31, 43, 51,\r\n\t 17, 33, 45, 54,\r\n\t 18, 35, 48, 57,\r\n\t 19, 37, 51, 60,\r\n\t 19, 38, 53, 63,\r\n\t 20, 40, 56, 66,\r\n\t 21, 43, 59, 70,\r\n\t 22, 45, 62, 74,\r\n\t 24, 47, 65, 77,\r\n\t 25, 49, 68, 81\r\n\t];\r\n\r\n\tvar EC_CODEWORDS_TABLE = [\r\n\t// L M Q H\r\n\t 7, 10, 13, 17,\r\n\t 10, 16, 22, 28,\r\n\t 15, 26, 36, 44,\r\n\t 20, 36, 52, 64,\r\n\t 26, 48, 72, 88,\r\n\t 36, 64, 96, 112,\r\n\t 40, 72, 108, 130,\r\n\t 48, 88, 132, 156,\r\n\t 60, 110, 160, 192,\r\n\t 72, 130, 192, 224,\r\n\t 80, 150, 224, 264,\r\n\t 96, 176, 260, 308,\r\n\t 104, 198, 288, 352,\r\n\t 120, 216, 320, 384,\r\n\t 132, 240, 360, 432,\r\n\t 144, 280, 408, 480,\r\n\t 168, 308, 448, 532,\r\n\t 180, 338, 504, 588,\r\n\t 196, 364, 546, 650,\r\n\t 224, 416, 600, 700,\r\n\t 224, 442, 644, 750,\r\n\t 252, 476, 690, 816,\r\n\t 270, 504, 750, 900,\r\n\t 300, 560, 810, 960,\r\n\t 312, 588, 870, 1050,\r\n\t 336, 644, 952, 1110,\r\n\t 360, 700, 1020, 1200,\r\n\t 390, 728, 1050, 1260,\r\n\t 420, 784, 1140, 1350,\r\n\t 450, 812, 1200, 1440,\r\n\t 480, 868, 1290, 1530,\r\n\t 510, 924, 1350, 1620,\r\n\t 540, 980, 1440, 1710,\r\n\t 570, 1036, 1530, 1800,\r\n\t 570, 1064, 1590, 1890,\r\n\t 600, 1120, 1680, 1980,\r\n\t 630, 1204, 1770, 2100,\r\n\t 660, 1260, 1860, 2220,\r\n\t 720, 1316, 1950, 2310,\r\n\t 750, 1372, 2040, 2430\r\n\t];\r\n\r\n\t/**\r\n\t * Returns the number of error correction block that the QR Code should contain\r\n\t * for the specified version and error correction level.\r\n\t *\r\n\t * @param {Number} version QR Code version\r\n\t * @param {Number} errorCorrectionLevel Error correction level\r\n\t * @return {Number} Number of error correction blocks\r\n\t */\r\n\texports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n\t switch (errorCorrectionLevel) {\r\n\t case ECLevel.L:\r\n\t return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n\t case ECLevel.M:\r\n\t return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n\t case ECLevel.Q:\r\n\t return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n\t case ECLevel.H:\r\n\t return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n\t default:\r\n\t return undefined\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the number of error correction codewords to use for the specified\r\n\t * version and error correction level.\r\n\t *\r\n\t * @param {Number} version QR Code version\r\n\t * @param {Number} errorCorrectionLevel Error correction level\r\n\t * @return {Number} Number of error correction codewords\r\n\t */\r\n\texports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n\t switch (errorCorrectionLevel) {\r\n\t case ECLevel.L:\r\n\t return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n\t case ECLevel.M:\r\n\t return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n\t case ECLevel.Q:\r\n\t return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n\t case ECLevel.H:\r\n\t return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n\t default:\r\n\t return undefined\r\n\t }\r\n\t};\r\n\n\t},{\"./error-correction-level\":8}],8:[function(require,module,exports){\n\texports.L = { bit: 1 };\n\texports.M = { bit: 0 };\n\texports.Q = { bit: 3 };\n\texports.H = { bit: 2 };\n\n\tfunction fromString (string) {\n\t if (typeof string !== 'string') {\n\t throw new Error('Param is not a string')\n\t }\n\n\t var lcStr = string.toLowerCase();\n\n\t switch (lcStr) {\n\t case 'l':\n\t case 'low':\n\t return exports.L\n\n\t case 'm':\n\t case 'medium':\n\t return exports.M\n\n\t case 'q':\n\t case 'quartile':\n\t return exports.Q\n\n\t case 'h':\n\t case 'high':\n\t return exports.H\n\n\t default:\n\t throw new Error('Unknown EC Level: ' + string)\n\t }\n\t}\n\n\texports.isValid = function isValid (level) {\n\t return level && typeof level.bit !== 'undefined' &&\n\t level.bit >= 0 && level.bit < 4\n\t};\n\n\texports.from = function from (value, defaultValue) {\n\t if (exports.isValid(value)) {\n\t return value\n\t }\n\n\t try {\n\t return fromString(value)\n\t } catch (e) {\n\t return defaultValue\n\t }\n\t};\n\n\t},{}],9:[function(require,module,exports){\n\tvar getSymbolSize = require('./utils').getSymbolSize;\n\tvar FINDER_PATTERN_SIZE = 7;\n\n\t/**\n\t * Returns an array containing the positions of each finder pattern.\n\t * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Array} Array of coordinates\n\t */\n\texports.getPositions = function getPositions (version) {\n\t var size = getSymbolSize(version);\n\n\t return [\n\t // top-left\n\t [0, 0],\n\t // top-right\n\t [size - FINDER_PATTERN_SIZE, 0],\n\t // bottom-left\n\t [0, size - FINDER_PATTERN_SIZE]\n\t ]\n\t};\n\n\t},{\"./utils\":21}],10:[function(require,module,exports){\n\tvar Utils = require('./utils');\n\n\tvar G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n\tvar G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\tvar G15_BCH = Utils.getBCHDigit(G15);\n\n\t/**\n\t * Returns format information with relative error correction bits\n\t *\n\t * The format information is a 15-bit sequence containing 5 data bits,\n\t * with 10 error correction bits calculated using the (15, 5) BCH code.\n\t *\n\t * @param {Number} errorCorrectionLevel Error correction level\n\t * @param {Number} mask Mask pattern\n\t * @return {Number} Encoded format information bits\n\t */\n\texports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n\t var data = ((errorCorrectionLevel.bit << 3) | mask);\n\t var d = data << 10;\n\n\t while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n\t d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH));\n\t }\n\n\t // xor final data with mask pattern in order to ensure that\n\t // no combination of Error Correction Level and data mask pattern\n\t // will result in an all-zero data string\n\t return ((data << 10) | d) ^ G15_MASK\n\t};\n\n\t},{\"./utils\":21}],11:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\n\tvar EXP_TABLE = BufferUtil.alloc(512);\n\tvar LOG_TABLE = BufferUtil.alloc(256)\n\t/**\n\t * Precompute the log and anti-log tables for faster computation later\n\t *\n\t * For each possible value in the galois field 2^8, we will pre-compute\n\t * the logarithm and anti-logarithm (exponential) of this value\n\t *\n\t * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n\t */\n\t;(function initTables () {\n\t var x = 1;\n\t for (var i = 0; i < 255; i++) {\n\t EXP_TABLE[i] = x;\n\t LOG_TABLE[x] = i;\n\n\t x <<= 1; // multiply by 2\n\n\t // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n\t // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n\t if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n\t x ^= 0x11D;\n\t }\n\t }\n\n\t // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n\t // stay inside the bounds (because we will mainly use this table for the multiplication of\n\t // two GF numbers, no more).\n\t // @see {@link mul}\n\t for (i = 255; i < 512; i++) {\n\t EXP_TABLE[i] = EXP_TABLE[i - 255];\n\t }\n\t}());\n\n\t/**\n\t * Returns log value of n inside Galois Field\n\t *\n\t * @param {Number} n\n\t * @return {Number}\n\t */\n\texports.log = function log (n) {\n\t if (n < 1) throw new Error('log(' + n + ')')\n\t return LOG_TABLE[n]\n\t};\n\n\t/**\n\t * Returns anti-log value of n inside Galois Field\n\t *\n\t * @param {Number} n\n\t * @return {Number}\n\t */\n\texports.exp = function exp (n) {\n\t return EXP_TABLE[n]\n\t};\n\n\t/**\n\t * Multiplies two number inside Galois Field\n\t *\n\t * @param {Number} x\n\t * @param {Number} y\n\t * @return {Number}\n\t */\n\texports.mul = function mul (x, y) {\n\t if (x === 0 || y === 0) return 0\n\n\t // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n\t // @see {@link initTables}\n\t return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n\t};\n\n\t},{\"../utils/buffer\":28}],12:[function(require,module,exports){\n\tvar Mode = require('./mode');\n\tvar Utils = require('./utils');\n\n\tfunction KanjiData (data) {\n\t this.mode = Mode.KANJI;\n\t this.data = data;\n\t}\n\n\tKanjiData.getBitsLength = function getBitsLength (length) {\n\t return length * 13\n\t};\n\n\tKanjiData.prototype.getLength = function getLength () {\n\t return this.data.length\n\t};\n\n\tKanjiData.prototype.getBitsLength = function getBitsLength () {\n\t return KanjiData.getBitsLength(this.data.length)\n\t};\n\n\tKanjiData.prototype.write = function (bitBuffer) {\n\t var i;\n\n\t // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n\t // These byte values are shifted from the JIS X 0208 values.\n\t // JIS X 0208 gives details of the shift coded representation.\n\t for (i = 0; i < this.data.length; i++) {\n\t var value = Utils.toSJIS(this.data[i]);\n\n\t // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n\t if (value >= 0x8140 && value <= 0x9FFC) {\n\t // Subtract 0x8140 from Shift JIS value\n\t value -= 0x8140;\n\n\t // For characters with Shift JIS values from 0xE040 to 0xEBBF\n\t } else if (value >= 0xE040 && value <= 0xEBBF) {\n\t // Subtract 0xC140 from Shift JIS value\n\t value -= 0xC140;\n\t } else {\n\t throw new Error(\n\t 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n\t 'Make sure your charset is UTF-8')\n\t }\n\n\t // Multiply most significant byte of result by 0xC0\n\t // and add least significant byte to product\n\t value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff);\n\n\t // Convert result to a 13-bit binary string\n\t bitBuffer.put(value, 13);\n\t }\n\t};\n\n\tmodule.exports = KanjiData;\n\n\t},{\"./mode\":14,\"./utils\":21}],13:[function(require,module,exports){\n\t/**\n\t * Data mask pattern reference\n\t * @type {Object}\n\t */\n\texports.Patterns = {\n\t PATTERN000: 0,\n\t PATTERN001: 1,\n\t PATTERN010: 2,\n\t PATTERN011: 3,\n\t PATTERN100: 4,\n\t PATTERN101: 5,\n\t PATTERN110: 6,\n\t PATTERN111: 7\n\t};\n\n\t/**\n\t * Weighted penalty scores for the undesirable features\n\t * @type {Object}\n\t */\n\tvar PenaltyScores = {\n\t N1: 3,\n\t N2: 3,\n\t N3: 40,\n\t N4: 10\n\t};\n\n\t/**\n\t * Check if mask pattern value is valid\n\t *\n\t * @param {Number} mask Mask pattern\n\t * @return {Boolean} true if valid, false otherwise\n\t */\n\texports.isValid = function isValid (mask) {\n\t return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n\t};\n\n\t/**\n\t * Returns mask pattern from a value.\n\t * If value is not valid, returns undefined\n\t *\n\t * @param {Number|String} value Mask pattern value\n\t * @return {Number} Valid mask pattern or undefined\n\t */\n\texports.from = function from (value) {\n\t return exports.isValid(value) ? parseInt(value, 10) : undefined\n\t};\n\n\t/**\n\t* Find adjacent modules in row/column with the same color\n\t* and assign a penalty value.\n\t*\n\t* Points: N1 + i\n\t* i is the amount by which the number of adjacent modules of the same color exceeds 5\n\t*/\n\texports.getPenaltyN1 = function getPenaltyN1 (data) {\n\t var size = data.size;\n\t var points = 0;\n\t var sameCountCol = 0;\n\t var sameCountRow = 0;\n\t var lastCol = null;\n\t var lastRow = null;\n\n\t for (var row = 0; row < size; row++) {\n\t sameCountCol = sameCountRow = 0;\n\t lastCol = lastRow = null;\n\n\t for (var col = 0; col < size; col++) {\n\t var module = data.get(row, col);\n\t if (module === lastCol) {\n\t sameCountCol++;\n\t } else {\n\t if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5);\n\t lastCol = module;\n\t sameCountCol = 1;\n\t }\n\n\t module = data.get(col, row);\n\t if (module === lastRow) {\n\t sameCountRow++;\n\t } else {\n\t if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5);\n\t lastRow = module;\n\t sameCountRow = 1;\n\t }\n\t }\n\n\t if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5);\n\t if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5);\n\t }\n\n\t return points\n\t};\n\n\t/**\n\t * Find 2x2 blocks with the same color and assign a penalty value\n\t *\n\t * Points: N2 * (m - 1) * (n - 1)\n\t */\n\texports.getPenaltyN2 = function getPenaltyN2 (data) {\n\t var size = data.size;\n\t var points = 0;\n\n\t for (var row = 0; row < size - 1; row++) {\n\t for (var col = 0; col < size - 1; col++) {\n\t var last = data.get(row, col) +\n\t data.get(row, col + 1) +\n\t data.get(row + 1, col) +\n\t data.get(row + 1, col + 1);\n\n\t if (last === 4 || last === 0) points++;\n\t }\n\t }\n\n\t return points * PenaltyScores.N2\n\t};\n\n\t/**\n\t * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n\t * preceded or followed by light area 4 modules wide\n\t *\n\t * Points: N3 * number of pattern found\n\t */\n\texports.getPenaltyN3 = function getPenaltyN3 (data) {\n\t var size = data.size;\n\t var points = 0;\n\t var bitsCol = 0;\n\t var bitsRow = 0;\n\n\t for (var row = 0; row < size; row++) {\n\t bitsCol = bitsRow = 0;\n\t for (var col = 0; col < size; col++) {\n\t bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col);\n\t if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++;\n\n\t bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row);\n\t if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++;\n\t }\n\t }\n\n\t return points * PenaltyScores.N3\n\t};\n\n\t/**\n\t * Calculate proportion of dark modules in entire symbol\n\t *\n\t * Points: N4 * k\n\t *\n\t * k is the rating of the deviation of the proportion of dark modules\n\t * in the symbol from 50% in steps of 5%\n\t */\n\texports.getPenaltyN4 = function getPenaltyN4 (data) {\n\t var darkCount = 0;\n\t var modulesCount = data.data.length;\n\n\t for (var i = 0; i < modulesCount; i++) darkCount += data.data[i];\n\n\t var k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10);\n\n\t return k * PenaltyScores.N4\n\t};\n\n\t/**\n\t * Return mask value at given position\n\t *\n\t * @param {Number} maskPattern Pattern reference value\n\t * @param {Number} i Row\n\t * @param {Number} j Column\n\t * @return {Boolean} Mask value\n\t */\n\tfunction getMaskAt (maskPattern, i, j) {\n\t switch (maskPattern) {\n\t case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n\t case exports.Patterns.PATTERN001: return i % 2 === 0\n\t case exports.Patterns.PATTERN010: return j % 3 === 0\n\t case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n\t case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n\t case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n\t case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n\t case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n\t default: throw new Error('bad maskPattern:' + maskPattern)\n\t }\n\t}\n\n\t/**\n\t * Apply a mask pattern to a BitMatrix\n\t *\n\t * @param {Number} pattern Pattern reference number\n\t * @param {BitMatrix} data BitMatrix data\n\t */\n\texports.applyMask = function applyMask (pattern, data) {\n\t var size = data.size;\n\n\t for (var col = 0; col < size; col++) {\n\t for (var row = 0; row < size; row++) {\n\t if (data.isReserved(row, col)) continue\n\t data.xor(row, col, getMaskAt(pattern, row, col));\n\t }\n\t }\n\t};\n\n\t/**\n\t * Returns the best mask pattern for data\n\t *\n\t * @param {BitMatrix} data\n\t * @return {Number} Mask pattern reference number\n\t */\n\texports.getBestMask = function getBestMask (data, setupFormatFunc) {\n\t var numPatterns = Object.keys(exports.Patterns).length;\n\t var bestPattern = 0;\n\t var lowerPenalty = Infinity;\n\n\t for (var p = 0; p < numPatterns; p++) {\n\t setupFormatFunc(p);\n\t exports.applyMask(p, data);\n\n\t // Calculate penalty\n\t var penalty =\n\t exports.getPenaltyN1(data) +\n\t exports.getPenaltyN2(data) +\n\t exports.getPenaltyN3(data) +\n\t exports.getPenaltyN4(data);\n\n\t // Undo previously applied mask\n\t exports.applyMask(p, data);\n\n\t if (penalty < lowerPenalty) {\n\t lowerPenalty = penalty;\n\t bestPattern = p;\n\t }\n\t }\n\n\t return bestPattern\n\t};\n\n\t},{}],14:[function(require,module,exports){\n\tvar VersionCheck = require('./version-check');\n\tvar Regex = require('./regex');\n\n\t/**\n\t * Numeric mode encodes data from the decimal digit set (0 - 9)\n\t * (byte values 30HEX to 39HEX).\n\t * Normally, 3 data characters are represented by 10 bits.\n\t *\n\t * @type {Object}\n\t */\n\texports.NUMERIC = {\n\t id: 'Numeric',\n\t bit: 1 << 0,\n\t ccBits: [10, 12, 14]\n\t};\n\n\t/**\n\t * Alphanumeric mode encodes data from a set of 45 characters,\n\t * i.e. 10 numeric digits (0 - 9),\n\t * 26 alphabetic characters (A - Z),\n\t * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n\t * Normally, two input characters are represented by 11 bits.\n\t *\n\t * @type {Object}\n\t */\n\texports.ALPHANUMERIC = {\n\t id: 'Alphanumeric',\n\t bit: 1 << 1,\n\t ccBits: [9, 11, 13]\n\t};\n\n\t/**\n\t * In byte mode, data is encoded at 8 bits per character.\n\t *\n\t * @type {Object}\n\t */\n\texports.BYTE = {\n\t id: 'Byte',\n\t bit: 1 << 2,\n\t ccBits: [8, 16, 16]\n\t};\n\n\t/**\n\t * The Kanji mode efficiently encodes Kanji characters in accordance with\n\t * the Shift JIS system based on JIS X 0208.\n\t * The Shift JIS values are shifted from the JIS X 0208 values.\n\t * JIS X 0208 gives details of the shift coded representation.\n\t * Each two-byte character value is compacted to a 13-bit binary codeword.\n\t *\n\t * @type {Object}\n\t */\n\texports.KANJI = {\n\t id: 'Kanji',\n\t bit: 1 << 3,\n\t ccBits: [8, 10, 12]\n\t};\n\n\t/**\n\t * Mixed mode will contain a sequences of data in a combination of any of\n\t * the modes described above\n\t *\n\t * @type {Object}\n\t */\n\texports.MIXED = {\n\t bit: -1\n\t};\n\n\t/**\n\t * Returns the number of bits needed to store the data length\n\t * according to QR Code specifications.\n\t *\n\t * @param {Mode} mode Data mode\n\t * @param {Number} version QR Code version\n\t * @return {Number} Number of bits\n\t */\n\texports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n\t if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n\t if (!VersionCheck.isValid(version)) {\n\t throw new Error('Invalid version: ' + version)\n\t }\n\n\t if (version >= 1 && version < 10) return mode.ccBits[0]\n\t else if (version < 27) return mode.ccBits[1]\n\t return mode.ccBits[2]\n\t};\n\n\t/**\n\t * Returns the most efficient mode to store the specified data\n\t *\n\t * @param {String} dataStr Input data string\n\t * @return {Mode} Best mode\n\t */\n\texports.getBestModeForData = function getBestModeForData (dataStr) {\n\t if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n\t else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n\t else if (Regex.testKanji(dataStr)) return exports.KANJI\n\t else return exports.BYTE\n\t};\n\n\t/**\n\t * Return mode name as string\n\t *\n\t * @param {Mode} mode Mode object\n\t * @returns {String} Mode name\n\t */\n\texports.toString = function toString (mode) {\n\t if (mode && mode.id) return mode.id\n\t throw new Error('Invalid mode')\n\t};\n\n\t/**\n\t * Check if input param is a valid mode object\n\t *\n\t * @param {Mode} mode Mode object\n\t * @returns {Boolean} True if valid mode, false otherwise\n\t */\n\texports.isValid = function isValid (mode) {\n\t return mode && mode.bit && mode.ccBits\n\t};\n\n\t/**\n\t * Get mode object from its name\n\t *\n\t * @param {String} string Mode name\n\t * @returns {Mode} Mode object\n\t */\n\tfunction fromString (string) {\n\t if (typeof string !== 'string') {\n\t throw new Error('Param is not a string')\n\t }\n\n\t var lcStr = string.toLowerCase();\n\n\t switch (lcStr) {\n\t case 'numeric':\n\t return exports.NUMERIC\n\t case 'alphanumeric':\n\t return exports.ALPHANUMERIC\n\t case 'kanji':\n\t return exports.KANJI\n\t case 'byte':\n\t return exports.BYTE\n\t default:\n\t throw new Error('Unknown mode: ' + string)\n\t }\n\t}\n\n\t/**\n\t * Returns mode from a value.\n\t * If value is not a valid mode, returns defaultValue\n\t *\n\t * @param {Mode|String} value Encoding mode\n\t * @param {Mode} defaultValue Fallback value\n\t * @return {Mode} Encoding mode\n\t */\n\texports.from = function from (value, defaultValue) {\n\t if (exports.isValid(value)) {\n\t return value\n\t }\n\n\t try {\n\t return fromString(value)\n\t } catch (e) {\n\t return defaultValue\n\t }\n\t};\n\n\t},{\"./regex\":19,\"./version-check\":22}],15:[function(require,module,exports){\n\tvar Mode = require('./mode');\n\n\tfunction NumericData (data) {\n\t this.mode = Mode.NUMERIC;\n\t this.data = data.toString();\n\t}\n\n\tNumericData.getBitsLength = function getBitsLength (length) {\n\t return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n\t};\n\n\tNumericData.prototype.getLength = function getLength () {\n\t return this.data.length\n\t};\n\n\tNumericData.prototype.getBitsLength = function getBitsLength () {\n\t return NumericData.getBitsLength(this.data.length)\n\t};\n\n\tNumericData.prototype.write = function write (bitBuffer) {\n\t var i, group, value;\n\n\t // The input data string is divided into groups of three digits,\n\t // and each group is converted to its 10-bit binary equivalent.\n\t for (i = 0; i + 3 <= this.data.length; i += 3) {\n\t group = this.data.substr(i, 3);\n\t value = parseInt(group, 10);\n\n\t bitBuffer.put(value, 10);\n\t }\n\n\t // If the number of input digits is not an exact multiple of three,\n\t // the final one or two digits are converted to 4 or 7 bits respectively.\n\t var remainingNum = this.data.length - i;\n\t if (remainingNum > 0) {\n\t group = this.data.substr(i);\n\t value = parseInt(group, 10);\n\n\t bitBuffer.put(value, remainingNum * 3 + 1);\n\t }\n\t};\n\n\tmodule.exports = NumericData;\n\n\t},{\"./mode\":14}],16:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\tvar GF = require('./galois-field');\n\n\t/**\n\t * Multiplies two polynomials inside Galois Field\n\t *\n\t * @param {Buffer} p1 Polynomial\n\t * @param {Buffer} p2 Polynomial\n\t * @return {Buffer} Product of p1 and p2\n\t */\n\texports.mul = function mul (p1, p2) {\n\t var coeff = BufferUtil.alloc(p1.length + p2.length - 1);\n\n\t for (var i = 0; i < p1.length; i++) {\n\t for (var j = 0; j < p2.length; j++) {\n\t coeff[i + j] ^= GF.mul(p1[i], p2[j]);\n\t }\n\t }\n\n\t return coeff\n\t};\n\n\t/**\n\t * Calculate the remainder of polynomials division\n\t *\n\t * @param {Buffer} divident Polynomial\n\t * @param {Buffer} divisor Polynomial\n\t * @return {Buffer} Remainder\n\t */\n\texports.mod = function mod (divident, divisor) {\n\t var result = BufferUtil.from(divident);\n\n\t while ((result.length - divisor.length) >= 0) {\n\t var coeff = result[0];\n\n\t for (var i = 0; i < divisor.length; i++) {\n\t result[i] ^= GF.mul(divisor[i], coeff);\n\t }\n\n\t // remove all zeros from buffer head\n\t var offset = 0;\n\t while (offset < result.length && result[offset] === 0) offset++;\n\t result = result.slice(offset);\n\t }\n\n\t return result\n\t};\n\n\t/**\n\t * Generate an irreducible generator polynomial of specified degree\n\t * (used by Reed-Solomon encoder)\n\t *\n\t * @param {Number} degree Degree of the generator polynomial\n\t * @return {Buffer} Buffer containing polynomial coefficients\n\t */\n\texports.generateECPolynomial = function generateECPolynomial (degree) {\n\t var poly = BufferUtil.from([1]);\n\t for (var i = 0; i < degree; i++) {\n\t poly = exports.mul(poly, [1, GF.exp(i)]);\n\t }\n\n\t return poly\n\t};\n\n\t},{\"../utils/buffer\":28,\"./galois-field\":11}],17:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\tvar Utils = require('./utils');\n\tvar ECLevel = require('./error-correction-level');\n\tvar BitBuffer = require('./bit-buffer');\n\tvar BitMatrix = require('./bit-matrix');\n\tvar AlignmentPattern = require('./alignment-pattern');\n\tvar FinderPattern = require('./finder-pattern');\n\tvar MaskPattern = require('./mask-pattern');\n\tvar ECCode = require('./error-correction-code');\n\tvar ReedSolomonEncoder = require('./reed-solomon-encoder');\n\tvar Version = require('./version');\n\tvar FormatInfo = require('./format-info');\n\tvar Mode = require('./mode');\n\tvar Segments = require('./segments');\n\tvar isArray = require('isarray');\n\n\t/**\n\t * QRCode for JavaScript\n\t *\n\t * modified by Ryan Day for nodejs support\n\t * Copyright (c) 2011 Ryan Day\n\t *\n\t * Licensed under the MIT license:\n\t * http://www.opensource.org/licenses/mit-license.php\n\t *\n\t//---------------------------------------------------------------------\n\t// QRCode for JavaScript\n\t//\n\t// Copyright (c) 2009 Kazuhiko Arase\n\t//\n\t// URL: http://www.d-project.com/\n\t//\n\t// Licensed under the MIT license:\n\t// http://www.opensource.org/licenses/mit-license.php\n\t//\n\t// The word \"QR Code\" is registered trademark of\n\t// DENSO WAVE INCORPORATED\n\t// http://www.denso-wave.com/qrcode/faqpatent-e.html\n\t//\n\t//---------------------------------------------------------------------\n\t*/\n\n\t/**\n\t * Add finder patterns bits to matrix\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t * @param {Number} version QR Code version\n\t */\n\tfunction setupFinderPattern (matrix, version) {\n\t var size = matrix.size;\n\t var pos = FinderPattern.getPositions(version);\n\n\t for (var i = 0; i < pos.length; i++) {\n\t var row = pos[i][0];\n\t var col = pos[i][1];\n\n\t for (var r = -1; r <= 7; r++) {\n\t if (row + r <= -1 || size <= row + r) continue\n\n\t for (var c = -1; c <= 7; c++) {\n\t if (col + c <= -1 || size <= col + c) continue\n\n\t if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n\t (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n\t (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n\t matrix.set(row + r, col + c, true, true);\n\t } else {\n\t matrix.set(row + r, col + c, false, true);\n\t }\n\t }\n\t }\n\t }\n\t}\n\n\t/**\n\t * Add timing pattern bits to matrix\n\t *\n\t * Note: this function must be called before {@link setupAlignmentPattern}\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t */\n\tfunction setupTimingPattern (matrix) {\n\t var size = matrix.size;\n\n\t for (var r = 8; r < size - 8; r++) {\n\t var value = r % 2 === 0;\n\t matrix.set(r, 6, value, true);\n\t matrix.set(6, r, value, true);\n\t }\n\t}\n\n\t/**\n\t * Add alignment patterns bits to matrix\n\t *\n\t * Note: this function must be called after {@link setupTimingPattern}\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t * @param {Number} version QR Code version\n\t */\n\tfunction setupAlignmentPattern (matrix, version) {\n\t var pos = AlignmentPattern.getPositions(version);\n\n\t for (var i = 0; i < pos.length; i++) {\n\t var row = pos[i][0];\n\t var col = pos[i][1];\n\n\t for (var r = -2; r <= 2; r++) {\n\t for (var c = -2; c <= 2; c++) {\n\t if (r === -2 || r === 2 || c === -2 || c === 2 ||\n\t (r === 0 && c === 0)) {\n\t matrix.set(row + r, col + c, true, true);\n\t } else {\n\t matrix.set(row + r, col + c, false, true);\n\t }\n\t }\n\t }\n\t }\n\t}\n\n\t/**\n\t * Add version info bits to matrix\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t * @param {Number} version QR Code version\n\t */\n\tfunction setupVersionInfo (matrix, version) {\n\t var size = matrix.size;\n\t var bits = Version.getEncodedBits(version);\n\t var row, col, mod;\n\n\t for (var i = 0; i < 18; i++) {\n\t row = Math.floor(i / 3);\n\t col = i % 3 + size - 8 - 3;\n\t mod = ((bits >> i) & 1) === 1;\n\n\t matrix.set(row, col, mod, true);\n\t matrix.set(col, row, mod, true);\n\t }\n\t}\n\n\t/**\n\t * Add format info bits to matrix\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n\t * @param {Number} maskPattern Mask pattern reference value\n\t */\n\tfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n\t var size = matrix.size;\n\t var bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern);\n\t var i, mod;\n\n\t for (i = 0; i < 15; i++) {\n\t mod = ((bits >> i) & 1) === 1;\n\n\t // vertical\n\t if (i < 6) {\n\t matrix.set(i, 8, mod, true);\n\t } else if (i < 8) {\n\t matrix.set(i + 1, 8, mod, true);\n\t } else {\n\t matrix.set(size - 15 + i, 8, mod, true);\n\t }\n\n\t // horizontal\n\t if (i < 8) {\n\t matrix.set(8, size - i - 1, mod, true);\n\t } else if (i < 9) {\n\t matrix.set(8, 15 - i - 1 + 1, mod, true);\n\t } else {\n\t matrix.set(8, 15 - i - 1, mod, true);\n\t }\n\t }\n\n\t // fixed module\n\t matrix.set(size - 8, 8, 1, true);\n\t}\n\n\t/**\n\t * Add encoded data bits to matrix\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t * @param {Buffer} data Data codewords\n\t */\n\tfunction setupData (matrix, data) {\n\t var size = matrix.size;\n\t var inc = -1;\n\t var row = size - 1;\n\t var bitIndex = 7;\n\t var byteIndex = 0;\n\n\t for (var col = size - 1; col > 0; col -= 2) {\n\t if (col === 6) col--;\n\n\t while (true) {\n\t for (var c = 0; c < 2; c++) {\n\t if (!matrix.isReserved(row, col - c)) {\n\t var dark = false;\n\n\t if (byteIndex < data.length) {\n\t dark = (((data[byteIndex] >>> bitIndex) & 1) === 1);\n\t }\n\n\t matrix.set(row, col - c, dark);\n\t bitIndex--;\n\n\t if (bitIndex === -1) {\n\t byteIndex++;\n\t bitIndex = 7;\n\t }\n\t }\n\t }\n\n\t row += inc;\n\n\t if (row < 0 || size <= row) {\n\t row -= inc;\n\t inc = -inc;\n\t break\n\t }\n\t }\n\t }\n\t}\n\n\t/**\n\t * Create encoded codewords from data input\n\t *\n\t * @param {Number} version QR Code version\n\t * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n\t * @param {ByteData} data Data input\n\t * @return {Buffer} Buffer containing encoded codewords\n\t */\n\tfunction createData (version, errorCorrectionLevel, segments) {\n\t // Prepare data buffer\n\t var buffer = new BitBuffer();\n\n\t segments.forEach(function (data) {\n\t // prefix data with mode indicator (4 bits)\n\t buffer.put(data.mode.bit, 4);\n\n\t // Prefix data with character count indicator.\n\t // The character count indicator is a string of bits that represents the\n\t // number of characters that are being encoded.\n\t // The character count indicator must be placed after the mode indicator\n\t // and must be a certain number of bits long, depending on the QR version\n\t // and data mode\n\t // @see {@link Mode.getCharCountIndicator}.\n\t buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version));\n\n\t // add binary data sequence to buffer\n\t data.write(buffer);\n\t });\n\n\t // Calculate required number of bits\n\t var totalCodewords = Utils.getSymbolTotalCodewords(version);\n\t var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n\t var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8;\n\n\t // Add a terminator.\n\t // If the bit string is shorter than the total number of required bits,\n\t // a terminator of up to four 0s must be added to the right side of the string.\n\t // If the bit string is more than four bits shorter than the required number of bits,\n\t // add four 0s to the end.\n\t if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n\t buffer.put(0, 4);\n\t }\n\n\t // If the bit string is fewer than four bits shorter, add only the number of 0s that\n\t // are needed to reach the required number of bits.\n\n\t // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n\t // pad the string on the right with 0s to make the string's length a multiple of 8.\n\t while (buffer.getLengthInBits() % 8 !== 0) {\n\t buffer.putBit(0);\n\t }\n\n\t // Add pad bytes if the string is still shorter than the total number of required bits.\n\t // Extend the buffer to fill the data capacity of the symbol corresponding to\n\t // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n\t // and 00010001 (0x11) alternately.\n\t var remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8;\n\t for (var i = 0; i < remainingByte; i++) {\n\t buffer.put(i % 2 ? 0x11 : 0xEC, 8);\n\t }\n\n\t return createCodewords(buffer, version, errorCorrectionLevel)\n\t}\n\n\t/**\n\t * Encode input data with Reed-Solomon and return codewords with\n\t * relative error correction bits\n\t *\n\t * @param {BitBuffer} bitBuffer Data to encode\n\t * @param {Number} version QR Code version\n\t * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n\t * @return {Buffer} Buffer containing encoded codewords\n\t */\n\tfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n\t // Total codewords for this QR code version (Data + Error correction)\n\t var totalCodewords = Utils.getSymbolTotalCodewords(version);\n\n\t // Total number of error correction codewords\n\t var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n\n\t // Total number of data codewords\n\t var dataTotalCodewords = totalCodewords - ecTotalCodewords;\n\n\t // Total number of blocks\n\t var ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel);\n\n\t // Calculate how many blocks each group should contain\n\t var blocksInGroup2 = totalCodewords % ecTotalBlocks;\n\t var blocksInGroup1 = ecTotalBlocks - blocksInGroup2;\n\n\t var totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks);\n\n\t var dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks);\n\t var dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1;\n\n\t // Number of EC codewords is the same for both groups\n\t var ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1;\n\n\t // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n\t var rs = new ReedSolomonEncoder(ecCount);\n\n\t var offset = 0;\n\t var dcData = new Array(ecTotalBlocks);\n\t var ecData = new Array(ecTotalBlocks);\n\t var maxDataSize = 0;\n\t var buffer = BufferUtil.from(bitBuffer.buffer);\n\n\t // Divide the buffer into the required number of blocks\n\t for (var b = 0; b < ecTotalBlocks; b++) {\n\t var dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2;\n\n\t // extract a block of data from buffer\n\t dcData[b] = buffer.slice(offset, offset + dataSize);\n\n\t // Calculate EC codewords for this data block\n\t ecData[b] = rs.encode(dcData[b]);\n\n\t offset += dataSize;\n\t maxDataSize = Math.max(maxDataSize, dataSize);\n\t }\n\n\t // Create final data\n\t // Interleave the data and error correction codewords from each block\n\t var data = BufferUtil.alloc(totalCodewords);\n\t var index = 0;\n\t var i, r;\n\n\t // Add data codewords\n\t for (i = 0; i < maxDataSize; i++) {\n\t for (r = 0; r < ecTotalBlocks; r++) {\n\t if (i < dcData[r].length) {\n\t data[index++] = dcData[r][i];\n\t }\n\t }\n\t }\n\n\t // Apped EC codewords\n\t for (i = 0; i < ecCount; i++) {\n\t for (r = 0; r < ecTotalBlocks; r++) {\n\t data[index++] = ecData[r][i];\n\t }\n\t }\n\n\t return data\n\t}\n\n\t/**\n\t * Build QR Code symbol\n\t *\n\t * @param {String} data Input string\n\t * @param {Number} version QR Code version\n\t * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n\t * @param {MaskPattern} maskPattern Mask pattern\n\t * @return {Object} Object containing symbol data\n\t */\n\tfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n\t var segments;\n\n\t if (isArray(data)) {\n\t segments = Segments.fromArray(data);\n\t } else if (typeof data === 'string') {\n\t var estimatedVersion = version;\n\n\t if (!estimatedVersion) {\n\t var rawSegments = Segments.rawSplit(data);\n\n\t // Estimate best version that can contain raw splitted segments\n\t estimatedVersion = Version.getBestVersionForData(rawSegments,\n\t errorCorrectionLevel);\n\t }\n\n\t // Build optimized segments\n\t // If estimated version is undefined, try with the highest version\n\t segments = Segments.fromString(data, estimatedVersion || 40);\n\t } else {\n\t throw new Error('Invalid data')\n\t }\n\n\t // Get the min version that can contain data\n\t var bestVersion = Version.getBestVersionForData(segments,\n\t errorCorrectionLevel);\n\n\t // If no version is found, data cannot be stored\n\t if (!bestVersion) {\n\t throw new Error('The amount of data is too big to be stored in a QR Code')\n\t }\n\n\t // If not specified, use min version as default\n\t if (!version) {\n\t version = bestVersion;\n\n\t // Check if the specified version can contain the data\n\t } else if (version < bestVersion) {\n\t throw new Error('\\n' +\n\t 'The chosen QR Code version cannot contain this amount of data.\\n' +\n\t 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n\t )\n\t }\n\n\t var dataBits = createData(version, errorCorrectionLevel, segments);\n\n\t // Allocate matrix buffer\n\t var moduleCount = Utils.getSymbolSize(version);\n\t var modules = new BitMatrix(moduleCount);\n\n\t // Add function modules\n\t setupFinderPattern(modules, version);\n\t setupTimingPattern(modules);\n\t setupAlignmentPattern(modules, version);\n\n\t // Add temporary dummy bits for format info just to set them as reserved.\n\t // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n\t // since the masking operation must be performed only on the encoding region.\n\t // These blocks will be replaced with correct values later in code.\n\t setupFormatInfo(modules, errorCorrectionLevel, 0);\n\n\t if (version >= 7) {\n\t setupVersionInfo(modules, version);\n\t }\n\n\t // Add data codewords\n\t setupData(modules, dataBits);\n\n\t if (isNaN(maskPattern)) {\n\t // Find best mask pattern\n\t maskPattern = MaskPattern.getBestMask(modules,\n\t setupFormatInfo.bind(null, modules, errorCorrectionLevel));\n\t }\n\n\t // Apply mask pattern\n\t MaskPattern.applyMask(maskPattern, modules);\n\n\t // Replace format info bits with correct values\n\t setupFormatInfo(modules, errorCorrectionLevel, maskPattern);\n\n\t return {\n\t modules: modules,\n\t version: version,\n\t errorCorrectionLevel: errorCorrectionLevel,\n\t maskPattern: maskPattern,\n\t segments: segments\n\t }\n\t}\n\n\t/**\n\t * QR Code\n\t *\n\t * @param {String | Array} data Input data\n\t * @param {Object} options Optional configurations\n\t * @param {Number} options.version QR Code version\n\t * @param {String} options.errorCorrectionLevel Error correction level\n\t * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n\t */\n\texports.create = function create (data, options) {\n\t if (typeof data === 'undefined' || data === '') {\n\t throw new Error('No input text')\n\t }\n\n\t var errorCorrectionLevel = ECLevel.M;\n\t var version;\n\t var mask;\n\n\t if (typeof options !== 'undefined') {\n\t // Use higher error correction level as default\n\t errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M);\n\t version = Version.from(options.version);\n\t mask = MaskPattern.from(options.maskPattern);\n\n\t if (options.toSJISFunc) {\n\t Utils.setToSJISFunction(options.toSJISFunc);\n\t }\n\t }\n\n\t return createSymbol(data, version, errorCorrectionLevel, mask)\n\t};\n\n\t},{\"../utils/buffer\":28,\"./alignment-pattern\":2,\"./bit-buffer\":4,\"./bit-matrix\":5,\"./error-correction-code\":7,\"./error-correction-level\":8,\"./finder-pattern\":9,\"./format-info\":10,\"./mask-pattern\":13,\"./mode\":14,\"./reed-solomon-encoder\":18,\"./segments\":20,\"./utils\":21,\"./version\":23,\"isarray\":33}],18:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\tvar Polynomial = require('./polynomial');\n\tvar Buffer = require('buffer').Buffer;\n\n\tfunction ReedSolomonEncoder (degree) {\n\t this.genPoly = undefined;\n\t this.degree = degree;\n\n\t if (this.degree) this.initialize(this.degree);\n\t}\n\n\t/**\n\t * Initialize the encoder.\n\t * The input param should correspond to the number of error correction codewords.\n\t *\n\t * @param {Number} degree\n\t */\n\tReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n\t // create an irreducible generator polynomial\n\t this.degree = degree;\n\t this.genPoly = Polynomial.generateECPolynomial(this.degree);\n\t};\n\n\t/**\n\t * Encodes a chunk of data\n\t *\n\t * @param {Buffer} data Buffer containing input data\n\t * @return {Buffer} Buffer containing encoded data\n\t */\n\tReedSolomonEncoder.prototype.encode = function encode (data) {\n\t if (!this.genPoly) {\n\t throw new Error('Encoder not initialized')\n\t }\n\n\t // Calculate EC for this data block\n\t // extends data size to data+genPoly size\n\t var pad = BufferUtil.alloc(this.degree);\n\t var paddedData = Buffer.concat([data, pad], data.length + this.degree);\n\n\t // The error correction codewords are the remainder after dividing the data codewords\n\t // by a generator polynomial\n\t var remainder = Polynomial.mod(paddedData, this.genPoly);\n\n\t // return EC data blocks (last n byte, where n is the degree of genPoly)\n\t // If coefficients number in remainder are less than genPoly degree,\n\t // pad with 0s to the left to reach the needed number of coefficients\n\t var start = this.degree - remainder.length;\n\t if (start > 0) {\n\t var buff = BufferUtil.alloc(this.degree);\n\t remainder.copy(buff, start);\n\n\t return buff\n\t }\n\n\t return remainder\n\t};\n\n\tmodule.exports = ReedSolomonEncoder;\n\n\t},{\"../utils/buffer\":28,\"./polynomial\":16,\"buffer\":30}],19:[function(require,module,exports){\n\tvar numeric = '[0-9]+';\n\tvar alphanumeric = '[A-Z $%*+\\\\-./:]+';\n\tvar kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n\t '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n\t '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n\t '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+';\n\tkanji = kanji.replace(/u/g, '\\\\u');\n\n\tvar byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+';\n\n\texports.KANJI = new RegExp(kanji, 'g');\n\texports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g');\n\texports.BYTE = new RegExp(byte, 'g');\n\texports.NUMERIC = new RegExp(numeric, 'g');\n\texports.ALPHANUMERIC = new RegExp(alphanumeric, 'g');\n\n\tvar TEST_KANJI = new RegExp('^' + kanji + '$');\n\tvar TEST_NUMERIC = new RegExp('^' + numeric + '$');\n\tvar TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$');\n\n\texports.testKanji = function testKanji (str) {\n\t return TEST_KANJI.test(str)\n\t};\n\n\texports.testNumeric = function testNumeric (str) {\n\t return TEST_NUMERIC.test(str)\n\t};\n\n\texports.testAlphanumeric = function testAlphanumeric (str) {\n\t return TEST_ALPHANUMERIC.test(str)\n\t};\n\n\t},{}],20:[function(require,module,exports){\n\tvar Mode = require('./mode');\n\tvar NumericData = require('./numeric-data');\n\tvar AlphanumericData = require('./alphanumeric-data');\n\tvar ByteData = require('./byte-data');\n\tvar KanjiData = require('./kanji-data');\n\tvar Regex = require('./regex');\n\tvar Utils = require('./utils');\n\tvar dijkstra = require('dijkstrajs');\n\n\t/**\n\t * Returns UTF8 byte length\n\t *\n\t * @param {String} str Input string\n\t * @return {Number} Number of byte\n\t */\n\tfunction getStringByteLength (str) {\n\t return unescape(encodeURIComponent(str)).length\n\t}\n\n\t/**\n\t * Get a list of segments of the specified mode\n\t * from a string\n\t *\n\t * @param {Mode} mode Segment mode\n\t * @param {String} str String to process\n\t * @return {Array} Array of object with segments data\n\t */\n\tfunction getSegments (regex, mode, str) {\n\t var segments = [];\n\t var result;\n\n\t while ((result = regex.exec(str)) !== null) {\n\t segments.push({\n\t data: result[0],\n\t index: result.index,\n\t mode: mode,\n\t length: result[0].length\n\t });\n\t }\n\n\t return segments\n\t}\n\n\t/**\n\t * Extracts a series of segments with the appropriate\n\t * modes from a string\n\t *\n\t * @param {String} dataStr Input string\n\t * @return {Array} Array of object with segments data\n\t */\n\tfunction getSegmentsFromString (dataStr) {\n\t var numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr);\n\t var alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr);\n\t var byteSegs;\n\t var kanjiSegs;\n\n\t if (Utils.isKanjiModeEnabled()) {\n\t byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr);\n\t kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr);\n\t } else {\n\t byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr);\n\t kanjiSegs = [];\n\t }\n\n\t var segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs);\n\n\t return segs\n\t .sort(function (s1, s2) {\n\t return s1.index - s2.index\n\t })\n\t .map(function (obj) {\n\t return {\n\t data: obj.data,\n\t mode: obj.mode,\n\t length: obj.length\n\t }\n\t })\n\t}\n\n\t/**\n\t * Returns how many bits are needed to encode a string of\n\t * specified length with the specified mode\n\t *\n\t * @param {Number} length String length\n\t * @param {Mode} mode Segment mode\n\t * @return {Number} Bit length\n\t */\n\tfunction getSegmentBitsLength (length, mode) {\n\t switch (mode) {\n\t case Mode.NUMERIC:\n\t return NumericData.getBitsLength(length)\n\t case Mode.ALPHANUMERIC:\n\t return AlphanumericData.getBitsLength(length)\n\t case Mode.KANJI:\n\t return KanjiData.getBitsLength(length)\n\t case Mode.BYTE:\n\t return ByteData.getBitsLength(length)\n\t }\n\t}\n\n\t/**\n\t * Merges adjacent segments which have the same mode\n\t *\n\t * @param {Array} segs Array of object with segments data\n\t * @return {Array} Array of object with segments data\n\t */\n\tfunction mergeSegments (segs) {\n\t return segs.reduce(function (acc, curr) {\n\t var prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null;\n\t if (prevSeg && prevSeg.mode === curr.mode) {\n\t acc[acc.length - 1].data += curr.data;\n\t return acc\n\t }\n\n\t acc.push(curr);\n\t return acc\n\t }, [])\n\t}\n\n\t/**\n\t * Generates a list of all possible nodes combination which\n\t * will be used to build a segments graph.\n\t *\n\t * Nodes are divided by groups. Each group will contain a list of all the modes\n\t * in which is possible to encode the given text.\n\t *\n\t * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n\t * The group for '12345' will contain then 3 objects, one for each\n\t * possible encoding mode.\n\t *\n\t * Each node represents a possible segment.\n\t *\n\t * @param {Array} segs Array of object with segments data\n\t * @return {Array} Array of object with segments data\n\t */\n\tfunction buildNodes (segs) {\n\t var nodes = [];\n\t for (var i = 0; i < segs.length; i++) {\n\t var seg = segs[i];\n\n\t switch (seg.mode) {\n\t case Mode.NUMERIC:\n\t nodes.push([seg,\n\t { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n\t { data: seg.data, mode: Mode.BYTE, length: seg.length }\n\t ]);\n\t break\n\t case Mode.ALPHANUMERIC:\n\t nodes.push([seg,\n\t { data: seg.data, mode: Mode.BYTE, length: seg.length }\n\t ]);\n\t break\n\t case Mode.KANJI:\n\t nodes.push([seg,\n\t { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n\t ]);\n\t break\n\t case Mode.BYTE:\n\t nodes.push([\n\t { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n\t ]);\n\t }\n\t }\n\n\t return nodes\n\t}\n\n\t/**\n\t * Builds a graph from a list of nodes.\n\t * All segments in each node group will be connected with all the segments of\n\t * the next group and so on.\n\t *\n\t * At each connection will be assigned a weight depending on the\n\t * segment's byte length.\n\t *\n\t * @param {Array} nodes Array of object with segments data\n\t * @param {Number} version QR Code version\n\t * @return {Object} Graph of all possible segments\n\t */\n\tfunction buildGraph (nodes, version) {\n\t var table = {};\n\t var graph = {'start': {}};\n\t var prevNodeIds = ['start'];\n\n\t for (var i = 0; i < nodes.length; i++) {\n\t var nodeGroup = nodes[i];\n\t var currentNodeIds = [];\n\n\t for (var j = 0; j < nodeGroup.length; j++) {\n\t var node = nodeGroup[j];\n\t var key = '' + i + j;\n\n\t currentNodeIds.push(key);\n\t table[key] = { node: node, lastCount: 0 };\n\t graph[key] = {};\n\n\t for (var n = 0; n < prevNodeIds.length; n++) {\n\t var prevNodeId = prevNodeIds[n];\n\n\t if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n\t graph[prevNodeId][key] =\n\t getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n\t getSegmentBitsLength(table[prevNodeId].lastCount, node.mode);\n\n\t table[prevNodeId].lastCount += node.length;\n\t } else {\n\t if (table[prevNodeId]) table[prevNodeId].lastCount = node.length;\n\n\t graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n\t 4 + Mode.getCharCountIndicator(node.mode, version); // switch cost\n\t }\n\t }\n\t }\n\n\t prevNodeIds = currentNodeIds;\n\t }\n\n\t for (n = 0; n < prevNodeIds.length; n++) {\n\t graph[prevNodeIds[n]]['end'] = 0;\n\t }\n\n\t return { map: graph, table: table }\n\t}\n\n\t/**\n\t * Builds a segment from a specified data and mode.\n\t * If a mode is not specified, the more suitable will be used.\n\t *\n\t * @param {String} data Input data\n\t * @param {Mode | String} modesHint Data mode\n\t * @return {Segment} Segment\n\t */\n\tfunction buildSingleSegment (data, modesHint) {\n\t var mode;\n\t var bestMode = Mode.getBestModeForData(data);\n\n\t mode = Mode.from(modesHint, bestMode);\n\n\t // Make sure data can be encoded\n\t if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n\t throw new Error('\"' + data + '\"' +\n\t ' cannot be encoded with mode ' + Mode.toString(mode) +\n\t '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n\t }\n\n\t // Use Mode.BYTE if Kanji support is disabled\n\t if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n\t mode = Mode.BYTE;\n\t }\n\n\t switch (mode) {\n\t case Mode.NUMERIC:\n\t return new NumericData(data)\n\n\t case Mode.ALPHANUMERIC:\n\t return new AlphanumericData(data)\n\n\t case Mode.KANJI:\n\t return new KanjiData(data)\n\n\t case Mode.BYTE:\n\t return new ByteData(data)\n\t }\n\t}\n\n\t/**\n\t * Builds a list of segments from an array.\n\t * Array can contain Strings or Objects with segment's info.\n\t *\n\t * For each item which is a string, will be generated a segment with the given\n\t * string and the more appropriate encoding mode.\n\t *\n\t * For each item which is an object, will be generated a segment with the given\n\t * data and mode.\n\t * Objects must contain at least the property \"data\".\n\t * If property \"mode\" is not present, the more suitable mode will be used.\n\t *\n\t * @param {Array} array Array of objects with segments data\n\t * @return {Array} Array of Segments\n\t */\n\texports.fromArray = function fromArray (array) {\n\t return array.reduce(function (acc, seg) {\n\t if (typeof seg === 'string') {\n\t acc.push(buildSingleSegment(seg, null));\n\t } else if (seg.data) {\n\t acc.push(buildSingleSegment(seg.data, seg.mode));\n\t }\n\n\t return acc\n\t }, [])\n\t};\n\n\t/**\n\t * Builds an optimized sequence of segments from a string,\n\t * which will produce the shortest possible bitstream.\n\t *\n\t * @param {String} data Input string\n\t * @param {Number} version QR Code version\n\t * @return {Array} Array of segments\n\t */\n\texports.fromString = function fromString (data, version) {\n\t var segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled());\n\n\t var nodes = buildNodes(segs);\n\t var graph = buildGraph(nodes, version);\n\t var path = dijkstra.find_path(graph.map, 'start', 'end');\n\n\t var optimizedSegs = [];\n\t for (var i = 1; i < path.length - 1; i++) {\n\t optimizedSegs.push(graph.table[path[i]].node);\n\t }\n\n\t return exports.fromArray(mergeSegments(optimizedSegs))\n\t};\n\n\t/**\n\t * Splits a string in various segments with the modes which\n\t * best represent their content.\n\t * The produced segments are far from being optimized.\n\t * The output of this function is only used to estimate a QR Code version\n\t * which may contain the data.\n\t *\n\t * @param {string} data Input string\n\t * @return {Array} Array of segments\n\t */\n\texports.rawSplit = function rawSplit (data) {\n\t return exports.fromArray(\n\t getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\t )\n\t};\n\n\t},{\"./alphanumeric-data\":3,\"./byte-data\":6,\"./kanji-data\":12,\"./mode\":14,\"./numeric-data\":15,\"./regex\":19,\"./utils\":21,\"dijkstrajs\":31}],21:[function(require,module,exports){\n\tvar toSJISFunction;\n\tvar CODEWORDS_COUNT = [\n\t 0, // Not used\n\t 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n\t 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n\t 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n\t 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n\t];\n\n\t/**\n\t * Returns the QR Code size for the specified version\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Number} size of QR code\n\t */\n\texports.getSymbolSize = function getSymbolSize (version) {\n\t if (!version) throw new Error('\"version\" cannot be null or undefined')\n\t if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n\t return version * 4 + 17\n\t};\n\n\t/**\n\t * Returns the total number of codewords used to store data and EC information.\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Number} Data length in bits\n\t */\n\texports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n\t return CODEWORDS_COUNT[version]\n\t};\n\n\t/**\n\t * Encode data with Bose-Chaudhuri-Hocquenghem\n\t *\n\t * @param {Number} data Value to encode\n\t * @return {Number} Encoded value\n\t */\n\texports.getBCHDigit = function (data) {\n\t var digit = 0;\n\n\t while (data !== 0) {\n\t digit++;\n\t data >>>= 1;\n\t }\n\n\t return digit\n\t};\n\n\texports.setToSJISFunction = function setToSJISFunction (f) {\n\t if (typeof f !== 'function') {\n\t throw new Error('\"toSJISFunc\" is not a valid function.')\n\t }\n\n\t toSJISFunction = f;\n\t};\n\n\texports.isKanjiModeEnabled = function () {\n\t return typeof toSJISFunction !== 'undefined'\n\t};\n\n\texports.toSJIS = function toSJIS (kanji) {\n\t return toSJISFunction(kanji)\n\t};\n\n\t},{}],22:[function(require,module,exports){\n\t/**\n\t * Check if QR Code version is valid\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Boolean} true if valid version, false otherwise\n\t */\n\texports.isValid = function isValid (version) {\n\t return !isNaN(version) && version >= 1 && version <= 40\n\t};\n\n\t},{}],23:[function(require,module,exports){\n\tvar Utils = require('./utils');\n\tvar ECCode = require('./error-correction-code');\n\tvar ECLevel = require('./error-correction-level');\n\tvar Mode = require('./mode');\n\tvar VersionCheck = require('./version-check');\n\tvar isArray = require('isarray');\n\n\t// Generator polynomial used to encode version information\n\tvar G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n\tvar G18_BCH = Utils.getBCHDigit(G18);\n\n\tfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n\t for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n\t if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n\t return currentVersion\n\t }\n\t }\n\n\t return undefined\n\t}\n\n\tfunction getReservedBitsCount (mode, version) {\n\t // Character count indicator + mode indicator bits\n\t return Mode.getCharCountIndicator(mode, version) + 4\n\t}\n\n\tfunction getTotalBitsFromDataArray (segments, version) {\n\t var totalBits = 0;\n\n\t segments.forEach(function (data) {\n\t var reservedBits = getReservedBitsCount(data.mode, version);\n\t totalBits += reservedBits + data.getBitsLength();\n\t });\n\n\t return totalBits\n\t}\n\n\tfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n\t for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n\t var length = getTotalBitsFromDataArray(segments, currentVersion);\n\t if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n\t return currentVersion\n\t }\n\t }\n\n\t return undefined\n\t}\n\n\t/**\n\t * Returns version number from a value.\n\t * If value is not a valid version, returns defaultValue\n\t *\n\t * @param {Number|String} value QR Code version\n\t * @param {Number} defaultValue Fallback value\n\t * @return {Number} QR Code version number\n\t */\n\texports.from = function from (value, defaultValue) {\n\t if (VersionCheck.isValid(value)) {\n\t return parseInt(value, 10)\n\t }\n\n\t return defaultValue\n\t};\n\n\t/**\n\t * Returns how much data can be stored with the specified QR code version\n\t * and error correction level\n\t *\n\t * @param {Number} version QR Code version (1-40)\n\t * @param {Number} errorCorrectionLevel Error correction level\n\t * @param {Mode} mode Data mode\n\t * @return {Number} Quantity of storable data\n\t */\n\texports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n\t if (!VersionCheck.isValid(version)) {\n\t throw new Error('Invalid QR Code version')\n\t }\n\n\t // Use Byte mode as default\n\t if (typeof mode === 'undefined') mode = Mode.BYTE;\n\n\t // Total codewords for this QR code version (Data + Error correction)\n\t var totalCodewords = Utils.getSymbolTotalCodewords(version);\n\n\t // Total number of error correction codewords\n\t var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n\n\t // Total number of data codewords\n\t var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8;\n\n\t if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n\t var usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version);\n\n\t // Return max number of storable codewords\n\t switch (mode) {\n\t case Mode.NUMERIC:\n\t return Math.floor((usableBits / 10) * 3)\n\n\t case Mode.ALPHANUMERIC:\n\t return Math.floor((usableBits / 11) * 2)\n\n\t case Mode.KANJI:\n\t return Math.floor(usableBits / 13)\n\n\t case Mode.BYTE:\n\t default:\n\t return Math.floor(usableBits / 8)\n\t }\n\t};\n\n\t/**\n\t * Returns the minimum version needed to contain the amount of data\n\t *\n\t * @param {Segment} data Segment of data\n\t * @param {Number} [errorCorrectionLevel=H] Error correction level\n\t * @param {Mode} mode Data mode\n\t * @return {Number} QR Code version\n\t */\n\texports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n\t var seg;\n\n\t var ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M);\n\n\t if (isArray(data)) {\n\t if (data.length > 1) {\n\t return getBestVersionForMixedData(data, ecl)\n\t }\n\n\t if (data.length === 0) {\n\t return 1\n\t }\n\n\t seg = data[0];\n\t } else {\n\t seg = data;\n\t }\n\n\t return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n\t};\n\n\t/**\n\t * Returns version information with relative error correction bits\n\t *\n\t * The version information is included in QR Code symbols of version 7 or larger.\n\t * It consists of an 18-bit sequence containing 6 data bits,\n\t * with 12 error correction bits calculated using the (18, 6) Golay code.\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Number} Encoded version info bits\n\t */\n\texports.getEncodedBits = function getEncodedBits (version) {\n\t if (!VersionCheck.isValid(version) || version < 7) {\n\t throw new Error('Invalid QR Code version')\n\t }\n\n\t var d = version << 12;\n\n\t while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n\t d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH));\n\t }\n\n\t return (version << 12) | d\n\t};\n\n\t},{\"./error-correction-code\":7,\"./error-correction-level\":8,\"./mode\":14,\"./utils\":21,\"./version-check\":22,\"isarray\":33}],24:[function(require,module,exports){\n\n\tvar canPromise = require('./can-promise');\n\n\tvar QRCode = require('./core/qrcode');\n\tvar CanvasRenderer = require('./renderer/canvas');\n\tvar SvgRenderer = require('./renderer/svg-tag.js');\n\n\tfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n\t var args = [].slice.call(arguments, 1);\n\t var argsNum = args.length;\n\t var isLastArgCb = typeof args[argsNum - 1] === 'function';\n\n\t if (!isLastArgCb && !canPromise()) {\n\t throw new Error('Callback required as last argument')\n\t }\n\n\t if (isLastArgCb) {\n\t if (argsNum < 2) {\n\t throw new Error('Too few arguments provided')\n\t }\n\n\t if (argsNum === 2) {\n\t cb = text;\n\t text = canvas;\n\t canvas = opts = undefined;\n\t } else if (argsNum === 3) {\n\t if (canvas.getContext && typeof cb === 'undefined') {\n\t cb = opts;\n\t opts = undefined;\n\t } else {\n\t cb = opts;\n\t opts = text;\n\t text = canvas;\n\t canvas = undefined;\n\t }\n\t }\n\t } else {\n\t if (argsNum < 1) {\n\t throw new Error('Too few arguments provided')\n\t }\n\n\t if (argsNum === 1) {\n\t text = canvas;\n\t canvas = opts = undefined;\n\t } else if (argsNum === 2 && !canvas.getContext) {\n\t opts = text;\n\t text = canvas;\n\t canvas = undefined;\n\t }\n\n\t return new Promise(function (resolve, reject) {\n\t try {\n\t var data = QRCode.create(text, opts);\n\t resolve(renderFunc(data, canvas, opts));\n\t } catch (e) {\n\t reject(e);\n\t }\n\t })\n\t }\n\n\t try {\n\t var data = QRCode.create(text, opts);\n\t cb(null, renderFunc(data, canvas, opts));\n\t } catch (e) {\n\t cb(e);\n\t }\n\t}\n\n\texports.create = QRCode.create;\n\texports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render);\n\texports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL);\n\n\t// only svg for now.\n\texports.toString = renderCanvas.bind(null, function (data, _, opts) {\n\t return SvgRenderer.render(data, opts)\n\t});\n\n\t},{\"./can-promise\":1,\"./core/qrcode\":17,\"./renderer/canvas\":25,\"./renderer/svg-tag.js\":26}],25:[function(require,module,exports){\n\tvar Utils = require('./utils');\n\n\tfunction clearCanvas (ctx, canvas, size) {\n\t ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n\t if (!canvas.style) canvas.style = {};\n\t canvas.height = size;\n\t canvas.width = size;\n\t canvas.style.height = size + 'px';\n\t canvas.style.width = size + 'px';\n\t}\n\n\tfunction getCanvasElement () {\n\t try {\n\t return document.createElement('canvas')\n\t } catch (e) {\n\t throw new Error('You need to specify a canvas element')\n\t }\n\t}\n\n\texports.render = function render (qrData, canvas, options) {\n\t var opts = options;\n\t var canvasEl = canvas;\n\n\t if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n\t opts = canvas;\n\t canvas = undefined;\n\t }\n\n\t if (!canvas) {\n\t canvasEl = getCanvasElement();\n\t }\n\n\t opts = Utils.getOptions(opts);\n\t var size = Utils.getImageWidth(qrData.modules.size, opts);\n\n\t var ctx = canvasEl.getContext('2d');\n\t var image = ctx.createImageData(size, size);\n\t Utils.qrToImageData(image.data, qrData, opts);\n\n\t clearCanvas(ctx, canvasEl, size);\n\t ctx.putImageData(image, 0, 0);\n\n\t return canvasEl\n\t};\n\n\texports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n\t var opts = options;\n\n\t if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n\t opts = canvas;\n\t canvas = undefined;\n\t }\n\n\t if (!opts) opts = {};\n\n\t var canvasEl = exports.render(qrData, canvas, opts);\n\n\t var type = opts.type || 'image/png';\n\t var rendererOpts = opts.rendererOpts || {};\n\n\t return canvasEl.toDataURL(type, rendererOpts.quality)\n\t};\n\n\t},{\"./utils\":27}],26:[function(require,module,exports){\n\tvar Utils = require('./utils');\n\n\tfunction getColorAttrib (color, attrib) {\n\t var alpha = color.a / 255;\n\t var str = attrib + '=\"' + color.hex + '\"';\n\n\t return alpha < 1\n\t ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n\t : str\n\t}\n\n\tfunction svgCmd (cmd, x, y) {\n\t var str = cmd + x;\n\t if (typeof y !== 'undefined') str += ' ' + y;\n\n\t return str\n\t}\n\n\tfunction qrToPath (data, size, margin) {\n\t var path = '';\n\t var moveBy = 0;\n\t var newRow = false;\n\t var lineLength = 0;\n\n\t for (var i = 0; i < data.length; i++) {\n\t var col = Math.floor(i % size);\n\t var row = Math.floor(i / size);\n\n\t if (!col && !newRow) newRow = true;\n\n\t if (data[i]) {\n\t lineLength++;\n\n\t if (!(i > 0 && col > 0 && data[i - 1])) {\n\t path += newRow\n\t ? svgCmd('M', col + margin, 0.5 + row + margin)\n\t : svgCmd('m', moveBy, 0);\n\n\t moveBy = 0;\n\t newRow = false;\n\t }\n\n\t if (!(col + 1 < size && data[i + 1])) {\n\t path += svgCmd('h', lineLength);\n\t lineLength = 0;\n\t }\n\t } else {\n\t moveBy++;\n\t }\n\t }\n\n\t return path\n\t}\n\n\texports.render = function render (qrData, options, cb) {\n\t var opts = Utils.getOptions(options);\n\t var size = qrData.modules.size;\n\t var data = qrData.modules.data;\n\t var qrcodesize = size + opts.margin * 2;\n\n\t var bg = !opts.color.light.a\n\t ? ''\n\t : '<path ' + getColorAttrib(opts.color.light, 'fill') +\n\t ' d=\"M0 0h' + qrcodesize + 'v' + qrcodesize + 'H0z\"/>';\n\n\t var path =\n\t '<path ' + getColorAttrib(opts.color.dark, 'stroke') +\n\t ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>';\n\n\t var viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"';\n\n\t var width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" ';\n\n\t var svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + '</svg>\\n';\n\n\t if (typeof cb === 'function') {\n\t cb(null, svgTag);\n\t }\n\n\t return svgTag\n\t};\n\n\t},{\"./utils\":27}],27:[function(require,module,exports){\n\tfunction hex2rgba (hex) {\n\t if (typeof hex === 'number') {\n\t hex = hex.toString();\n\t }\n\n\t if (typeof hex !== 'string') {\n\t throw new Error('Color should be defined as hex string')\n\t }\n\n\t var hexCode = hex.slice().replace('#', '').split('');\n\t if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n\t throw new Error('Invalid hex color: ' + hex)\n\t }\n\n\t // Convert from short to long form (fff -> ffffff)\n\t if (hexCode.length === 3 || hexCode.length === 4) {\n\t hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n\t return [c, c]\n\t }));\n\t }\n\n\t // Add default alpha value\n\t if (hexCode.length === 6) hexCode.push('F', 'F');\n\n\t var hexValue = parseInt(hexCode.join(''), 16);\n\n\t return {\n\t r: (hexValue >> 24) & 255,\n\t g: (hexValue >> 16) & 255,\n\t b: (hexValue >> 8) & 255,\n\t a: hexValue & 255,\n\t hex: '#' + hexCode.slice(0, 6).join('')\n\t }\n\t}\n\n\texports.getOptions = function getOptions (options) {\n\t if (!options) options = {};\n\t if (!options.color) options.color = {};\n\n\t var margin = typeof options.margin === 'undefined' ||\n\t options.margin === null ||\n\t options.margin < 0 ? 4 : options.margin;\n\n\t var width = options.width && options.width >= 21 ? options.width : undefined;\n\t var scale = options.scale || 4;\n\n\t return {\n\t width: width,\n\t scale: width ? 4 : scale,\n\t margin: margin,\n\t color: {\n\t dark: hex2rgba(options.color.dark || '#000000ff'),\n\t light: hex2rgba(options.color.light || '#ffffffff')\n\t },\n\t type: options.type,\n\t rendererOpts: options.rendererOpts || {}\n\t }\n\t};\n\n\texports.getScale = function getScale (qrSize, opts) {\n\t return opts.width && opts.width >= qrSize + opts.margin * 2\n\t ? opts.width / (qrSize + opts.margin * 2)\n\t : opts.scale\n\t};\n\n\texports.getImageWidth = function getImageWidth (qrSize, opts) {\n\t var scale = exports.getScale(qrSize, opts);\n\t return Math.floor((qrSize + opts.margin * 2) * scale)\n\t};\n\n\texports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n\t var size = qr.modules.size;\n\t var data = qr.modules.data;\n\t var scale = exports.getScale(size, opts);\n\t var symbolSize = Math.floor((size + opts.margin * 2) * scale);\n\t var scaledMargin = opts.margin * scale;\n\t var palette = [opts.color.light, opts.color.dark];\n\n\t for (var i = 0; i < symbolSize; i++) {\n\t for (var j = 0; j < symbolSize; j++) {\n\t var posDst = (i * symbolSize + j) * 4;\n\t var pxColor = opts.color.light;\n\n\t if (i >= scaledMargin && j >= scaledMargin &&\n\t i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n\t var iSrc = Math.floor((i - scaledMargin) / scale);\n\t var jSrc = Math.floor((j - scaledMargin) / scale);\n\t pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0];\n\t }\n\n\t imgData[posDst++] = pxColor.r;\n\t imgData[posDst++] = pxColor.g;\n\t imgData[posDst++] = pxColor.b;\n\t imgData[posDst] = pxColor.a;\n\t }\n\t }\n\t};\n\n\t},{}],28:[function(require,module,exports){\n\n\tvar isArray = require('isarray');\n\n\tfunction typedArraySupport () {\n\t // Can typed array instances be augmented?\n\t try {\n\t var arr = new Uint8Array(1);\n\t arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }};\n\t return arr.foo() === 42\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tvar K_MAX_LENGTH = Buffer.TYPED_ARRAY_SUPPORT\n\t ? 0x7fffffff\n\t : 0x3fffffff;\n\n\tfunction Buffer (arg, offset, length) {\n\t if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n\t return new Buffer(arg, offset, length)\n\t }\n\n\t if (typeof arg === 'number') {\n\t return allocUnsafe(this, arg)\n\t }\n\n\t return from(this, arg, offset, length)\n\t}\n\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t Buffer.prototype.__proto__ = Uint8Array.prototype;\n\t Buffer.__proto__ = Uint8Array;\n\n\t // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n\t if (typeof Symbol !== 'undefined' && Symbol.species &&\n\t Buffer[Symbol.species] === Buffer) {\n\t Object.defineProperty(Buffer, Symbol.species, {\n\t value: null,\n\t configurable: true,\n\t enumerable: false,\n\t writable: false\n\t });\n\t }\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= K_MAX_LENGTH) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction isnan (val) {\n\t return val !== val // eslint-disable-line no-self-compare\n\t}\n\n\tfunction createBuffer (that, length) {\n\t var buf;\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t buf = new Uint8Array(length);\n\t buf.__proto__ = Buffer.prototype;\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t buf = that;\n\t if (buf === null) {\n\t buf = new Buffer(length);\n\t }\n\t buf.length = length;\n\t }\n\n\t return buf\n\t}\n\n\tfunction allocUnsafe (that, size) {\n\t var buf = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) {\n\t for (var i = 0; i < size; ++i) {\n\t buf[i] = 0;\n\t }\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromString (that, string) {\n\t var length = byteLength(string) | 0;\n\t var buf = createBuffer(that, length);\n\n\t var actual = buf.write(string);\n\n\t if (actual !== length) {\n\t // Writing a hex string, for example, that contains invalid characters will\n\t // cause everything after the first invalid character to be ignored. (e.g.\n\t // 'abxxcd' will be treated as 'ab')\n\t buf = buf.slice(0, actual);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromArrayLike (that, array) {\n\t var length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t var buf = createBuffer(that, length);\n\t for (var i = 0; i < length; i += 1) {\n\t buf[i] = array[i] & 255;\n\t }\n\t return buf\n\t}\n\n\tfunction fromArrayBuffer (that, array, byteOffset, length) {\n\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t throw new RangeError('\\'offset\\' is out of bounds')\n\t }\n\n\t if (array.byteLength < byteOffset + (length || 0)) {\n\t throw new RangeError('\\'length\\' is out of bounds')\n\t }\n\n\t var buf;\n\t if (byteOffset === undefined && length === undefined) {\n\t buf = new Uint8Array(array);\n\t } else if (length === undefined) {\n\t buf = new Uint8Array(array, byteOffset);\n\t } else {\n\t buf = new Uint8Array(array, byteOffset, length);\n\t }\n\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t buf.__proto__ = Buffer.prototype;\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t buf = fromArrayLike(that, buf);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromObject (that, obj) {\n\t if (Buffer.isBuffer(obj)) {\n\t var len = checked(obj.length) | 0;\n\t var buf = createBuffer(that, len);\n\n\t if (buf.length === 0) {\n\t return buf\n\t }\n\n\t obj.copy(buf, 0, 0, len);\n\t return buf\n\t }\n\n\t if (obj) {\n\t if ((typeof ArrayBuffer !== 'undefined' &&\n\t obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n\t if (typeof obj.length !== 'number' || isnan(obj.length)) {\n\t return createBuffer(that, 0)\n\t }\n\t return fromArrayLike(that, obj)\n\t }\n\n\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t return fromArrayLike(that, obj.data)\n\t }\n\t }\n\n\t throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity;\n\t var codePoint;\n\t var length = string.length;\n\t var leadSurrogate = null;\n\t var bytes = [];\n\n\t for (var i = 0; i < length; ++i) {\n\t codePoint = string.charCodeAt(i);\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t }\n\n\t // valid lead\n\t leadSurrogate = codePoint;\n\n\t continue\n\t }\n\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t leadSurrogate = codePoint;\n\t continue\n\t }\n\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t }\n\n\t leadSurrogate = null;\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint);\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction byteLength (string) {\n\t if (Buffer.isBuffer(string)) {\n\t return string.length\n\t }\n\t if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n\t (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n\t return string.byteLength\n\t }\n\t if (typeof string !== 'string') {\n\t string = '' + string;\n\t }\n\n\t var len = string.length;\n\t if (len === 0) return 0\n\n\t return utf8ToBytes(string).length\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t for (var i = 0; i < length; ++i) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i];\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction from (that, value, offset, length) {\n\t if (typeof value === 'number') {\n\t throw new TypeError('\"value\" argument must not be a number')\n\t }\n\n\t if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n\t return fromArrayBuffer(that, value, offset, length)\n\t }\n\n\t if (typeof value === 'string') {\n\t return fromString(that, value)\n\t }\n\n\t return fromObject(that, value)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, offset[, length])\n\t } else if (isFinite(offset)) {\n\t offset = offset | 0;\n\t if (isFinite(length)) {\n\t length = length | 0;\n\t } else {\n\t length = undefined;\n\t }\n\t }\n\n\t var remaining = this.length - offset;\n\t if (length === undefined || length > remaining) length = remaining;\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('Attempt to write outside buffer bounds')\n\t }\n\n\t return utf8Write(this, string, offset, length)\n\t};\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t var len = this.length;\n\t start = ~~start;\n\t end = end === undefined ? len : ~~end;\n\n\t if (start < 0) {\n\t start += len;\n\t if (start < 0) start = 0;\n\t } else if (start > len) {\n\t start = len;\n\t }\n\n\t if (end < 0) {\n\t end += len;\n\t if (end < 0) end = 0;\n\t } else if (end > len) {\n\t end = len;\n\t }\n\n\t if (end < start) end = start;\n\n\t var newBuf;\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t newBuf = this.subarray(start, end);\n\t // Return an augmented `Uint8Array` instance\n\t newBuf.__proto__ = Buffer.prototype;\n\t } else {\n\t var sliceLen = end - start;\n\t newBuf = new Buffer(sliceLen, undefined);\n\t for (var i = 0; i < sliceLen; ++i) {\n\t newBuf[i] = this[i + start];\n\t }\n\t }\n\n\t return newBuf\n\t};\n\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!start) start = 0;\n\t if (!end && end !== 0) end = this.length;\n\t if (targetStart >= target.length) targetStart = target.length;\n\t if (!targetStart) targetStart = 0;\n\t if (end > 0 && end < start) end = start;\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length;\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start;\n\t }\n\n\t var len = end - start;\n\t var i;\n\n\t if (this === target && start < targetStart && targetStart < end) {\n\t // descending copy from end\n\t for (i = len - 1; i >= 0; --i) {\n\t target[i + targetStart] = this[i + start];\n\t }\n\t } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n\t // ascending copy from start\n\t for (i = 0; i < len; ++i) {\n\t target[i + targetStart] = this[i + start];\n\t }\n\t } else {\n\t Uint8Array.prototype.set.call(\n\t target,\n\t this.subarray(start, start + len),\n\t targetStart\n\t );\n\t }\n\n\t return len\n\t};\n\n\tBuffer.prototype.fill = function fill (val, start, end) {\n\t // Handle string cases:\n\t if (typeof val === 'string') {\n\t if (typeof start === 'string') {\n\t start = 0;\n\t end = this.length;\n\t } else if (typeof end === 'string') {\n\t end = this.length;\n\t }\n\t if (val.length === 1) {\n\t var code = val.charCodeAt(0);\n\t if (code < 256) {\n\t val = code;\n\t }\n\t }\n\t } else if (typeof val === 'number') {\n\t val = val & 255;\n\t }\n\n\t // Invalid ranges are not set to a default, so can range check early.\n\t if (start < 0 || this.length < start || this.length < end) {\n\t throw new RangeError('Out of range index')\n\t }\n\n\t if (end <= start) {\n\t return this\n\t }\n\n\t start = start >>> 0;\n\t end = end === undefined ? this.length : end >>> 0;\n\n\t if (!val) val = 0;\n\n\t var i;\n\t if (typeof val === 'number') {\n\t for (i = start; i < end; ++i) {\n\t this[i] = val;\n\t }\n\t } else {\n\t var bytes = Buffer.isBuffer(val)\n\t ? val\n\t : new Buffer(val);\n\t var len = bytes.length;\n\t for (i = 0; i < end - start; ++i) {\n\t this[i + start] = bytes[i % len];\n\t }\n\t }\n\n\t return this\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!isArray(list)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\n\t if (list.length === 0) {\n\t return createBuffer(null, 0)\n\t }\n\n\t var i;\n\t if (length === undefined) {\n\t length = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t length += list[i].length;\n\t }\n\t }\n\n\t var buffer = allocUnsafe(null, length);\n\t var pos = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t var buf = list[i];\n\t if (!Buffer.isBuffer(buf)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\t buf.copy(buffer, pos);\n\t pos += buf.length;\n\t }\n\t return buffer\n\t};\n\n\tBuffer.byteLength = byteLength;\n\n\tBuffer.prototype._isBuffer = true;\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return !!(b != null && b._isBuffer)\n\t};\n\n\tmodule.exports.alloc = function (size) {\n\t var buffer = new Buffer(size);\n\t buffer.fill(0);\n\t return buffer\n\t};\n\n\tmodule.exports.from = function (data) {\n\t return new Buffer(data)\n\t};\n\n\t},{\"isarray\":33}],29:[function(require,module,exports){\n\n\texports.byteLength = byteLength;\n\texports.toByteArray = toByteArray;\n\texports.fromByteArray = fromByteArray;\n\n\tvar lookup = [];\n\tvar revLookup = [];\n\tvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\n\tvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\tfor (var i = 0, len = code.length; i < len; ++i) {\n\t lookup[i] = code[i];\n\t revLookup[code.charCodeAt(i)] = i;\n\t}\n\n\t// Support decoding URL-safe base64 strings, as Node.js does.\n\t// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\trevLookup['-'.charCodeAt(0)] = 62;\n\trevLookup['_'.charCodeAt(0)] = 63;\n\n\tfunction getLens (b64) {\n\t var len = b64.length;\n\n\t if (len % 4 > 0) {\n\t throw new Error('Invalid string. Length must be a multiple of 4')\n\t }\n\n\t // Trim off extra bytes after placeholder bytes are found\n\t // See: https://github.com/beatgammit/base64-js/issues/42\n\t var validLen = b64.indexOf('=');\n\t if (validLen === -1) validLen = len;\n\n\t var placeHoldersLen = validLen === len\n\t ? 0\n\t : 4 - (validLen % 4);\n\n\t return [validLen, placeHoldersLen]\n\t}\n\n\t// base64 is 4/3 + up to two characters of the original data\n\tfunction byteLength (b64) {\n\t var lens = getLens(b64);\n\t var validLen = lens[0];\n\t var placeHoldersLen = lens[1];\n\t return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n\t}\n\n\tfunction _byteLength (b64, validLen, placeHoldersLen) {\n\t return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n\t}\n\n\tfunction toByteArray (b64) {\n\t var tmp;\n\t var lens = getLens(b64);\n\t var validLen = lens[0];\n\t var placeHoldersLen = lens[1];\n\n\t var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n\t var curByte = 0;\n\n\t // if there are placeholders, only get up to the last complete 4 chars\n\t var len = placeHoldersLen > 0\n\t ? validLen - 4\n\t : validLen;\n\n\t var i;\n\t for (i = 0; i < len; i += 4) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 18) |\n\t (revLookup[b64.charCodeAt(i + 1)] << 12) |\n\t (revLookup[b64.charCodeAt(i + 2)] << 6) |\n\t revLookup[b64.charCodeAt(i + 3)];\n\t arr[curByte++] = (tmp >> 16) & 0xFF;\n\t arr[curByte++] = (tmp >> 8) & 0xFF;\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t if (placeHoldersLen === 2) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 2) |\n\t (revLookup[b64.charCodeAt(i + 1)] >> 4);\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t if (placeHoldersLen === 1) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 10) |\n\t (revLookup[b64.charCodeAt(i + 1)] << 4) |\n\t (revLookup[b64.charCodeAt(i + 2)] >> 2);\n\t arr[curByte++] = (tmp >> 8) & 0xFF;\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t return arr\n\t}\n\n\tfunction tripletToBase64 (num) {\n\t return lookup[num >> 18 & 0x3F] +\n\t lookup[num >> 12 & 0x3F] +\n\t lookup[num >> 6 & 0x3F] +\n\t lookup[num & 0x3F]\n\t}\n\n\tfunction encodeChunk (uint8, start, end) {\n\t var tmp;\n\t var output = [];\n\t for (var i = start; i < end; i += 3) {\n\t tmp =\n\t ((uint8[i] << 16) & 0xFF0000) +\n\t ((uint8[i + 1] << 8) & 0xFF00) +\n\t (uint8[i + 2] & 0xFF);\n\t output.push(tripletToBase64(tmp));\n\t }\n\t return output.join('')\n\t}\n\n\tfunction fromByteArray (uint8) {\n\t var tmp;\n\t var len = uint8.length;\n\t var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\t var parts = [];\n\t var maxChunkLength = 16383; // must be multiple of 3\n\n\t // go through the array every three bytes, we'll deal with trailing stuff later\n\t for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n\t parts.push(encodeChunk(\n\t uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n\t ));\n\t }\n\n\t // pad the end with zeros, but make sure to not forget the extra bytes\n\t if (extraBytes === 1) {\n\t tmp = uint8[len - 1];\n\t parts.push(\n\t lookup[tmp >> 2] +\n\t lookup[(tmp << 4) & 0x3F] +\n\t '=='\n\t );\n\t } else if (extraBytes === 2) {\n\t tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n\t parts.push(\n\t lookup[tmp >> 10] +\n\t lookup[(tmp >> 4) & 0x3F] +\n\t lookup[(tmp << 2) & 0x3F] +\n\t '='\n\t );\n\t }\n\n\t return parts.join('')\n\t}\n\n\t},{}],30:[function(require,module,exports){\n\n\tvar base64 = require('base64-js');\n\tvar ieee754 = require('ieee754');\n\tvar customInspectSymbol =\n\t (typeof Symbol === 'function' && typeof Symbol.for === 'function')\n\t ? Symbol.for('nodejs.util.inspect.custom')\n\t : null;\n\n\texports.Buffer = Buffer;\n\texports.SlowBuffer = SlowBuffer;\n\texports.INSPECT_MAX_BYTES = 50;\n\n\tvar K_MAX_LENGTH = 0x7fffffff;\n\texports.kMaxLength = K_MAX_LENGTH;\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Print warning and recommend using `buffer` v4.x which has an Object\n\t * implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * We report that the browser does not support typed arrays if the are not subclassable\n\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t * for __proto__ and has a buggy typed array implementation.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t typeof console.error === 'function') {\n\t console.error(\n\t 'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t );\n\t}\n\n\tfunction typedArraySupport () {\n\t // Can typed array instances can be augmented?\n\t try {\n\t var arr = new Uint8Array(1);\n\t var proto = { foo: function () { return 42 } };\n\t Object.setPrototypeOf(proto, Uint8Array.prototype);\n\t Object.setPrototypeOf(arr, proto);\n\t return arr.foo() === 42\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\n\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.buffer\n\t }\n\t});\n\n\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.byteOffset\n\t }\n\t});\n\n\tfunction createBuffer (length) {\n\t if (length > K_MAX_LENGTH) {\n\t throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t }\n\t // Return an augmented `Uint8Array` instance\n\t var buf = new Uint8Array(length);\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\t return buf\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t if (typeof encodingOrOffset === 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be of type string. Received type number'\n\t )\n\t }\n\t return allocUnsafe(arg)\n\t }\n\t return from(arg, encodingOrOffset, length)\n\t}\n\n\t// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n\tif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n\t Buffer[Symbol.species] === Buffer) {\n\t Object.defineProperty(Buffer, Symbol.species, {\n\t value: null,\n\t configurable: true,\n\t enumerable: false,\n\t writable: false\n\t });\n\t}\n\n\tBuffer.poolSize = 8192; // not used by this implementation\n\n\tfunction from (value, encodingOrOffset, length) {\n\t if (typeof value === 'string') {\n\t return fromString(value, encodingOrOffset)\n\t }\n\n\t if (ArrayBuffer.isView(value)) {\n\t return fromArrayLike(value)\n\t }\n\n\t if (value == null) {\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t }\n\n\t if (isInstance(value, ArrayBuffer) ||\n\t (value && isInstance(value.buffer, ArrayBuffer))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof value === 'number') {\n\t throw new TypeError(\n\t 'The \"value\" argument must not be of type number. Received type number'\n\t )\n\t }\n\n\t var valueOf = value.valueOf && value.valueOf();\n\t if (valueOf != null && valueOf !== value) {\n\t return Buffer.from(valueOf, encodingOrOffset, length)\n\t }\n\n\t var b = fromObject(value);\n\t if (b) return b\n\n\t if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t typeof value[Symbol.toPrimitive] === 'function') {\n\t return Buffer.from(\n\t value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n\t )\n\t }\n\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t return from(value, encodingOrOffset, length)\n\t};\n\n\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t// https://github.com/feross/buffer/pull/148\n\tObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n\tObject.setPrototypeOf(Buffer, Uint8Array);\n\n\tfunction assertSize (size) {\n\t if (typeof size !== 'number') {\n\t throw new TypeError('\"size\" argument must be of type number')\n\t } else if (size < 0) {\n\t throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t }\n\t}\n\n\tfunction alloc (size, fill, encoding) {\n\t assertSize(size);\n\t if (size <= 0) {\n\t return createBuffer(size)\n\t }\n\t if (fill !== undefined) {\n\t // Only pay attention to encoding if it's a string. This\n\t // prevents accidentally sending in a number that would\n\t // be interpretted as a start offset.\n\t return typeof encoding === 'string'\n\t ? createBuffer(size).fill(fill, encoding)\n\t : createBuffer(size).fill(fill)\n\t }\n\t return createBuffer(size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t return alloc(size, fill, encoding)\n\t};\n\n\tfunction allocUnsafe (size) {\n\t assertSize(size);\n\t return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t return allocUnsafe(size)\n\t};\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t return allocUnsafe(size)\n\t};\n\n\tfunction fromString (string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') {\n\t encoding = 'utf8';\n\t }\n\n\t if (!Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\n\t var length = byteLength(string, encoding) | 0;\n\t var buf = createBuffer(length);\n\n\t var actual = buf.write(string, encoding);\n\n\t if (actual !== length) {\n\t // Writing a hex string, for example, that contains invalid characters will\n\t // cause everything after the first invalid character to be ignored. (e.g.\n\t // 'abxxcd' will be treated as 'ab')\n\t buf = buf.slice(0, actual);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromArrayLike (array) {\n\t var length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t var buf = createBuffer(length);\n\t for (var i = 0; i < length; i += 1) {\n\t buf[i] = array[i] & 255;\n\t }\n\t return buf\n\t}\n\n\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t throw new RangeError('\"offset\" is outside of buffer bounds')\n\t }\n\n\t if (array.byteLength < byteOffset + (length || 0)) {\n\t throw new RangeError('\"length\" is outside of buffer bounds')\n\t }\n\n\t var buf;\n\t if (byteOffset === undefined && length === undefined) {\n\t buf = new Uint8Array(array);\n\t } else if (length === undefined) {\n\t buf = new Uint8Array(array, byteOffset);\n\t } else {\n\t buf = new Uint8Array(array, byteOffset, length);\n\t }\n\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t return buf\n\t}\n\n\tfunction fromObject (obj) {\n\t if (Buffer.isBuffer(obj)) {\n\t var len = checked(obj.length) | 0;\n\t var buf = createBuffer(len);\n\n\t if (buf.length === 0) {\n\t return buf\n\t }\n\n\t obj.copy(buf, 0, 0, len);\n\t return buf\n\t }\n\n\t if (obj.length !== undefined) {\n\t if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t return createBuffer(0)\n\t }\n\t return fromArrayLike(obj)\n\t }\n\n\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t return fromArrayLike(obj.data)\n\t }\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= K_MAX_LENGTH) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t if (+length != length) { // eslint-disable-line eqeqeq\n\t length = 0;\n\t }\n\t return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return b != null && b._isBuffer === true &&\n\t b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t};\n\n\tBuffer.compare = function compare (a, b) {\n\t if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError(\n\t 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t )\n\t }\n\n\t if (a === b) return 0\n\n\t var x = a.length;\n\t var y = b.length;\n\n\t for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n\t if (a[i] !== b[i]) {\n\t x = a[i];\n\t y = b[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t case 'base64':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!Array.isArray(list)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\n\t if (list.length === 0) {\n\t return Buffer.alloc(0)\n\t }\n\n\t var i;\n\t if (length === undefined) {\n\t length = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t length += list[i].length;\n\t }\n\t }\n\n\t var buffer = Buffer.allocUnsafe(length);\n\t var pos = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t var buf = list[i];\n\t if (isInstance(buf, Uint8Array)) {\n\t buf = Buffer.from(buf);\n\t }\n\t if (!Buffer.isBuffer(buf)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\t buf.copy(buffer, pos);\n\t pos += buf.length;\n\t }\n\t return buffer\n\t};\n\n\tfunction byteLength (string, encoding) {\n\t if (Buffer.isBuffer(string)) {\n\t return string.length\n\t }\n\t if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n\t return string.byteLength\n\t }\n\t if (typeof string !== 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t 'Received type ' + typeof string\n\t )\n\t }\n\n\t var len = string.length;\n\t var mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t if (!mustMatch && len === 0) return 0\n\n\t // Use a for loop to avoid recursion\n\t var loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) {\n\t return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t }\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength;\n\n\tfunction slowToString (encoding, start, end) {\n\t var loweredCase = false;\n\n\t // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t // property of a typed array.\n\n\t // This behaves neither like String nor Uint8Array in that we set start/end\n\t // to their upper/lower bounds if the value passed is out of range.\n\t // undefined is handled specially as per ECMA-262 6th Edition,\n\t // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t if (start === undefined || start < 0) {\n\t start = 0;\n\t }\n\t // Return early if start > this.length. Done here to prevent potential uint32\n\t // coercion fail below.\n\t if (start > this.length) {\n\t return ''\n\t }\n\n\t if (end === undefined || end > this.length) {\n\t end = this.length;\n\t }\n\n\t if (end <= 0) {\n\t return ''\n\t }\n\n\t // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\t end >>>= 0;\n\t start >>>= 0;\n\n\t if (end <= start) {\n\t return ''\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Slice(this, start, end)\n\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\n\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t// reliably in a browserify context because there could be multiple different\n\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t// instances that were created from another copy of the `buffer` package.\n\t// See: https://github.com/feross/buffer/issues/154\n\tBuffer.prototype._isBuffer = true;\n\n\tfunction swap (b, n, m) {\n\t var i = b[n];\n\t b[n] = b[m];\n\t b[m] = i;\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t var len = this.length;\n\t if (len % 2 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t }\n\t for (var i = 0; i < len; i += 2) {\n\t swap(this, i, i + 1);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t var len = this.length;\n\t if (len % 4 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t }\n\t for (var i = 0; i < len; i += 4) {\n\t swap(this, i, i + 3);\n\t swap(this, i + 1, i + 2);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap64 = function swap64 () {\n\t var len = this.length;\n\t if (len % 8 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t }\n\t for (var i = 0; i < len; i += 8) {\n\t swap(this, i, i + 7);\n\t swap(this, i + 1, i + 6);\n\t swap(this, i + 2, i + 5);\n\t swap(this, i + 3, i + 4);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.toString = function toString () {\n\t var length = this.length;\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t};\n\n\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t};\n\n\tBuffer.prototype.inspect = function inspect () {\n\t var str = '';\n\t var max = exports.INSPECT_MAX_BYTES;\n\t str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t if (this.length > max) str += ' ... ';\n\t return '<Buffer ' + str + '>'\n\t};\n\tif (customInspectSymbol) {\n\t Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t if (isInstance(target, Uint8Array)) {\n\t target = Buffer.from(target, target.offset, target.byteLength);\n\t }\n\t if (!Buffer.isBuffer(target)) {\n\t throw new TypeError(\n\t 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t 'Received type ' + (typeof target)\n\t )\n\t }\n\n\t if (start === undefined) {\n\t start = 0;\n\t }\n\t if (end === undefined) {\n\t end = target ? target.length : 0;\n\t }\n\t if (thisStart === undefined) {\n\t thisStart = 0;\n\t }\n\t if (thisEnd === undefined) {\n\t thisEnd = this.length;\n\t }\n\n\t if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t throw new RangeError('out of range index')\n\t }\n\n\t if (thisStart >= thisEnd && start >= end) {\n\t return 0\n\t }\n\t if (thisStart >= thisEnd) {\n\t return -1\n\t }\n\t if (start >= end) {\n\t return 1\n\t }\n\n\t start >>>= 0;\n\t end >>>= 0;\n\t thisStart >>>= 0;\n\t thisEnd >>>= 0;\n\n\t if (this === target) return 0\n\n\t var x = thisEnd - thisStart;\n\t var y = end - start;\n\t var len = Math.min(x, y);\n\n\t var thisCopy = this.slice(thisStart, thisEnd);\n\t var targetCopy = target.slice(start, end);\n\n\t for (var i = 0; i < len; ++i) {\n\t if (thisCopy[i] !== targetCopy[i]) {\n\t x = thisCopy[i];\n\t y = targetCopy[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t // Empty buffer means no match\n\t if (buffer.length === 0) return -1\n\n\t // Normalize byteOffset\n\t if (typeof byteOffset === 'string') {\n\t encoding = byteOffset;\n\t byteOffset = 0;\n\t } else if (byteOffset > 0x7fffffff) {\n\t byteOffset = 0x7fffffff;\n\t } else if (byteOffset < -0x80000000) {\n\t byteOffset = -0x80000000;\n\t }\n\t byteOffset = +byteOffset; // Coerce to Number.\n\t if (numberIsNaN(byteOffset)) {\n\t // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t byteOffset = dir ? 0 : (buffer.length - 1);\n\t }\n\n\t // Normalize byteOffset: negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t if (byteOffset >= buffer.length) {\n\t if (dir) return -1\n\t else byteOffset = buffer.length - 1;\n\t } else if (byteOffset < 0) {\n\t if (dir) byteOffset = 0;\n\t else return -1\n\t }\n\n\t // Normalize val\n\t if (typeof val === 'string') {\n\t val = Buffer.from(val, encoding);\n\t }\n\n\t // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t if (Buffer.isBuffer(val)) {\n\t // Special case: looking for empty string/buffer always fails\n\t if (val.length === 0) {\n\t return -1\n\t }\n\t return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t } else if (typeof val === 'number') {\n\t val = val & 0xFF; // Search for a byte value [0-255]\n\t if (typeof Uint8Array.prototype.indexOf === 'function') {\n\t if (dir) {\n\t return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t } else {\n\t return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t }\n\t }\n\t return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t }\n\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t var indexSize = 1;\n\t var arrLength = arr.length;\n\t var valLength = val.length;\n\n\t if (encoding !== undefined) {\n\t encoding = String(encoding).toLowerCase();\n\t if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t encoding === 'utf16le' || encoding === 'utf-16le') {\n\t if (arr.length < 2 || val.length < 2) {\n\t return -1\n\t }\n\t indexSize = 2;\n\t arrLength /= 2;\n\t valLength /= 2;\n\t byteOffset /= 2;\n\t }\n\t }\n\n\t function read (buf, i) {\n\t if (indexSize === 1) {\n\t return buf[i]\n\t } else {\n\t return buf.readUInt16BE(i * indexSize)\n\t }\n\t }\n\n\t var i;\n\t if (dir) {\n\t var foundIndex = -1;\n\t for (i = byteOffset; i < arrLength; i++) {\n\t if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t if (foundIndex === -1) foundIndex = i;\n\t if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t } else {\n\t if (foundIndex !== -1) i -= i - foundIndex;\n\t foundIndex = -1;\n\t }\n\t }\n\t } else {\n\t if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t for (i = byteOffset; i >= 0; i--) {\n\t var found = true;\n\t for (var j = 0; j < valLength; j++) {\n\t if (read(arr, i + j) !== read(val, j)) {\n\t found = false;\n\t break\n\t }\n\t }\n\t if (found) return i\n\t }\n\t }\n\n\t return -1\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t return this.indexOf(val, byteOffset, encoding) !== -1\n\t};\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t};\n\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t};\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0;\n\t var remaining = buf.length - offset;\n\t if (!length) {\n\t length = remaining;\n\t } else {\n\t length = Number(length);\n\t if (length > remaining) {\n\t length = remaining;\n\t }\n\t }\n\n\t var strLen = string.length;\n\n\t if (length > strLen / 2) {\n\t length = strLen / 2;\n\t }\n\t for (var i = 0; i < length; ++i) {\n\t var parsed = parseInt(string.substr(i * 2, 2), 16);\n\t if (numberIsNaN(parsed)) return i\n\t buf[offset + i] = parsed;\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction latin1Write (buf, string, offset, length) {\n\t return asciiWrite(buf, string, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8';\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset;\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset >>> 0;\n\t if (isFinite(length)) {\n\t length = length >>> 0;\n\t if (encoding === undefined) encoding = 'utf8';\n\t } else {\n\t encoding = length;\n\t length = undefined;\n\t }\n\t } else {\n\t throw new Error(\n\t 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t )\n\t }\n\n\t var remaining = this.length - offset;\n\t if (length === undefined || length > remaining) length = remaining;\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('Attempt to write outside buffer bounds')\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t var loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\n\t case 'ascii':\n\t return asciiWrite(this, string, offset, length)\n\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Write(this, string, offset, length)\n\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t};\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t};\n\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end);\n\t var res = [];\n\n\t var i = start;\n\t while (i < end) {\n\t var firstByte = buf[i];\n\t var codePoint = null;\n\t var bytesPerSequence = (firstByte > 0xEF) ? 4\n\t : (firstByte > 0xDF) ? 3\n\t : (firstByte > 0xBF) ? 2\n\t : 1;\n\n\t if (i + bytesPerSequence <= end) {\n\t var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte;\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1];\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t fourthByte = buf[i + 3];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t }\n\t }\n\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD;\n\t bytesPerSequence = 1;\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000;\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t codePoint = 0xDC00 | codePoint & 0x3FF;\n\t }\n\n\t res.push(codePoint);\n\t i += bytesPerSequence;\n\t }\n\n\t return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t var len = codePoints.length;\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t var res = '';\n\t var i = 0;\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t );\n\t }\n\t return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t var ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (var i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i] & 0x7F);\n\t }\n\t return ret\n\t}\n\n\tfunction latin1Slice (buf, start, end) {\n\t var ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (var i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i]);\n\t }\n\t return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t var len = buf.length;\n\n\t if (!start || start < 0) start = 0;\n\t if (!end || end < 0 || end > len) end = len;\n\n\t var out = '';\n\t for (var i = start; i < end; ++i) {\n\t out += hexSliceLookupTable[buf[i]];\n\t }\n\t return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t var bytes = buf.slice(start, end);\n\t var res = '';\n\t for (var i = 0; i < bytes.length; i += 2) {\n\t res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t }\n\t return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t var len = this.length;\n\t start = ~~start;\n\t end = end === undefined ? len : ~~end;\n\n\t if (start < 0) {\n\t start += len;\n\t if (start < 0) start = 0;\n\t } else if (start > len) {\n\t start = len;\n\t }\n\n\t if (end < 0) {\n\t end += len;\n\t if (end < 0) end = 0;\n\t } else if (end > len) {\n\t end = len;\n\t }\n\n\t if (end < start) end = start;\n\n\t var newBuf = this.subarray(start, end);\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t return newBuf\n\t};\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t var val = this[offset];\n\t var mul = 1;\n\t var i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length);\n\t }\n\n\t var val = this[offset + --byteLength];\n\t var mul = 1;\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t return this[offset]\n\t};\n\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return this[offset] | (this[offset + 1] << 8)\n\t};\n\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return (this[offset] << 8) | this[offset + 1]\n\t};\n\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t};\n\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t};\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t var val = this[offset];\n\t var mul = 1;\n\t var i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t var i = byteLength;\n\t var mul = 1;\n\t var val = this[offset + --i];\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t};\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t var val = this[offset] | (this[offset + 1] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t var val = this[offset + 1] | (this[offset] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t};\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t};\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754.read(this, offset, true, 23, 4)\n\t};\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754.read(this, offset, false, 23, 4)\n\t};\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754.read(this, offset, true, 52, 8)\n\t};\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754.read(this, offset, false, 52, 8)\n\t};\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t var mul = 1;\n\t var i = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t var i = byteLength - 1;\n\t var mul = 1;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset + 3] = (value >>> 24);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t var limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t var i = 0;\n\t var mul = 1;\n\t var sub = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t var limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t var i = byteLength - 1;\n\t var mul = 1;\n\t var sub = 0;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n\t if (value < 0) value = 0xff + value + 1;\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 3] = (value >>> 24);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t if (value < 0) value = 0xffffffff + value + 1;\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4);\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 23, 4);\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t};\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8);\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 52, 8);\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t};\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t if (!start) start = 0;\n\t if (!end && end !== 0) end = this.length;\n\t if (targetStart >= target.length) targetStart = target.length;\n\t if (!targetStart) targetStart = 0;\n\t if (end > 0 && end < start) end = start;\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length;\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start;\n\t }\n\n\t var len = end - start;\n\n\t if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n\t // Use built-in when available, missing from IE11\n\t this.copyWithin(targetStart, start, end);\n\t } else if (this === target && start < targetStart && targetStart < end) {\n\t // descending copy from end\n\t for (var i = len - 1; i >= 0; --i) {\n\t target[i + targetStart] = this[i + start];\n\t }\n\t } else {\n\t Uint8Array.prototype.set.call(\n\t target,\n\t this.subarray(start, end),\n\t targetStart\n\t );\n\t }\n\n\t return len\n\t};\n\n\t// Usage:\n\t// buffer.fill(number[, offset[, end]])\n\t// buffer.fill(buffer[, offset[, end]])\n\t// buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t // Handle string cases:\n\t if (typeof val === 'string') {\n\t if (typeof start === 'string') {\n\t encoding = start;\n\t start = 0;\n\t end = this.length;\n\t } else if (typeof end === 'string') {\n\t encoding = end;\n\t end = this.length;\n\t }\n\t if (encoding !== undefined && typeof encoding !== 'string') {\n\t throw new TypeError('encoding must be a string')\n\t }\n\t if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\t if (val.length === 1) {\n\t var code = val.charCodeAt(0);\n\t if ((encoding === 'utf8' && code < 128) ||\n\t encoding === 'latin1') {\n\t // Fast path: If `val` fits into a single byte, use that numeric value.\n\t val = code;\n\t }\n\t }\n\t } else if (typeof val === 'number') {\n\t val = val & 255;\n\t } else if (typeof val === 'boolean') {\n\t val = Number(val);\n\t }\n\n\t // Invalid ranges are not set to a default, so can range check early.\n\t if (start < 0 || this.length < start || this.length < end) {\n\t throw new RangeError('Out of range index')\n\t }\n\n\t if (end <= start) {\n\t return this\n\t }\n\n\t start = start >>> 0;\n\t end = end === undefined ? this.length : end >>> 0;\n\n\t if (!val) val = 0;\n\n\t var i;\n\t if (typeof val === 'number') {\n\t for (i = start; i < end; ++i) {\n\t this[i] = val;\n\t }\n\t } else {\n\t var bytes = Buffer.isBuffer(val)\n\t ? val\n\t : Buffer.from(val, encoding);\n\t var len = bytes.length;\n\t if (len === 0) {\n\t throw new TypeError('The value \"' + val +\n\t '\" is invalid for argument \"value\"')\n\t }\n\t for (i = 0; i < end - start; ++i) {\n\t this[i + start] = bytes[i % len];\n\t }\n\t }\n\n\t return this\n\t};\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\tfunction base64clean (str) {\n\t // Node takes equal signs as end of the Base64 encoding\n\t str = str.split('=')[0];\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = str.trim().replace(INVALID_BASE64_RE, '');\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '=';\n\t }\n\t return str\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity;\n\t var codePoint;\n\t var length = string.length;\n\t var leadSurrogate = null;\n\t var bytes = [];\n\n\t for (var i = 0; i < length; ++i) {\n\t codePoint = string.charCodeAt(i);\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t }\n\n\t // valid lead\n\t leadSurrogate = codePoint;\n\n\t continue\n\t }\n\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t leadSurrogate = codePoint;\n\t continue\n\t }\n\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t }\n\n\t leadSurrogate = null;\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint);\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t var byteArray = [];\n\t for (var i = 0; i < str.length; ++i) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF);\n\t }\n\t return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t var c, hi, lo;\n\t var byteArray = [];\n\t for (var i = 0; i < str.length; ++i) {\n\t if ((units -= 2) < 0) break\n\n\t c = str.charCodeAt(i);\n\t hi = c >> 8;\n\t lo = c % 256;\n\t byteArray.push(lo);\n\t byteArray.push(hi);\n\t }\n\n\t return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t for (var i = 0; i < length; ++i) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i];\n\t }\n\t return i\n\t}\n\n\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t// the `instanceof` check but they should be treated as of that type.\n\t// See: https://github.com/feross/buffer/issues/166\n\tfunction isInstance (obj, type) {\n\t return obj instanceof type ||\n\t (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t obj.constructor.name === type.name)\n\t}\n\tfunction numberIsNaN (obj) {\n\t // For IE11 support\n\t return obj !== obj // eslint-disable-line no-self-compare\n\t}\n\n\t// Create lookup table for `toString('hex')`\n\t// See: https://github.com/feross/buffer/issues/219\n\tvar hexSliceLookupTable = (function () {\n\t var alphabet = '0123456789abcdef';\n\t var table = new Array(256);\n\t for (var i = 0; i < 16; ++i) {\n\t var i16 = i * 16;\n\t for (var j = 0; j < 16; ++j) {\n\t table[i16 + j] = alphabet[i] + alphabet[j];\n\t }\n\t }\n\t return table\n\t})();\n\n\t},{\"base64-js\":29,\"ieee754\":32}],31:[function(require,module,exports){\n\n\t/******************************************************************************\n\t * Created 2008-08-19.\n\t *\n\t * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n\t *\n\t * Copyright (C) 2008\n\t * Wyatt Baldwin <self@wyattbaldwin.com>\n\t * All rights reserved\n\t *\n\t * Licensed under the MIT license.\n\t *\n\t * http://www.opensource.org/licenses/mit-license.php\n\t *\n\t * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\t * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\t * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\t * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\t * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\t * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\t * THE SOFTWARE.\n\t *****************************************************************************/\n\tvar dijkstra = {\n\t single_source_shortest_paths: function(graph, s, d) {\n\t // Predecessor map for each node that has been encountered.\n\t // node ID => predecessor node ID\n\t var predecessors = {};\n\n\t // Costs of shortest paths from s to all nodes encountered.\n\t // node ID => cost\n\t var costs = {};\n\t costs[s] = 0;\n\n\t // Costs of shortest paths from s to all nodes encountered; differs from\n\t // `costs` in that it provides easy access to the node that currently has\n\t // the known shortest path from s.\n\t // XXX: Do we actually need both `costs` and `open`?\n\t var open = dijkstra.PriorityQueue.make();\n\t open.push(s, 0);\n\n\t var closest,\n\t u, v,\n\t cost_of_s_to_u,\n\t adjacent_nodes,\n\t cost_of_e,\n\t cost_of_s_to_u_plus_cost_of_e,\n\t cost_of_s_to_v,\n\t first_visit;\n\t while (!open.empty()) {\n\t // In the nodes remaining in graph that have a known cost from s,\n\t // find the node, u, that currently has the shortest path from s.\n\t closest = open.pop();\n\t u = closest.value;\n\t cost_of_s_to_u = closest.cost;\n\n\t // Get nodes adjacent to u...\n\t adjacent_nodes = graph[u] || {};\n\n\t // ...and explore the edges that connect u to those nodes, updating\n\t // the cost of the shortest paths to any or all of those nodes as\n\t // necessary. v is the node across the current edge from u.\n\t for (v in adjacent_nodes) {\n\t if (adjacent_nodes.hasOwnProperty(v)) {\n\t // Get the cost of the edge running from u to v.\n\t cost_of_e = adjacent_nodes[v];\n\n\t // Cost of s to u plus the cost of u to v across e--this is *a*\n\t // cost from s to v that may or may not be less than the current\n\t // known cost to v.\n\t cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n\t // If we haven't visited v yet OR if the current known cost from s to\n\t // v is greater than the new cost we just found (cost of s to u plus\n\t // cost of u to v across e), update v's cost in the cost list and\n\t // update v's predecessor in the predecessor list (it's now u).\n\t cost_of_s_to_v = costs[v];\n\t first_visit = (typeof costs[v] === 'undefined');\n\t if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n\t costs[v] = cost_of_s_to_u_plus_cost_of_e;\n\t open.push(v, cost_of_s_to_u_plus_cost_of_e);\n\t predecessors[v] = u;\n\t }\n\t }\n\t }\n\t }\n\n\t if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n\t var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n\t throw new Error(msg);\n\t }\n\n\t return predecessors;\n\t },\n\n\t extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n\t var nodes = [];\n\t var u = d;\n\t var predecessor;\n\t while (u) {\n\t nodes.push(u);\n\t predecessor = predecessors[u];\n\t u = predecessors[u];\n\t }\n\t nodes.reverse();\n\t return nodes;\n\t },\n\n\t find_path: function(graph, s, d) {\n\t var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n\t return dijkstra.extract_shortest_path_from_predecessor_list(\n\t predecessors, d);\n\t },\n\n\t /**\n\t * A very naive priority queue implementation.\n\t */\n\t PriorityQueue: {\n\t make: function (opts) {\n\t var T = dijkstra.PriorityQueue,\n\t t = {},\n\t key;\n\t opts = opts || {};\n\t for (key in T) {\n\t if (T.hasOwnProperty(key)) {\n\t t[key] = T[key];\n\t }\n\t }\n\t t.queue = [];\n\t t.sorter = opts.sorter || T.default_sorter;\n\t return t;\n\t },\n\n\t default_sorter: function (a, b) {\n\t return a.cost - b.cost;\n\t },\n\n\t /**\n\t * Add a new item to the queue and ensure the highest priority element\n\t * is at the front of the queue.\n\t */\n\t push: function (value, cost) {\n\t var item = {value: value, cost: cost};\n\t this.queue.push(item);\n\t this.queue.sort(this.sorter);\n\t },\n\n\t /**\n\t * Return the highest priority element in the queue.\n\t */\n\t pop: function () {\n\t return this.queue.shift();\n\t },\n\n\t empty: function () {\n\t return this.queue.length === 0;\n\t }\n\t }\n\t};\n\n\n\t// node.js module exports\n\tif (typeof module !== 'undefined') {\n\t module.exports = dijkstra;\n\t}\n\n\t},{}],32:[function(require,module,exports){\n\texports.read = function (buffer, offset, isLE, mLen, nBytes) {\n\t var e, m;\n\t var eLen = (nBytes * 8) - mLen - 1;\n\t var eMax = (1 << eLen) - 1;\n\t var eBias = eMax >> 1;\n\t var nBits = -7;\n\t var i = isLE ? (nBytes - 1) : 0;\n\t var d = isLE ? -1 : 1;\n\t var s = buffer[offset + i];\n\n\t i += d;\n\n\t e = s & ((1 << (-nBits)) - 1);\n\t s >>= (-nBits);\n\t nBits += eLen;\n\t for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t m = e & ((1 << (-nBits)) - 1);\n\t e >>= (-nBits);\n\t nBits += mLen;\n\t for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t if (e === 0) {\n\t e = 1 - eBias;\n\t } else if (e === eMax) {\n\t return m ? NaN : ((s ? -1 : 1) * Infinity)\n\t } else {\n\t m = m + Math.pow(2, mLen);\n\t e = e - eBias;\n\t }\n\t return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n\t};\n\n\texports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n\t var e, m, c;\n\t var eLen = (nBytes * 8) - mLen - 1;\n\t var eMax = (1 << eLen) - 1;\n\t var eBias = eMax >> 1;\n\t var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n\t var i = isLE ? 0 : (nBytes - 1);\n\t var d = isLE ? 1 : -1;\n\t var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n\t value = Math.abs(value);\n\n\t if (isNaN(value) || value === Infinity) {\n\t m = isNaN(value) ? 1 : 0;\n\t e = eMax;\n\t } else {\n\t e = Math.floor(Math.log(value) / Math.LN2);\n\t if (value * (c = Math.pow(2, -e)) < 1) {\n\t e--;\n\t c *= 2;\n\t }\n\t if (e + eBias >= 1) {\n\t value += rt / c;\n\t } else {\n\t value += rt * Math.pow(2, 1 - eBias);\n\t }\n\t if (value * c >= 2) {\n\t e++;\n\t c /= 2;\n\t }\n\n\t if (e + eBias >= eMax) {\n\t m = 0;\n\t e = eMax;\n\t } else if (e + eBias >= 1) {\n\t m = ((value * c) - 1) * Math.pow(2, mLen);\n\t e = e + eBias;\n\t } else {\n\t m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n\t e = 0;\n\t }\n\t }\n\n\t for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n\t e = (e << mLen) | m;\n\t eLen += mLen;\n\t for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n\t buffer[offset + i - d] |= s * 128;\n\t};\n\n\t},{}],33:[function(require,module,exports){\n\tvar toString = {}.toString;\n\n\tmodule.exports = Array.isArray || function (arr) {\n\t return toString.call(arr) == '[object Array]';\n\t};\n\n\t},{}]},{},[24])(24)\n\t});\n\n\n\t});\n\n\tvar index = {\n\t name: 'qrcode',\n\t props: {\n\t /**\n\t * The value of the QR code.\n\t */\n\t value: null,\n\n\t /**\n\t * The options for the QR code generator.\n\t * {@link https://github.com/soldair/node-qrcode#qr-code-options}\n\t */\n\t options: Object,\n\n\t /**\n\t * The tag name of the component's root element.\n\t */\n\t tag: {\n\t type: String,\n\t default: 'canvas'\n\t }\n\t },\n\t render: function render(createElement) {\n\t return createElement(this.tag, this.$slots.default);\n\t },\n\t watch: {\n\t $props: {\n\t deep: true,\n\t immediate: true,\n\n\t /**\n\t * Update the QR code when props changed.\n\t */\n\t handler: function handler() {\n\t if (this.$el) {\n\t this.generate();\n\t }\n\t }\n\t }\n\t },\n\t methods: {\n\t /**\n\t * Generate QR code.\n\t */\n\t generate: function generate() {\n\t var _this = this;\n\n\t var options = this.options,\n\t tag = this.tag;\n\t var value = String(this.value);\n\n\t if (tag === 'canvas') {\n\t qrcode.toCanvas(this.$el, value, options, function (error) {\n\t /* istanbul ignore if */\n\t if (error) {\n\t throw error;\n\t }\n\t });\n\t } else if (tag === 'img') {\n\t qrcode.toDataURL(value, options, function (error, url) {\n\t /* istanbul ignore if */\n\t if (error) {\n\t throw error;\n\t }\n\n\t _this.$el.src = url;\n\t });\n\t } else {\n\t qrcode.toString(value, options, function (error, string) {\n\t /* istanbul ignore if */\n\t if (error) {\n\t throw error;\n\t }\n\n\t _this.$el.innerHTML = string;\n\t });\n\t }\n\t }\n\t },\n\t mounted: function mounted() {\n\t this.generate();\n\t }\n\t};\n\n\treturn index;\n\n})));\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../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, `.fade-enter-active[data-v-42733c12], .fade-leave-active[data-v-42733c12] {\n transition: opacity 0.3s ease;\n}\n.fade-enter[data-v-42733c12], .fade-leave-to[data-v-42733c12] {\n opacity: 0;\n}\n.linked-icons[data-v-42733c12] {\n display: flex;\n}\n.linked-icons img[data-v-42733c12] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: 0.7;\n}\n.linked-icons img[data-v-42733c12]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-42733c12] {\n display: none;\n}\n.popovermenu.open[data-v-42733c12] {\n display: block;\n}\nli.collection-list-item[data-v-42733c12] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-42733c12] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-42733c12], li.collection-list-item .collection-item-name[data-v-42733c12] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-42733c12] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-42733c12] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-42733c12] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12] {\n display: flex;\n margin-left: 44px;\n border-radius: 3px;\n cursor: pointer;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-42733c12] {\n flex-grow: 1;\n padding: 3px;\n max-width: calc(100% - 30px);\n display: flex;\n}\nli.collection-list-item .resource-list-details span[data-v-42733c12] {\n display: inline-block;\n vertical-align: top;\n margin-right: 10px;\n}\nli.collection-list-item .resource-list-details span.resource-name[data-v-42733c12] {\n text-overflow: ellipsis;\n overflow: hidden;\n position: relative;\n vertical-align: top;\n white-space: nowrap;\n flex-grow: 1;\n padding: 4px;\n}\nli.collection-list-item .resource-list-details img[data-v-42733c12] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12] {\n opacity: 0.7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:hover, li.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-42733c12] {\n animation: shake-42733c12 0.6s 1 linear;\n}\n@keyframes shake-42733c12 {\n0% {\n transform: translate(15px);\n}\n20% {\n transform: translate(-15px);\n}\n40% {\n transform: translate(7px);\n}\n60% {\n transform: translate(-7px);\n}\n80% {\n transform: translate(3px);\n}\n100% {\n transform: translate(0px);\n}\n}.collection-list *[data-v-8ebb2593] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-8ebb2593] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-8ebb2593] {\n margin-top: auto;\n}\n#collection-select-container[data-v-8ebb2593] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-8ebb2593] {\n display: block;\n padding: 16px;\n opacity: 0.7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-8ebb2593]:hover {\n opacity: 1;\n}\np.hint[data-v-8ebb2593] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-8ebb2593] {\n width: 32px;\n height: 32px;\n margin: 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n margin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects[data-v-8ebb2593] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-8ebb2593] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-8ebb2593] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-8ebb2593] {\n padding: 4px;\n}\n.fade-enter-active[data-v-8ebb2593], .fade-leave-active[data-v-8ebb2593] {\n transition: opacity 0.5s;\n}\n.fade-enter[data-v-8ebb2593], .fade-leave-to[data-v-8ebb2593] {\n opacity: 0;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/nextcloud-vue-collections/dist/assets/index-CJAYjuyf.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,6BAA6B;AAC/B;AACA;EACE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,aAAa;EACb,YAAY;EACZ,cAAc;EACd,4BAA4B;EAC5B,2BAA2B;EAC3B,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;AAChB;AACA;EACE,eAAe;EACf,YAAY;EACZ,eAAe;EACf,2BAA2B;AAC7B;AACA;EACE,eAAe;AACjB;AACA;EACE,eAAe;EACf,YAAY;EACZ,aAAa;AACf;AACA;EACE,iBAAiB;AACnB;AACA;EACE,eAAe;EACf,6CAA6C;AAC/C;AACA;EACE,YAAY;AACd;AACA;EACE,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,aAAa;EACb,iBAAiB;EACjB,kBAAkB;EAClB,eAAe;AACjB;AACA;EACE,8CAA8C;AAChD;AACA;EACE,YAAY;EACZ,YAAY;EACZ,4BAA4B;EAC5B,aAAa;AACf;AACA;EACE,qBAAqB;EACrB,mBAAmB;EACnB,kBAAkB;AACpB;AACA;EACE,uBAAuB;EACvB,gBAAgB;EAChB,kBAAkB;EAClB,mBAAmB;EACnB,mBAAmB;EACnB,YAAY;EACZ,YAAY;AACd;AACA;EACE,WAAW;EACX,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,uCAAuC;AACzC;AACA;AACA;IACI,0BAA0B;AAC9B;AACA;IACI,2BAA2B;AAC/B;AACA;IACI,yBAAyB;AAC7B;AACA;IACI,0BAA0B;AAC9B;AACA;IACI,yBAAyB;AAC7B;AACA;IACI,yBAAyB;AAC7B;AACA,CAAC;EACC,sBAAsB;AACxB;AACA;EACE,aAAa;EACb,kBAAkB;EAClB,SAAS;AACX;AACA;EACE,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,sBAAsB;AACxB;AACA;EACE,cAAc;EACd,aAAa;EACb,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,UAAU;AACZ;AACA;EACE,UAAU;EACV,iBAAiB;EACjB,gBAAgB;EAChB,oCAAoC;EACpC,mBAAmB;AACrB;AACA;EACE,WAAW;EACX,YAAY;EACZ,SAAS;EACT,YAAY;EACZ,8CAA8C;EAC9C,gBAAgB;AAClB;;AAEA,qCAAqC;AACrC;EACE,cAAc;EACd,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,2DAA2D;AAC7D;AACA;EACE,YAAY;AACd;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,UAAU;AACZ\",\"sourcesContent\":[\".fade-enter-active[data-v-42733c12], .fade-leave-active[data-v-42733c12] {\\n transition: opacity 0.3s ease;\\n}\\n.fade-enter[data-v-42733c12], .fade-leave-to[data-v-42733c12] {\\n opacity: 0;\\n}\\n.linked-icons[data-v-42733c12] {\\n display: flex;\\n}\\n.linked-icons img[data-v-42733c12] {\\n padding: 12px;\\n height: 44px;\\n display: block;\\n background-repeat: no-repeat;\\n background-position: center;\\n opacity: 0.7;\\n}\\n.linked-icons img[data-v-42733c12]:hover {\\n opacity: 1;\\n}\\n.popovermenu[data-v-42733c12] {\\n display: none;\\n}\\n.popovermenu.open[data-v-42733c12] {\\n display: block;\\n}\\nli.collection-list-item[data-v-42733c12] {\\n flex-wrap: wrap;\\n height: auto;\\n cursor: pointer;\\n margin-bottom: 0 !important;\\n}\\nli.collection-list-item .collection-avatar[data-v-42733c12] {\\n margin-top: 6px;\\n}\\nli.collection-list-item form[data-v-42733c12], li.collection-list-item .collection-item-name[data-v-42733c12] {\\n flex-basis: 10%;\\n flex-grow: 1;\\n display: flex;\\n}\\nli.collection-list-item .collection-item-name[data-v-42733c12] {\\n padding: 12px 9px;\\n}\\nli.collection-list-item input[data-v-42733c12] {\\n margin-top: 4px;\\n border-color: var(--color-border-maxcontrast);\\n}\\nli.collection-list-item input[type=text][data-v-42733c12] {\\n flex-grow: 1;\\n}\\nli.collection-list-item .error[data-v-42733c12] {\\n flex-basis: 100%;\\n width: 100%;\\n}\\nli.collection-list-item .resource-list-details[data-v-42733c12] {\\n flex-basis: 100%;\\n width: 100%;\\n}\\nli.collection-list-item .resource-list-details li[data-v-42733c12] {\\n display: flex;\\n margin-left: 44px;\\n border-radius: 3px;\\n cursor: pointer;\\n}\\nli.collection-list-item .resource-list-details li[data-v-42733c12]:hover {\\n background-color: var(--color-background-dark);\\n}\\nli.collection-list-item .resource-list-details li a[data-v-42733c12] {\\n flex-grow: 1;\\n padding: 3px;\\n max-width: calc(100% - 30px);\\n display: flex;\\n}\\nli.collection-list-item .resource-list-details span[data-v-42733c12] {\\n display: inline-block;\\n vertical-align: top;\\n margin-right: 10px;\\n}\\nli.collection-list-item .resource-list-details span.resource-name[data-v-42733c12] {\\n text-overflow: ellipsis;\\n overflow: hidden;\\n position: relative;\\n vertical-align: top;\\n white-space: nowrap;\\n flex-grow: 1;\\n padding: 4px;\\n}\\nli.collection-list-item .resource-list-details img[data-v-42733c12] {\\n width: 24px;\\n height: 24px;\\n}\\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12] {\\n opacity: 0.7;\\n}\\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:hover, li.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:focus {\\n opacity: 1;\\n}\\n.shouldshake[data-v-42733c12] {\\n animation: shake-42733c12 0.6s 1 linear;\\n}\\n@keyframes shake-42733c12 {\\n0% {\\n transform: translate(15px);\\n}\\n20% {\\n transform: translate(-15px);\\n}\\n40% {\\n transform: translate(7px);\\n}\\n60% {\\n transform: translate(-7px);\\n}\\n80% {\\n transform: translate(3px);\\n}\\n100% {\\n transform: translate(0px);\\n}\\n}.collection-list *[data-v-8ebb2593] {\\n box-sizing: border-box;\\n}\\n.collection-list > li[data-v-8ebb2593] {\\n display: flex;\\n align-items: start;\\n gap: 12px;\\n}\\n.collection-list > li > .avatar[data-v-8ebb2593] {\\n margin-top: auto;\\n}\\n#collection-select-container[data-v-8ebb2593] {\\n display: flex;\\n flex-direction: column;\\n}\\n.v-select span.avatar[data-v-8ebb2593] {\\n display: block;\\n padding: 16px;\\n opacity: 0.7;\\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n.v-select span.avatar[data-v-8ebb2593]:hover {\\n opacity: 1;\\n}\\np.hint[data-v-8ebb2593] {\\n z-index: 1;\\n margin-top: -16px;\\n padding: 8px 8px;\\n color: var(--color-text-maxcontrast);\\n line-height: normal;\\n}\\ndiv.avatar[data-v-8ebb2593] {\\n width: 32px;\\n height: 32px;\\n margin: 0;\\n padding: 8px;\\n background-color: var(--color-background-dark);\\n margin-top: 30px;\\n}\\n\\n/** TODO provide white icon in core */\\n.icon-projects[data-v-8ebb2593] {\\n display: block;\\n padding: 8px;\\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n.option__wrapper[data-v-8ebb2593] {\\n display: flex;\\n}\\n.option__wrapper .avatar[data-v-8ebb2593] {\\n display: block;\\n background-color: var(--color-background-darker) !important;\\n}\\n.option__wrapper .option__title[data-v-8ebb2593] {\\n padding: 4px;\\n}\\n.fade-enter-active[data-v-8ebb2593], .fade-leave-active[data-v-8ebb2593] {\\n transition: opacity 0.5s;\\n}\\n.fade-enter[data-v-8ebb2593], .fade-leave-to[data-v-8ebb2593] {\\n opacity: 0;\\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, `.share-expiry-time[data-v-66d8c844]{display:inline-flex;align-items:center;justify-content:center}.share-expiry-time .hint-icon[data-v-66d8c844]{padding:0;margin:0;width:24px;height:24px}.hint-heading[data-v-66d8c844]{text-align:center;font-size:1rem;margin-top:8px;padding-bottom:8px;margin-bottom:0;border-bottom:1px solid var(--color-border)}.hint-body[data-v-66d8c844]{padding:var(--border-radius-element);max-width:300px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/ShareExpiryTime.vue\"],\"names\":[],\"mappings\":\"AACA,oCACI,mBAAA,CACA,kBAAA,CACA,sBAAA,CAEA,+CACI,SAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CAIR,+BACI,iBAAA,CACA,cAAA,CACA,cAAA,CACA,kBAAA,CACA,eAAA,CACA,2CAAA,CAGJ,4BACI,oCAAA,CACA,eAAA\",\"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-2dbd45b5]{display:flex;align-items:center;height:44px}.sharing-entry__summary[data-v-2dbd45b5]{padding:8px;padding-inline-start:10px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;flex:1 0;min-width:0}.sharing-entry__summary__desc[data-v-2dbd45b5]{display:inline-block;padding-bottom:0;line-height:1.2em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sharing-entry__summary__desc p[data-v-2dbd45b5],.sharing-entry__summary__desc small[data-v-2dbd45b5]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-2dbd45b5]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,yCACC,WAAA,CACA,yBAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,sBAAA,CACA,QAAA,CACA,WAAA,CAEA,+CACC,oBAAA,CACA,gBAAA,CACA,iBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,sGAEC,mCAAA,CAGD,sDACC,mCAAA\",\"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-fe8ed59e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-fe8ed59e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;padding-inline-start:10px;line-height:1.2em}.sharing-entry__desc p[data-v-fe8ed59e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-fe8ed59e]{margin-inline-start: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,yBAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,wBAAA\",\"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-57874406]{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-57874406]{opacity:1;color:var(--color-success)}`, \"\",{\"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,CACA,0BAAA\",\"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-43291a73]{display:flex;align-items:center;min-height:44px}.sharing-entry__summary[data-v-43291a73]{padding:8px;padding-inline-start:10px;display:flex;justify-content:space-between;flex:1 0;min-width:0}.sharing-entry__desc[data-v-43291a73]{display:flex;flex-direction:column;line-height:1.2em}.sharing-entry__desc p[data-v-43291a73]{color:var(--color-text-maxcontrast)}.sharing-entry__desc__title[data-v-43291a73]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__actions[data-v-43291a73]{display:flex;align-items:center;margin-inline-start:auto}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-43291a73]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-43291a73] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-43291a73]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-43291a73]{width:44px;height:44px;margin:0;padding:14px;margin-inline-start:auto}.sharing-entry .action-item~.action-item[data-v-43291a73],.sharing-entry .action-item~.sharing-entry__loading[data-v-43291a73]{margin-inline-start:0}.sharing-entry .icon-checkmark-color[data-v-43291a73]{opacity:1;color:var(--color-success)}.qr-code-dialog[data-v-43291a73]{display:flex;width:100%;justify-content:center}.qr-code-dialog__img[data-v-43291a73]{width:100%;height:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAEA,yCACC,WAAA,CACA,yBAAA,CACA,YAAA,CACA,6BAAA,CACA,QAAA,CACA,WAAA,CAGA,sCACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,wCACC,mCAAA,CAGD,6CACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIF,yCACC,YAAA,CACA,kBAAA,CACA,wBAAA,CAID,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,wBAAA,CAOA,+HAEC,qBAAA,CAIF,sDACC,SAAA,CACA,0BAAA,CAKF,iCACC,YAAA,CACA,UAAA,CACA,sBAAA,CAEA,sCACC,UAAA,CACA,WAAA\",\"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, `.share-select[data-v-2aa230f1]{display:block}.share-select[data-v-2aa230f1] .action-item__menutoggle{color:var(--color-primary-element) !important;font-size:12.5px !important;height:auto !important;min-height:auto !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__text{font-weight:normal !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__icon{height:24px !important;min-height:24px !important;width:24px !important;min-width:24px !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__wrapper{flex-direction:row-reverse !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,aAAA,CAIA,wDACC,6CAAA,CACA,2BAAA,CACA,sBAAA,CACA,0BAAA,CAEA,0EACC,6BAAA,CAGD,0EACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAGD,6EAEC,qCAAA\",\"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-44339fa4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-44339fa4]{padding:8px;padding-inline-start:10px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-44339fa4]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-44339fa4]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-44339fa4]{margin-inline-start: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,yBAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,mCAAA\",\"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 .avatardiv__initials-wrapper{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,wEACC,YAAA\",\"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, `.sharingTabDetailsView[data-v-b61b0164]{display:flex;flex-direction:column;width:100%;margin:0 auto;position:relative;height:100%;overflow:hidden}.sharingTabDetailsView__header[data-v-b61b0164]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-b61b0164]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-b61b0164]{font-size:15px;padding-inline-start:.3em}.sharingTabDetailsView__wrapper[data-v-b61b0164]{position:relative;overflow:scroll;flex-shrink:1;padding:4px;padding-inline-end:12px}.sharingTabDetailsView__quick-permissions[data-v-b61b0164]{display:flex;justify-content:center;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-b61b0164]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-b61b0164]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-b61b0164]:nth-child(1){align-items:center;justify-content:center;padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-b61b0164] label span{display:flex;flex-direction:column}.sharingTabDetailsView__quick-permissions div span[data-v-b61b0164] span.checkbox-content__text.checkbox-radio-switch__text{flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-b61b0164] span.checkbox-content__text.checkbox-radio-switch__text .subline{display:block;flex-basis:100%}.sharingTabDetailsView__advanced-control[data-v-b61b0164]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-b61b0164]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-b61b0164]{width:100%;margin-bottom:.5em;text-align:start;padding-inline-start:0}.sharingTabDetailsView__advanced section textarea[data-v-b61b0164],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-b61b0164]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-b61b0164]{height:80px;margin:0}.sharingTabDetailsView__advanced section span[data-v-b61b0164] label{padding-inline-start:0 !important;background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-b61b0164]{padding-inline-start:1.5em}.sharingTabDetailsView__label[data-v-b61b0164]{padding-block-end:6px}.sharingTabDetailsView__delete>button[data-v-b61b0164]:first-child{color:#df0707}.sharingTabDetailsView__footer[data-v-b61b0164]{width:100%;display:flex;position:sticky;bottom:0;flex-direction:column;justify-content:space-between;align-items:flex-start;background:linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background))}.sharingTabDetailsView__footer .button-group[data-v-b61b0164]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-b61b0164]{margin-inline-start:16px}.sharingTabDetailsView__footer .button-group button[data-v-b61b0164]:first-child{margin-inline-start:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingDetailsTab.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,aAAA,CACA,iBAAA,CACA,WAAA,CACA,eAAA,CAEA,gDACC,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,WAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,wDACC,cAAA,CACA,yBAAA,CAMH,iDACC,iBAAA,CACA,eAAA,CACA,aAAA,CACA,WAAA,CACA,uBAAA,CAGD,2DACC,YAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,YAAA,CAGD,+EACC,YAAA,CACA,qBAAA,CAID,4HACC,cAAA,CAEA,qIACC,aAAA,CACA,eAAA,CAQL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,gBAAA,CACA,sBAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CACA,QAAA,CAYD,qEACC,iCAAA,CACA,mCAAA,CACA,sBAAA,CAGD,2FACC,0BAAA,CAKH,+CACC,qBAAA,CAIA,mEACC,aAAA,CAIF,gDACC,UAAA,CACA,YAAA,CACA,eAAA,CACA,QAAA,CACA,qBAAA,CACA,6BAAA,CACA,sBAAA,CACA,2FAAA,CAEA,8DACC,YAAA,CACA,6BAAA,CACA,UAAA,CACA,eAAA,CAEA,qEACC,wBAAA,CAEA,iFACC,qBAAA\",\"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-a6cc72e6]{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\",\"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-630c7354]{margin:1rem auto}.sharingTab[data-v-630c7354]{position:relative;height:100%}.sharingTab__content[data-v-630c7354]{padding:0 6px}.sharingTab__content section[data-v-630c7354]{padding-bottom:16px}.sharingTab__content section .section-header[data-v-630c7354]{margin-top:2px;margin-bottom:2px;display:flex;align-items:center;padding-bottom:4px}.sharingTab__content section .section-header h4[data-v-630c7354]{margin:0;font-size:16px}.sharingTab__content section .section-header .visually-hidden[data-v-630c7354]{display:none}.sharingTab__content section .section-header .hint-icon[data-v-630c7354]{color:var(--color-primary-element)}.sharingTab__content>section[data-v-630c7354]:not(:last-child){border-bottom:2px solid var(--color-border)}.sharingTab__additionalContent[data-v-630c7354]{margin:44px 0}.hint-body[data-v-630c7354]{max-width:300px;padding:var(--border-radius-element)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,gBAAA,CAGD,6BACC,iBAAA,CACA,WAAA,CAEA,sCACC,aAAA,CAEA,8CACC,mBAAA,CAEA,8DACC,cAAA,CACA,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,iEACC,QAAA,CACA,cAAA,CAGD,+EACC,YAAA,CAGD,yEACC,kCAAA,CAOH,+DACC,2CAAA,CAKF,gDACC,aAAA,CAIF,4BACC,eAAA,CACA,oCAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**!\n * url-search-params-polyfill\n *\n * @author Jerry Bendy (https://github.com/jerrybendy)\n * @licence MIT\n */\n(function(self) {\n 'use strict';\n\n var nativeURLSearchParams = (function() {\n // #41 Fix issue in RN\n try {\n if (self.URLSearchParams && (new self.URLSearchParams('foo=bar')).get('foo') === 'bar') {\n return self.URLSearchParams;\n }\n } catch (e) {}\n return null;\n })(),\n isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === 'a=1',\n // There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.\n decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams('s=%2B').get('s') === '+'),\n isSupportSize = nativeURLSearchParams && 'size' in nativeURLSearchParams.prototype,\n __URLSearchParams__ = \"__URLSearchParams__\",\n // Fix bug in Edge which cannot encode ' &' correctly\n encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {\n var ampersandTest = new nativeURLSearchParams();\n ampersandTest.append('s', ' &');\n return ampersandTest.toString() === 's=+%26';\n })() : true,\n prototype = URLSearchParamsPolyfill.prototype,\n iterable = !!(self.Symbol && self.Symbol.iterator);\n\n if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly && isSupportSize) {\n return;\n }\n\n\n /**\n * Make a URLSearchParams instance\n *\n * @param {object|string|URLSearchParams} search\n * @constructor\n */\n function URLSearchParamsPolyfill(search) {\n search = search || \"\";\n\n // support construct object with another URLSearchParams instance\n if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {\n search = search.toString();\n }\n this [__URLSearchParams__] = parseToDict(search);\n }\n\n\n /**\n * Appends a specified key/value pair as a new search parameter.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.append = function(name, value) {\n appendTo(this [__URLSearchParams__], name, value);\n };\n\n /**\n * Deletes the given search parameter, and its associated value,\n * from the list of all search parameters.\n *\n * @param {string} name\n */\n prototype['delete'] = function(name) {\n delete this [__URLSearchParams__] [name];\n };\n\n /**\n * Returns the first value associated to the given search parameter.\n *\n * @param {string} name\n * @returns {string|null}\n */\n prototype.get = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict[name][0] : null;\n };\n\n /**\n * Returns all the values association with a given search parameter.\n *\n * @param {string} name\n * @returns {Array}\n */\n prototype.getAll = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict [name].slice(0) : [];\n };\n\n /**\n * Returns a Boolean indicating if such a search parameter exists.\n *\n * @param {string} name\n * @returns {boolean}\n */\n prototype.has = function(name) {\n return hasOwnProperty(this [__URLSearchParams__], name);\n };\n\n /**\n * Sets the value associated to a given search parameter to\n * the given value. If there were several values, delete the\n * others.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.set = function set(name, value) {\n this [__URLSearchParams__][name] = ['' + value];\n };\n\n /**\n * Returns a string containg a query string suitable for use in a URL.\n *\n * @returns {string}\n */\n prototype.toString = function() {\n var dict = this[__URLSearchParams__], query = [], i, key, name, value;\n for (key in dict) {\n name = encode(key);\n for (i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]));\n }\n }\n return query.join('&');\n };\n\n // There is a bug in Safari 10.1 and `Proxy`ing it is not enough.\n var useProxy = self.Proxy && nativeURLSearchParams && (!decodesPlusesCorrectly || !encodesAmpersandsCorrectly || !isSupportObjectConstructor || !isSupportSize);\n var propValue;\n if (useProxy) {\n // Safari 10.0 doesn't support Proxy, so it won't extend URLSearchParams on safari 10.0\n propValue = new Proxy(nativeURLSearchParams, {\n construct: function (target, args) {\n return new target((new URLSearchParamsPolyfill(args[0]).toString()));\n }\n })\n // Chrome <=60 .toString() on a function proxy got error \"Function.prototype.toString is not generic\"\n propValue.toString = Function.prototype.toString.bind(URLSearchParamsPolyfill);\n } else {\n propValue = URLSearchParamsPolyfill;\n }\n\n /*\n * Apply polyfill to global object and append other prototype into it\n */\n Object.defineProperty(self, 'URLSearchParams', {\n value: propValue\n });\n\n var USPProto = self.URLSearchParams.prototype;\n\n USPProto.polyfill = true;\n\n // Fix #54, `toString.call(new URLSearchParams)` will return correct value when Proxy not used\n if (!useProxy && self.Symbol) {\n USPProto[self.Symbol.toStringTag] = 'URLSearchParams';\n }\n\n /**\n *\n * @param {function} callback\n * @param {object} thisArg\n */\n if (!('forEach' in USPProto)) {\n USPProto.forEach = function(callback, thisArg) {\n var dict = parseToDict(this.toString());\n Object.getOwnPropertyNames(dict).forEach(function(name) {\n dict[name].forEach(function(value) {\n callback.call(thisArg, value, name, this);\n }, this);\n }, this);\n };\n }\n\n /**\n * Sort all name-value pairs\n */\n if (!('sort' in USPProto)) {\n USPProto.sort = function() {\n var dict = parseToDict(this.toString()), keys = [], k, i, j;\n for (k in dict) {\n keys.push(k);\n }\n keys.sort();\n\n for (i = 0; i < keys.length; i++) {\n this['delete'](keys[i]);\n }\n for (i = 0; i < keys.length; i++) {\n var key = keys[i], values = dict[key];\n for (j = 0; j < values.length; j++) {\n this.append(key, values[j]);\n }\n }\n };\n }\n\n /**\n * Returns an iterator allowing to go through all keys of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('keys' in USPProto)) {\n USPProto.keys = function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push(name);\n });\n return makeIterator(items);\n };\n }\n\n /**\n * Returns an iterator allowing to go through all values of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('values' in USPProto)) {\n USPProto.values = function() {\n var items = [];\n this.forEach(function(item) {\n items.push(item);\n });\n return makeIterator(items);\n };\n }\n\n /**\n * Returns an iterator allowing to go through all key/value\n * pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('entries' in USPProto)) {\n USPProto.entries = function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push([name, item]);\n });\n return makeIterator(items);\n };\n }\n\n if (iterable) {\n USPProto[self.Symbol.iterator] = USPProto[self.Symbol.iterator] || USPProto.entries;\n }\n\n if (!('size' in USPProto)) {\n Object.defineProperty(USPProto, 'size', {\n get: function () {\n var dict = parseToDict(this.toString())\n if (USPProto === this) {\n throw new TypeError('Illegal invocation at URLSearchParams.invokeGetter')\n }\n return Object.keys(dict).reduce(function (prev, cur) {\n return prev + dict[cur].length;\n }, 0);\n }\n });\n }\n\n function encode(str) {\n var replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function(match) {\n return replace[match];\n });\n }\n\n function decode(str) {\n return str\n .replace(/[ +]/g, '%20')\n .replace(/(%[a-f0-9]{2})+/ig, function(match) {\n return decodeURIComponent(match);\n });\n }\n\n function makeIterator(arr) {\n var iterator = {\n next: function() {\n var value = arr.shift();\n return {done: value === undefined, value: value};\n }\n };\n\n if (iterable) {\n iterator[self.Symbol.iterator] = function() {\n return iterator;\n };\n }\n\n return iterator;\n }\n\n function parseToDict(search) {\n var dict = {};\n\n if (typeof search === \"object\") {\n // if `search` is an array, treat it as a sequence\n if (isArray(search)) {\n for (var i = 0; i < search.length; i++) {\n var item = search[i];\n if (isArray(item) && item.length === 2) {\n appendTo(dict, item[0], item[1]);\n } else {\n throw new TypeError(\"Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements\");\n }\n }\n\n } else {\n for (var key in search) {\n if (search.hasOwnProperty(key)) {\n appendTo(dict, key, search[key]);\n }\n }\n }\n\n } else {\n // remove first '?'\n if (search.indexOf(\"?\") === 0) {\n search = search.slice(1);\n }\n\n var pairs = search.split(\"&\");\n for (var j = 0; j < pairs.length; j++) {\n var value = pairs [j],\n index = value.indexOf('=');\n\n if (-1 < index) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n\n } else {\n if (value) {\n appendTo(dict, decode(value), '');\n }\n }\n }\n }\n\n return dict;\n }\n\n function appendTo(dict, name, value) {\n var val = typeof value === 'string' ? value : (\n value !== null && value !== undefined && typeof value.toString === 'function' ? value.toString() : JSON.stringify(value)\n );\n\n // #47 Prevent using `hasOwnProperty` as a property name\n if (hasOwnProperty(dict, name)) {\n dict[name].push(val);\n } else {\n dict[name] = [val];\n }\n }\n\n function isArray(val) {\n return !!val && '[object Array]' === Object.prototype.toString.call(val);\n }\n\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n})(typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : this));\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharingTab\",class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showSharingDetailsView),expression:\"!showSharingDetailsView\"}],staticClass:\"sharingTab__content\"},[(_vm.isSharedWithMe)?_c('ul',[_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))],1):_vm._e(),_vm._v(\" \"),_c('section',[_c('div',{staticClass:\"section-header\"},[_c('h4',[_vm._v(_vm._s(_vm.t('files_sharing', 'Internal shares')))]),_vm._v(\" \"),_c('NcPopover',{attrs:{\"popup-role\":\"dialog\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcButton',{staticClass:\"hint-icon\",attrs:{\"type\":\"tertiary-no-background\",\"aria-label\":_vm.t('files_sharing', 'Internal shares explanation')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InfoIcon',{attrs:{\"size\":20}})]},proxy:true}])})]},proxy:true}])},[_vm._v(\" \"),_c('p',{staticClass:\"hint-body\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.internalSharesHelpText)+\"\\n\\t\\t\\t\\t\\t\")])])],1),_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,\"placeholder\":_vm.t('files_sharing', 'Share with accounts and teams')},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_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}})],1),_vm._v(\" \"),_c('section',[_c('div',{staticClass:\"section-header\"},[_c('h4',[_vm._v(_vm._s(_vm.t('files_sharing', 'External shares')))]),_vm._v(\" \"),_c('NcPopover',{attrs:{\"popup-role\":\"dialog\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcButton',{staticClass:\"hint-icon\",attrs:{\"type\":\"tertiary-no-background\",\"aria-label\":_vm.t('files_sharing', 'External shares explanation')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InfoIcon',{attrs:{\"size\":20}})]},proxy:true}])})]},proxy:true}])},[_vm._v(\" \"),_c('p',{staticClass:\"hint-body\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.externalSharesHelpText)+\"\\n\\t\\t\\t\\t\\t\")])])],1),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"is-external\":true,\"placeholder\":_vm.t('files_sharing', 'Email, federated cloud id'),\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e()],1),_vm._v(\" \"),(_vm.sections.length > 0 && !_vm.showSharingDetailsView)?_c('section',[_c('div',{staticClass:\"section-header\"},[_c('h4',[_vm._v(_vm._s(_vm.t('files_sharing', 'Additional shares')))]),_vm._v(\" \"),_c('NcPopover',{attrs:{\"popup-role\":\"dialog\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcButton',{staticClass:\"hint-icon\",attrs:{\"type\":\"tertiary-no-background\",\"aria-label\":_vm.t('files_sharing', 'Additional shares explanation')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InfoIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,915383693)})]},proxy:true}],null,false,1027936137)},[_vm._v(\" \"),_c('p',{staticClass:\"hint-body\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.additionalSharesHelpText)+\"\\n\\t\\t\\t\\t\\t\")])])],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)}),_vm._v(\" \"),(_vm.projectsEnabled)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showSharingDetailsView && _vm.fileInfo),expression:\"!showSharingDetailsView && fileInfo\"}],staticClass:\"sharingTab__additionalContent\"},[_c('CollectionList',{attrs:{\"id\":`${_vm.fileInfo.id}`,\"type\":\"file\",\"name\":_vm.fileInfo.name}})],1):_vm._e()],2):_vm._e()]),_vm._v(\" \"),(_vm.showSharingDetailsView)?_c('SharingDetailsTab',{attrs:{\"file-info\":_vm.shareDetailsData.fileInfo,\"share\":_vm.shareDetailsData.share},on:{\"close-sharing-details\":_vm.toggleShareDetailsView,\"add:share\":_vm.addShare,\"remove:share\":_vm.removeShare}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../css-loader/dist/cjs.js!./index-CJAYjuyf.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../css-loader/dist/cjs.js!./index-CJAYjuyf.css\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import './assets/index-CJAYjuyf.css';\nimport { t } from \"@nextcloud/l10n\";\nimport NcAvatar from \"@nextcloud/vue/dist/Components/NcAvatar.js\";\nimport NcSelect from \"@nextcloud/vue/dist/Components/NcSelect.js\";\nimport debounce from \"lodash-es/debounce.js\";\nimport NcActions from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport NcActionButton from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport { reactive, set } from \"vue\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nclass CollectionService {\n constructor() {\n this.http = axios;\n }\n listCollection(collectionId) {\n return this.http.get(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }));\n }\n renameCollection(collectionId, collectionName) {\n return this.http.put(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), {\n collectionName\n }).then((result) => {\n return result.data.ocs.data;\n });\n }\n getCollectionsByResource(resourceType, resourceId) {\n return this.http.get(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId })).then((result) => {\n return result.data.ocs.data;\n });\n }\n createCollection(resourceType, resourceId, name) {\n return this.http.post(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId }), {\n name\n }).then((response) => {\n return response.data.ocs.data;\n });\n }\n addResource(collectionId, resourceType, resourceId) {\n resourceId = \"\" + resourceId;\n return this.http.post(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), {\n resourceType,\n resourceId\n }).then((response) => {\n return response.data.ocs.data;\n });\n }\n removeResource(collectionId, resourceType, resourceId) {\n return this.http.delete(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { params: { resourceType, resourceId } }).then((response) => {\n return response.data.ocs.data;\n });\n }\n search(query) {\n return this.http.get(generateOcsUrl(\"collaboration/resources/collections/search/{query}\", { query })).then((response) => {\n return response.data.ocs.data;\n });\n }\n}\nconst service = new CollectionService();\nconst state = reactive({\n collections: []\n});\nconst mutations = {\n addCollections(collections) {\n set(state, \"collections\", collections);\n },\n addCollection(collection) {\n state.collections.push(collection);\n },\n removeCollection(collectionId) {\n set(state, \"collections\", state.collections.filter((item) => item.id !== collectionId));\n },\n updateCollection(collection) {\n const index = state.collections.findIndex((_item) => _item.id === collection.id);\n if (index !== -1) {\n set(state.collections, index, collection);\n } else {\n state.collections.push(collection);\n }\n }\n};\nconst actions = {\n fetchCollectionsByResource({ resourceType, resourceId }) {\n return service.getCollectionsByResource(resourceType, resourceId).then((collections) => {\n mutations.addCollections(collections);\n return collections;\n });\n },\n createCollection({ baseResourceType, baseResourceId, resourceType, resourceId, name }) {\n return service.createCollection(baseResourceType, baseResourceId, name).then((collection) => {\n mutations.addCollection(collection);\n actions.addResourceToCollection({\n collectionId: collection.id,\n resourceType,\n resourceId\n });\n });\n },\n renameCollection({ collectionId, name }) {\n return service.renameCollection(collectionId, name).then((collection) => {\n mutations.updateCollection(collection);\n return collection;\n });\n },\n addResourceToCollection({ collectionId, resourceType, resourceId }) {\n return service.addResource(collectionId, resourceType, resourceId).then((collection) => {\n mutations.updateCollection(collection);\n return collection;\n });\n },\n removeResource({ collectionId, resourceType, resourceId }) {\n return service.removeResource(collectionId, resourceType, resourceId).then((collection) => {\n if (collection.resources.length > 0) {\n mutations.updateCollection(collection);\n } else {\n mutations.removeCollection(collection);\n }\n });\n },\n search(query) {\n return service.search(query);\n }\n};\nfunction normalizeComponent(scriptExports, render3, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render3) {\n options.render = render3;\n options.staticRenderFns = staticRenderFns;\n options._compiled = true;\n }\n if (functionalTemplate) {\n options.functional = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n var hook;\n if (moduleIdentifier) {\n hook = function(context) {\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext;\n if (!context && typeof __VUE_SSR_CONTEXT__ !== \"undefined\") {\n context = __VUE_SSR_CONTEXT__;\n }\n if (injectStyles) {\n injectStyles.call(this, context);\n }\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n };\n options._ssrRegister = hook;\n } else if (injectStyles) {\n hook = shadowMode ? function() {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n );\n } : injectStyles;\n }\n if (hook) {\n if (options.functional) {\n options._injectStyles = hook;\n var originalRender = options.render;\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst _sfc_main$1 = {\n name: \"CollectionListItem\",\n components: {\n NcAvatar,\n NcActions,\n NcActionButton\n },\n props: {\n collection: {\n type: Object,\n default: null\n }\n },\n data() {\n return {\n detailsOpen: false,\n newName: null,\n error: {}\n };\n },\n computed: {\n getIcon() {\n return (resource) => [resource.iconClass];\n },\n typeClass() {\n return (resource) => \"resource-type-\" + resource.type;\n },\n limitedResources() {\n return (collection) => collection.resources ? collection.resources.slice(0, 2) : [];\n },\n iconUrl() {\n return (resource) => {\n if (resource.mimetype) {\n return OC.MimeType.getIconUrl(resource.mimetype);\n }\n if (resource.iconUrl) {\n return resource.iconUrl;\n }\n return \"\";\n };\n }\n },\n methods: {\n t,\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = true;\n },\n hideDetails() {\n this.detailsOpen = false;\n },\n removeResource(collection, resource) {\n actions.removeResource({\n collectionId: collection.id,\n resourceType: resource.type,\n resourceId: resource.id\n });\n },\n openRename() {\n this.newName = this.collection.name;\n },\n renameCollection() {\n if (this.newName === \"\") {\n this.newName = null;\n return;\n }\n actions.renameCollection({\n collectionId: this.collection.id,\n name: this.newName\n }).then((collection) => {\n this.newName = null;\n }).catch((e) => {\n this.$set(this.error, \"rename\", t(\"core\", \"Failed to rename the project\"));\n console.error(e);\n setTimeout(() => {\n set(this.error, \"rename\", null);\n }, 3e3);\n });\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"collection-list-item\" }, [_c(\"NcAvatar\", { staticClass: \"collection-avatar\", attrs: { \"display-name\": _vm.collection.name, \"allow-placeholder\": \"\" } }), _vm.newName === null ? _c(\"span\", { staticClass: \"collection-item-name\", attrs: { \"title\": \"\" }, on: { \"click\": _vm.showDetails } }, [_vm._v(_vm._s(_vm.collection.name))]) : _c(\"form\", { class: { \"shouldshake\": _vm.error.rename }, on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.renameCollection.apply(null, arguments);\n } } }, [_c(\"input\", { directives: [{ name: \"model\", rawName: \"v-model\", value: _vm.newName, expression: \"newName\" }], attrs: { \"type\": \"text\", \"autocomplete\": \"off\", \"autocapitalize\": \"off\" }, domProps: { \"value\": _vm.newName }, on: { \"input\": function($event) {\n if ($event.target.composing) return;\n _vm.newName = $event.target.value;\n } } }), _c(\"input\", { staticClass: \"icon-confirm\", attrs: { \"type\": \"submit\", \"value\": \"\" } })]), !_vm.detailsOpen && _vm.newName === null ? _c(\"div\", { staticClass: \"linked-icons\" }, _vm._l(_vm.limitedResources(_vm.collection), function(resource) {\n return _c(\"a\", { key: resource.type + \"|\" + resource.id, class: _vm.typeClass(resource), attrs: { \"title\": resource.name, \"href\": resource.link } }, [_c(\"img\", { attrs: { \"src\": _vm.iconUrl(resource) } })]);\n }), 0) : _vm._e(), _vm.newName === null ? _c(\"span\", { staticClass: \"sharingOptionsGroup\" }, [_c(\"NcActions\", [_c(\"NcActionButton\", { attrs: { \"icon\": \"icon-info\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.toggleDetails.apply(null, arguments);\n } } }, [_vm._v(\" \" + _vm._s(_vm.detailsOpen ? _vm.t(\"core\", \"Hide details\") : _vm.t(\"core\", \"Show details\")) + \" \")]), _c(\"NcActionButton\", { attrs: { \"icon\": \"icon-rename\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.openRename.apply(null, arguments);\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"core\", \"Rename project\")) + \" \")])], 1)], 1) : _vm._e(), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.error.rename ? _c(\"div\", { staticClass: \"error\" }, [_vm._v(\" \" + _vm._s(_vm.error.rename) + \" \")]) : _vm._e()]), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.detailsOpen ? _c(\"ul\", { staticClass: \"resource-list-details\" }, _vm._l(_vm.collection.resources, function(resource) {\n return _c(\"li\", { key: resource.type + \"|\" + resource.id, class: _vm.typeClass(resource) }, [_c(\"a\", { attrs: { \"href\": resource.link } }, [_c(\"img\", { attrs: { \"src\": _vm.iconUrl(resource) } }), _c(\"span\", { staticClass: \"resource-name\" }, [_vm._v(_vm._s(resource.name || \"\"))])]), _c(\"span\", { staticClass: \"icon-close\", on: { \"click\": function($event) {\n return _vm.removeResource(_vm.collection, resource);\n } } })]);\n }), 0) : _vm._e()])], 1);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"42733c12\",\n null,\n null\n);\nconst CollectionListItem = __component__$1.exports;\nconst METHOD_CREATE_COLLECTION = 0;\nconst METHOD_ADD_TO_COLLECTION = 1;\nconst _debouncedSearch = debounce(\n function(query, loading) {\n if (query !== \"\") {\n loading(true);\n actions.search(query).then((collections) => {\n this.searchCollections = collections;\n }).catch((e) => {\n console.error(\"Failed to search for collections\", e);\n }).finally(() => {\n loading(false);\n });\n }\n },\n 500,\n {}\n);\nconst _sfc_main = {\n name: \"CollectionList\",\n components: {\n CollectionListItem,\n NcAvatar,\n NcSelect\n },\n props: {\n /**\n * Resource type identifier\n */\n type: {\n type: String,\n default: null\n },\n /**\n * Unique id of the resource\n */\n id: {\n type: String,\n default: null\n },\n /**\n * Name of the resource\n */\n name: {\n type: String,\n default: \"\"\n },\n isActive: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n return {\n state\n };\n },\n data() {\n return {\n selectIsOpen: false,\n generatingCodes: false,\n codes: void 0,\n value: null,\n model: {},\n searchCollections: [],\n error: null,\n isSelectOpen: false\n };\n },\n computed: {\n collections() {\n return this.state.collections.filter((collection) => {\n return typeof collection.resources.find((resource) => resource && resource.id === \"\" + this.id && resource.type === this.type) !== \"undefined\";\n });\n },\n placeholder() {\n return this.isSelectOpen ? t(\"core\", \"Type to search for existing projects\") : t(\"core\", \"Add to a project\");\n },\n options() {\n const options = [];\n window.OCP.Collaboration.getTypes().sort().forEach((type) => {\n options.push({\n method: METHOD_CREATE_COLLECTION,\n type,\n title: window.OCP.Collaboration.getLabel(type),\n class: window.OCP.Collaboration.getIcon(type),\n action: () => window.OCP.Collaboration.trigger(type)\n });\n });\n for (const index in this.searchCollections) {\n if (this.collections.findIndex((collection) => collection.id === this.searchCollections[index].id) === -1) {\n options.push({\n method: METHOD_ADD_TO_COLLECTION,\n title: this.searchCollections[index].name,\n collectionId: this.searchCollections[index].id\n });\n }\n }\n return options;\n }\n },\n watch: {\n type() {\n if (this.isActive) {\n actions.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n }\n },\n id() {\n if (this.isActive) {\n actions.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n }\n },\n isActive(isActive) {\n if (isActive) {\n actions.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n }\n }\n },\n mounted() {\n actions.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n },\n methods: {\n t,\n select(selectedOption, id) {\n if (selectedOption.method === METHOD_CREATE_COLLECTION) {\n selectedOption.action().then((id2) => {\n actions.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: selectedOption.type,\n resourceId: id2,\n name: this.name\n }).catch((e) => {\n this.setError(t(\"core\", \"Failed to create a project\"), e);\n });\n }).catch((e) => {\n console.error(\"No resource selected\", e);\n });\n }\n if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n actions.addResourceToCollection({\n collectionId: selectedOption.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((e) => {\n this.setError(t(\"core\", \"Failed to add the item to the project\"), e);\n });\n }\n },\n search(query, loading) {\n _debouncedSearch.bind(this)(query, loading);\n },\n showSelect() {\n this.selectIsOpen = true;\n this.$refs.select.$el.focus();\n },\n hideSelect() {\n this.selectIsOpen = false;\n },\n isVueComponent(object) {\n return object._isVue;\n },\n setError(error, e) {\n console.error(error, e);\n this.error = error;\n setTimeout(() => {\n this.error = null;\n }, 5e3);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _vm.collections && _vm.type && _vm.id ? _c(\"ul\", { staticClass: \"collection-list\", attrs: { \"id\": \"collection-list\" } }, [_c(\"li\", { on: { \"click\": _vm.showSelect } }, [_vm._m(0), _c(\"div\", { attrs: { \"id\": \"collection-select-container\" } }, [_c(\"NcSelect\", { ref: \"select\", attrs: { \"aria-label-combobox\": _vm.t(\"core\", \"Add to a project\"), \"options\": _vm.options, \"placeholder\": _vm.placeholder, \"label\": \"title\", \"limit\": 5 }, on: { \"close\": function($event) {\n _vm.isSelectOpen = false;\n }, \"open\": function($event) {\n _vm.isSelectOpen = true;\n }, \"option:selected\": _vm.select, \"search\": _vm.search }, scopedSlots: _vm._u([{ key: \"selected-option\", fn: function(option) {\n return [_c(\"span\", { staticClass: \"option__desc\" }, [_c(\"span\", { staticClass: \"option__title\" }, [_vm._v(_vm._s(option.title))])])];\n } }, { key: \"option\", fn: function(option) {\n return [_c(\"span\", { staticClass: \"option__wrapper\" }, [option.class ? _c(\"span\", { staticClass: \"avatar\", class: option.class }) : option.method !== 2 ? _c(\"NcAvatar\", { attrs: { \"allow-placeholder\": \"\", \"display-name\": option.title } }) : _vm._e(), _c(\"span\", { staticClass: \"option__title\" }, [_vm._v(_vm._s(option.title))])], 1)];\n } }], null, false, 2397208459), model: { value: _vm.value, callback: function($$v) {\n _vm.value = $$v;\n }, expression: \"value\" } }, [_c(\"p\", { staticClass: \"hint\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"core\", \"Connect items to a project to make them easier to find\")) + \" \")])])], 1)]), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.error ? _c(\"li\", { staticClass: \"error\" }, [_vm._v(\" \" + _vm._s(_vm.error) + \" \")]) : _vm._e()]), _vm._l(_vm.collections, function(collection) {\n return _c(\"CollectionListItem\", { key: collection.id, attrs: { \"collection\": collection } });\n })], 2) : _vm._e();\n};\nvar _sfc_staticRenderFns = [function() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"avatar\" }, [_c(\"span\", { staticClass: \"icon-projects\" })]);\n}];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"8ebb2593\",\n null,\n null\n);\nconst CollectionList = __component__.exports;\nexport {\n CollectionList,\n CollectionListItem\n};\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCapabilities } from '@nextcloud/capabilities';\nexport default class Config {\n _capabilities;\n constructor() {\n this._capabilities = getCapabilities();\n }\n /**\n * Get default share permissions, if any\n */\n get defaultPermissions() {\n return this._capabilities.files_sharing?.default_permissions;\n }\n /**\n * Is public upload allowed on link shares ?\n * This covers File request and Full upload/edit option.\n */\n get isPublicUploadEnabled() {\n return this._capabilities.files_sharing?.public?.upload === true;\n }\n /**\n * Get the federated sharing documentation link\n */\n get federatedShareDocLink() {\n return window.OC.appConfig.core.federatedCloudShareDoc;\n }\n /**\n * Get the default link share expiration date\n */\n get defaultExpirationDate() {\n if (this.isDefaultExpireDateEnabled && this.defaultExpireDate !== null) {\n return new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate));\n }\n return null;\n }\n /**\n * Get the default internal expiration date\n */\n get defaultInternalExpirationDate() {\n if (this.isDefaultInternalExpireDateEnabled && this.defaultInternalExpireDate !== null) {\n return new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate));\n }\n return null;\n }\n /**\n * Get the default remote expiration date\n */\n get defaultRemoteExpirationDateString() {\n if (this.isDefaultRemoteExpireDateEnabled && this.defaultRemoteExpireDate !== null) {\n return new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate));\n }\n return null;\n }\n /**\n * Are link shares password-enforced ?\n */\n get enforcePasswordForPublicLink() {\n return window.OC.appConfig.core.enforcePasswordForPublicLink === true;\n }\n /**\n * Is password asked by default on link shares ?\n */\n get enableLinkPasswordByDefault() {\n return window.OC.appConfig.core.enableLinkPasswordByDefault === true;\n }\n /**\n * Is link shares expiration enforced ?\n */\n get isDefaultExpireDateEnforced() {\n return window.OC.appConfig.core.defaultExpireDateEnforced === true;\n }\n /**\n * Is there a default expiration date for new link shares ?\n */\n get isDefaultExpireDateEnabled() {\n return window.OC.appConfig.core.defaultExpireDateEnabled === true;\n }\n /**\n * Is internal shares expiration enforced ?\n */\n get isDefaultInternalExpireDateEnforced() {\n return window.OC.appConfig.core.defaultInternalExpireDateEnforced === true;\n }\n /**\n * Is there a default expiration date for new internal shares ?\n */\n get isDefaultInternalExpireDateEnabled() {\n return window.OC.appConfig.core.defaultInternalExpireDateEnabled === true;\n }\n /**\n * Is remote shares expiration enforced ?\n */\n get isDefaultRemoteExpireDateEnforced() {\n return window.OC.appConfig.core.defaultRemoteExpireDateEnforced === true;\n }\n /**\n * Is there a default expiration date for new remote shares ?\n */\n get isDefaultRemoteExpireDateEnabled() {\n return window.OC.appConfig.core.defaultRemoteExpireDateEnabled === true;\n }\n /**\n * Are users on this server allowed to send shares to other servers ?\n */\n get isRemoteShareAllowed() {\n return window.OC.appConfig.core.remoteShareAllowed === true;\n }\n /**\n * Is public sharing enabled ?\n */\n get isPublicShareAllowed() {\n return this._capabilities?.files_sharing?.public?.enabled === true;\n }\n /**\n * Is sharing my mail (link share) enabled ?\n */\n get isMailShareAllowed() {\n // eslint-disable-next-line camelcase\n return this._capabilities?.files_sharing?.sharebymail?.enabled === true\n // eslint-disable-next-line camelcase\n && this.isPublicShareAllowed === true;\n }\n /**\n * Get the default days to link shares expiration\n */\n get defaultExpireDate() {\n return window.OC.appConfig.core.defaultExpireDate;\n }\n /**\n * Get the default days to internal shares expiration\n */\n get defaultInternalExpireDate() {\n return window.OC.appConfig.core.defaultInternalExpireDate;\n }\n /**\n * Get the default days to remote shares expiration\n */\n get defaultRemoteExpireDate() {\n return window.OC.appConfig.core.defaultRemoteExpireDate;\n }\n /**\n * Is resharing allowed ?\n */\n get isResharingAllowed() {\n return window.OC.appConfig.core.resharingAllowed === true;\n }\n /**\n * Is password enforced for mail shares ?\n */\n get isPasswordForMailSharesRequired() {\n return this._capabilities.files_sharing?.sharebymail?.password?.enforced === true;\n }\n /**\n * Always show the email or userid unique sharee label if enabled by the admin\n */\n get shouldAlwaysShowUnique() {\n return this._capabilities.files_sharing?.sharee?.always_show_unique === true;\n }\n /**\n * Is sharing with groups allowed ?\n */\n get allowGroupSharing() {\n return window.OC.appConfig.core.allowGroupSharing === true;\n }\n /**\n * Get the maximum results of a share search\n */\n get maxAutocompleteResults() {\n return parseInt(window.OC.config['sharing.maxAutocompleteResults'], 10) || 25;\n }\n /**\n * Get the minimal string length\n * to initiate a share search\n */\n get minSearchStringLength() {\n return parseInt(window.OC.config['sharing.minSearchStringLength'], 10) || 0;\n }\n /**\n * Get the password policy configuration\n */\n get passwordPolicy() {\n return this._capabilities?.password_policy || {};\n }\n /**\n * Returns true if custom tokens are allowed\n */\n get allowCustomTokens() {\n return this._capabilities?.files_sharing?.public?.custom_tokens;\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { isFileRequest } from '../services/SharingService';\nexport default class Share {\n _share;\n /**\n * Create the share object\n *\n * @param {object} ocsData ocs request response\n */\n constructor(ocsData) {\n if (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n ocsData = ocsData.ocs.data[0];\n }\n // string to int\n if (typeof ocsData.id === 'string') {\n ocsData.id = Number.parseInt(ocsData.id);\n }\n // convert int into boolean\n ocsData.hide_download = !!ocsData.hide_download;\n ocsData.mail_send = !!ocsData.mail_send;\n if (ocsData.attributes && typeof ocsData.attributes === 'string') {\n try {\n ocsData.attributes = JSON.parse(ocsData.attributes);\n }\n catch (e) {\n console.warn('Could not parse share attributes returned by server', ocsData.attributes);\n }\n }\n ocsData.attributes = ocsData.attributes ?? [];\n // store state\n this._share = ocsData;\n }\n /**\n * Get the share state\n * ! used for reactivity purpose\n * Do not remove. It allow vuejs to\n * inject its watchers into the #share\n * state and make the whole class reactive\n *\n * @return {object} the share raw state\n */\n get state() {\n return this._share;\n }\n /**\n * get the share id\n */\n get id() {\n return this._share.id;\n }\n /**\n * Get the share type\n */\n get type() {\n return this._share.share_type;\n }\n /**\n * Get the share permissions\n * See window.OC.PERMISSION_* variables\n */\n get permissions() {\n return this._share.permissions;\n }\n /**\n * Get the share attributes\n */\n get attributes() {\n return this._share.attributes || [];\n }\n /**\n * Set the share permissions\n * See window.OC.PERMISSION_* variables\n */\n set permissions(permissions) {\n this._share.permissions = permissions;\n }\n // SHARE OWNER --------------------------------------------------\n /**\n * Get the share owner uid\n */\n get owner() {\n return this._share.uid_owner;\n }\n /**\n * Get the share owner's display name\n */\n get ownerDisplayName() {\n return this._share.displayname_owner;\n }\n // SHARED WITH --------------------------------------------------\n /**\n * Get the share with entity uid\n */\n get shareWith() {\n return this._share.share_with;\n }\n /**\n * Get the share with entity display name\n * fallback to its uid if none\n */\n get shareWithDisplayName() {\n return this._share.share_with_displayname\n || this._share.share_with;\n }\n /**\n * Unique display name in case of multiple\n * duplicates results with the same name.\n */\n get shareWithDisplayNameUnique() {\n return this._share.share_with_displayname_unique\n || this._share.share_with;\n }\n /**\n * Get the share with entity link\n */\n get shareWithLink() {\n return this._share.share_with_link;\n }\n /**\n * Get the share with avatar if any\n */\n get shareWithAvatar() {\n return this._share.share_with_avatar;\n }\n // SHARED FILE OR FOLDER OWNER ----------------------------------\n /**\n * Get the shared item owner uid\n */\n get uidFileOwner() {\n return this._share.uid_file_owner;\n }\n /**\n * Get the shared item display name\n * fallback to its uid if none\n */\n get displaynameFileOwner() {\n return this._share.displayname_file_owner\n || this._share.uid_file_owner;\n }\n // TIME DATA ----------------------------------------------------\n /**\n * Get the share creation timestamp\n */\n get createdTime() {\n return this._share.stime;\n }\n /**\n * Get the expiration date\n * @return {string} date with YYYY-MM-DD format\n */\n get expireDate() {\n return this._share.expiration;\n }\n /**\n * Set the expiration date\n * @param {string} date the share expiration date with YYYY-MM-DD format\n */\n set expireDate(date) {\n this._share.expiration = date;\n }\n // EXTRA DATA ---------------------------------------------------\n /**\n * Get the public share token\n */\n get token() {\n return this._share.token;\n }\n /**\n * Set the public share token\n */\n set token(token) {\n this._share.token = token;\n }\n /**\n * Get the share note if any\n */\n get note() {\n return this._share.note;\n }\n /**\n * Set the share note if any\n */\n set note(note) {\n this._share.note = note;\n }\n /**\n * Get the share label if any\n * Should only exist on link shares\n */\n get label() {\n return this._share.label ?? '';\n }\n /**\n * Set the share label if any\n * Should only be set on link shares\n */\n set label(label) {\n this._share.label = label;\n }\n /**\n * Have a mail been sent\n */\n get mailSend() {\n return this._share.mail_send === true;\n }\n /**\n * Hide the download button on public page\n */\n get hideDownload() {\n return this._share.hide_download === true\n || this.attributes.find?.(({ scope, key, value }) => scope === 'permissions' && key === 'download' && !value) !== undefined;\n }\n /**\n * Hide the download button on public page\n */\n set hideDownload(state) {\n this._share.hide_download = state === true;\n }\n /**\n * Password protection of the share\n */\n get password() {\n return this._share.password;\n }\n /**\n * Password protection of the share\n */\n set password(password) {\n this._share.password = password;\n }\n /**\n * Password expiration time\n * @return {string} date with YYYY-MM-DD format\n */\n get passwordExpirationTime() {\n return this._share.password_expiration_time;\n }\n /**\n * Password expiration time\n * @param {string} passwordExpirationTime date with YYYY-MM-DD format\n */\n set passwordExpirationTime(passwordExpirationTime) {\n this._share.password_expiration_time = passwordExpirationTime;\n }\n /**\n * Password protection by Talk of the share\n */\n get sendPasswordByTalk() {\n return this._share.send_password_by_talk;\n }\n /**\n * Password protection by Talk of the share\n *\n * @param {boolean} sendPasswordByTalk whether to send the password by Talk or not\n */\n set sendPasswordByTalk(sendPasswordByTalk) {\n this._share.send_password_by_talk = sendPasswordByTalk;\n }\n // SHARED ITEM DATA ---------------------------------------------\n /**\n * Get the shared item absolute full path\n */\n get path() {\n return this._share.path;\n }\n /**\n * Return the item type: file or folder\n * @return {string} 'folder' | 'file'\n */\n get itemType() {\n return this._share.item_type;\n }\n /**\n * Get the shared item mimetype\n */\n get mimetype() {\n return this._share.mimetype;\n }\n /**\n * Get the shared item id\n */\n get fileSource() {\n return this._share.file_source;\n }\n /**\n * Get the target path on the receiving end\n * e.g the file /xxx/aaa will be shared in\n * the receiving root as /aaa, the fileTarget is /aaa\n */\n get fileTarget() {\n return this._share.file_target;\n }\n /**\n * Get the parent folder id if any\n */\n get fileParent() {\n return this._share.file_parent;\n }\n // PERMISSIONS Shortcuts\n /**\n * Does this share have READ permissions\n */\n get hasReadPermission() {\n return !!((this.permissions & window.OC.PERMISSION_READ));\n }\n /**\n * Does this share have CREATE permissions\n */\n get hasCreatePermission() {\n return !!((this.permissions & window.OC.PERMISSION_CREATE));\n }\n /**\n * Does this share have DELETE permissions\n */\n get hasDeletePermission() {\n return !!((this.permissions & window.OC.PERMISSION_DELETE));\n }\n /**\n * Does this share have UPDATE permissions\n */\n get hasUpdatePermission() {\n return !!((this.permissions & window.OC.PERMISSION_UPDATE));\n }\n /**\n * Does this share have SHARE permissions\n */\n get hasSharePermission() {\n return !!((this.permissions & window.OC.PERMISSION_SHARE));\n }\n /**\n * Does this share have download permissions\n */\n get hasDownloadPermission() {\n const hasDisabledDownload = (attribute) => {\n return attribute.scope === 'permissions' && attribute.key === 'download' && attribute.value === false;\n };\n return this.attributes.some(hasDisabledDownload);\n }\n /**\n * Is this mail share a file request ?\n */\n get isFileRequest() {\n return isFileRequest(JSON.stringify(this.attributes));\n }\n set hasDownloadPermission(enabled) {\n this.setAttribute('permissions', 'download', !!enabled);\n }\n setAttribute(scope, key, value) {\n const attrUpdate = {\n scope,\n key,\n value,\n };\n // try and replace existing\n for (const i in this._share.attributes) {\n const attr = this._share.attributes[i];\n if (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n this._share.attributes.splice(i, 1, attrUpdate);\n return;\n }\n }\n this._share.attributes.push(attrUpdate);\n }\n // PERMISSIONS Shortcuts for the CURRENT USER\n // ! the permissions above are the share settings,\n // ! meaning the permissions for the recipient\n /**\n * Can the current user EDIT this share ?\n */\n get canEdit() {\n return this._share.can_edit === true;\n }\n /**\n * Can the current user DELETE this share ?\n */\n get canDelete() {\n return this._share.can_delete === true;\n }\n /**\n * Top level accessible shared folder fileid for the current user\n */\n get viaFileid() {\n return this._share.via_fileid;\n }\n /**\n * Top level accessible shared folder path for the current user\n */\n get viaPath() {\n return this._share.via_path;\n }\n // TODO: SORT THOSE PROPERTIES\n get parent() {\n return this._share.parent;\n }\n get storageId() {\n return this._share.storage_id;\n }\n get storage() {\n return this._share.storage;\n }\n get itemSource() {\n return this._share.item_source;\n }\n get status() {\n return this._share.status;\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n// TODO: Fix this instead of disabling ESLint!!!\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { Folder, File, Permission, davRemoteURL, davRootPath } from '@nextcloud/files';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport axios from '@nextcloud/axios';\nimport logger from './logger';\nconst headers = {\n 'Content-Type': 'application/json',\n};\nconst ocsEntryToNode = async function (ocsEntry) {\n try {\n // Federated share handling\n if (ocsEntry?.remote_id !== undefined) {\n if (!ocsEntry.mimetype) {\n const mime = (await import('mime')).default;\n // This won't catch files without an extension, but this is the best we can do\n ocsEntry.mimetype = mime.getType(ocsEntry.name);\n }\n ocsEntry.item_type = ocsEntry.type || (ocsEntry.mimetype ? 'file' : 'folder');\n // different naming for remote shares\n ocsEntry.item_mtime = ocsEntry.mtime;\n ocsEntry.file_target = ocsEntry.file_target || ocsEntry.mountpoint;\n if (ocsEntry.file_target.includes('TemporaryMountPointName')) {\n ocsEntry.file_target = ocsEntry.name;\n }\n // If the share is not accepted yet we don't know which permissions it will have\n if (!ocsEntry.accepted) {\n // Need to set permissions to NONE for federated shares\n ocsEntry.item_permissions = Permission.NONE;\n ocsEntry.permissions = Permission.NONE;\n }\n ocsEntry.uid_owner = ocsEntry.owner;\n // TODO: have the real display name stored somewhere\n ocsEntry.displayname_owner = ocsEntry.owner;\n }\n const isFolder = ocsEntry?.item_type === 'folder';\n const hasPreview = ocsEntry?.has_preview === true;\n const Node = isFolder ? Folder : File;\n // If this is an external share that is not yet accepted,\n // we don't have an id. We can fallback to the row id temporarily\n // local shares (this server) use `file_source`, but remote shares (federated) use `file_id`\n const fileid = ocsEntry.file_source || ocsEntry.file_id || ocsEntry.id;\n // Generate path and strip double slashes\n const path = ocsEntry.path || ocsEntry.file_target || ocsEntry.name;\n const source = `${davRemoteURL}${davRootPath}/${path.replace(/^\\/+/, '')}`;\n let mtime = ocsEntry.item_mtime ? new Date((ocsEntry.item_mtime) * 1000) : undefined;\n // Prefer share time if more recent than item mtime\n if (ocsEntry?.stime > (ocsEntry?.item_mtime || 0)) {\n mtime = new Date((ocsEntry.stime) * 1000);\n }\n let sharees;\n if ('share_with' in ocsEntry) {\n sharees = {\n sharee: {\n id: ocsEntry.share_with,\n 'display-name': ocsEntry.share_with_displayname || ocsEntry.share_with,\n type: ocsEntry.share_type,\n },\n };\n }\n return new Node({\n id: fileid,\n source,\n owner: ocsEntry?.uid_owner,\n mime: ocsEntry?.mimetype || 'application/octet-stream',\n mtime,\n size: ocsEntry?.item_size,\n permissions: ocsEntry?.item_permissions || ocsEntry?.permissions,\n root: davRootPath,\n attributes: {\n ...ocsEntry,\n 'has-preview': hasPreview,\n // Also check the sharingStatusAction.ts code\n 'owner-id': ocsEntry?.uid_owner,\n 'owner-display-name': ocsEntry?.displayname_owner,\n 'share-types': ocsEntry?.share_type,\n 'share-attributes': ocsEntry?.attributes || '[]',\n sharees,\n favorite: ocsEntry?.tags?.includes(window.OC.TAG_FAVORITE) ? 1 : 0,\n },\n });\n }\n catch (error) {\n logger.error('Error while parsing OCS entry', { error });\n return null;\n }\n};\nconst getShares = function (shareWithMe = false) {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares');\n return axios.get(url, {\n headers,\n params: {\n shared_with_me: shareWithMe,\n include_tags: true,\n },\n });\n};\nconst getSharedWithYou = function () {\n return getShares(true);\n};\nconst getSharedWithOthers = function () {\n return getShares();\n};\nconst getRemoteShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getPendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getRemotePendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getDeletedShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\n/**\n * Check if a file request is enabled\n * @param attributes the share attributes json-encoded array\n */\nexport const isFileRequest = (attributes = '[]') => {\n const isFileRequest = (attribute) => {\n return attribute.scope === 'fileRequest' && attribute.key === 'enabled' && attribute.value === true;\n };\n try {\n const attributesArray = JSON.parse(attributes);\n return attributesArray.some(isFileRequest);\n }\n catch (error) {\n logger.error('Error while parsing share attributes', { error });\n return false;\n }\n};\n/**\n * Group an array of objects (here Nodes) by a key\n * and return an array of arrays of them.\n * @param nodes Nodes to group\n * @param key The attribute to group by\n */\nconst groupBy = function (nodes, key) {\n return Object.values(nodes.reduce(function (acc, curr) {\n (acc[curr[key]] = acc[curr[key]] || []).push(curr);\n return acc;\n }, {}));\n};\nexport const getContents = async (sharedWithYou = true, sharedWithOthers = true, pendingShares = false, deletedshares = false, filterTypes = []) => {\n const promises = [];\n if (sharedWithYou) {\n promises.push(getSharedWithYou(), getRemoteShares());\n }\n if (sharedWithOthers) {\n promises.push(getSharedWithOthers());\n }\n if (pendingShares) {\n promises.push(getPendingShares(), getRemotePendingShares());\n }\n if (deletedshares) {\n promises.push(getDeletedShares());\n }\n const responses = await Promise.all(promises);\n const data = responses.map((response) => response.data.ocs.data).flat();\n let contents = (await Promise.all(data.map(ocsEntryToNode)))\n .filter((node) => node !== null);\n if (filterTypes.length > 0) {\n contents = contents.filter((node) => filterTypes.includes(node.attributes?.share_type));\n }\n // Merge duplicate shares and group their attributes\n // Also check the sharingStatusAction.ts code\n contents = groupBy(contents, 'source').map((nodes) => {\n const node = nodes[0];\n node.attributes['share-types'] = nodes.map(node => node.attributes['share-types']);\n return node;\n });\n return {\n folder: new Folder({\n id: 0,\n source: `${davRemoteURL}${davRootPath}`,\n owner: getCurrentUser()?.uid || null,\n }),\n contents,\n };\n};\n","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('NcActionButton',{attrs:{\"title\":_vm.copyLinkTooltip,\"aria-label\":_vm.copyLinkTooltip},on:{\"click\":_vm.copyLink},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.copied && _vm.copySuccess)?_c('CheckIcon',{staticClass:\"icon-checkmark-color\",attrs:{\"size\":20}}):_c('ClipboardIcon',{attrs:{\"size\":20}})]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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 v-if=\"$slots['default']\"\n\t\t\tref=\"actionsComponent\"\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/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\tpadding-inline-start: 10px;\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-inline-start: auto !important;\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!./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 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=44339fa4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=44339fa4&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=44339fa4&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=44339fa4&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 \"44339fa4\",\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 }","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 - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\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<NcActionButton :title=\"copyLinkTooltip\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t@click=\"copyLink\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CheckIcon v-if=\"copied && copySuccess\"\n\t\t\t\t\t\t:size=\"20\"\n\t\t\t\t\t\tclass=\"icon-checkmark-color\" />\n\t\t\t\t\t<ClipboardIcon v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcActionButton>\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showSuccess } from '@nextcloud/dialogs'\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\n\nimport CheckIcon from 'vue-material-design-icons/Check.vue'\nimport ClipboardIcon from 'vue-material-design-icons/ContentCopy.vue'\n\nimport SharingEntrySimple from './SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tSharingEntrySimple,\n\t\tCheckIcon,\n\t\tClipboardIcon,\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 people with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for people 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\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\tcolor: var(--color-success);\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!./SharingEntryInternal.vue?vue&type=style&index=0&id=57874406&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=57874406&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=57874406&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=57874406&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 \"57874406\",\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',{staticClass:\"hidden-visually\",attrs:{\"for\":_vm.shareInputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.isExternal ? _vm.t('files_sharing', 'Enter external recipients')\n\t\t\t: _vm.t('files_sharing', 'Search for internal recipients'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",staticClass:\"sharing-search__input\",attrs:{\"input-id\":_vm.shareInputId,\"disabled\":!_vm.canReshare,\"loading\":_vm.loading,\"filterable\":false,\"placeholder\":_vm.inputPlaceholder,\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options,\"label-outside\":true},on:{\"search\":_vm.asyncFind,\"option:selected\":_vm.onSelected},scopedSlots:_vm._u([{key:\"no-options\",fn:function({ search }){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(search ? _vm.noResultText : _vm.placeholder)+\"\\n\\t\\t\")]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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.ts'\nimport { emit } from '@nextcloud/event-bus'\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] 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] 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] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate] expire the share automatically after\n\t\t * @param {string} [data.label] custom label\n\t\t * @param {string} [data.attributes] Share attributes encoded as json\n\t\t * @param {string} data.note custom note to recipient\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, note, attributes }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, note, 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\tconst share = new Share(request.data.ocs.data)\n\t\t\t\temit('files_sharing:share:created', { share })\n\t\t\t\treturn share\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\temit('files_sharing:share:deleted', { id })\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\temit('files_sharing:share:updated', { id })\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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Share from '../models/Share.ts'\nimport Config from '../services/ConfigService.ts'\n\nexport default {\n\tmethods: {\n\t\tasync openSharingDetails(shareRequestObject) {\n\t\t\tlet share = {}\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\t// TODO : Better name/interface for handler required\n\t\t\t// For example `externalAppCreateShareHook` with proper documentation\n\t\t\tif (shareRequestObject.handler) {\n\t\t\t\tconst handlerInput = {}\n\t\t\t\tif (this.suggestions) {\n\t\t\t\t\thandlerInput.suggestions = this.suggestions\n\t\t\t\t\thandlerInput.fileInfo = this.fileInfo\n\t\t\t\t\thandlerInput.query = this.query\n\t\t\t\t}\n\t\t\t\tconst externalShareRequestObject = await shareRequestObject.handler(handlerInput)\n\t\t\t\tshare = this.mapShareRequestToShareObject(externalShareRequestObject)\n\t\t\t} else {\n\t\t\t\tshare = this.mapShareRequestToShareObject(shareRequestObject)\n\t\t\t}\n\n\t\t\tconst shareDetails = {\n\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\tshare,\n\t\t\t}\n\n\t\t\tthis.$emit('open-sharing-details', shareDetails)\n\t\t},\n\t\topenShareDetailsForCustomSettings(share) {\n\t\t\tshare.setCustomPermissions = true\n\t\t\tthis.openSharingDetails(share)\n\t\t},\n\t\tmapShareRequestToShareObject(shareRequestObject) {\n\n\t\t\tif (shareRequestObject.id) {\n\t\t\t\treturn shareRequestObject\n\t\t\t}\n\n\t\t\tconst share = {\n\t\t\t\tattributes: [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\tkey: 'download',\n\t\t\t\t\t\tscope: 'permissions',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\thideDownload: false,\n\t\t\t\tshare_type: shareRequestObject.shareType,\n\t\t\t\tshare_with: shareRequestObject.shareWith,\n\t\t\t\tis_no_user: shareRequestObject.isNoUser,\n\t\t\t\tuser: shareRequestObject.shareWith,\n\t\t\t\tshare_with_displayname: shareRequestObject.displayName,\n\t\t\t\tsubtitle: shareRequestObject.subtitle,\n\t\t\t\tpermissions: shareRequestObject.permissions ?? new Config().defaultPermissions,\n\t\t\t\texpiration: '',\n\t\t\t}\n\n\t\t\treturn new Share(share)\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!./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 - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"sharing-search\">\n\t\t<label class=\"hidden-visually\" :for=\"shareInputId\">\n\t\t\t{{ isExternal ? t('files_sharing', 'Enter external recipients')\n\t\t\t\t: t('files_sharing', 'Search for internal recipients') }}\n\t\t</label>\n\t\t<NcSelect ref=\"select\"\n\t\t\tv-model=\"value\"\n\t\t\t:input-id=\"shareInputId\"\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\t:label-outside=\"true\"\n\t\t\t@search=\"asyncFind\"\n\t\t\t@option:selected=\"onSelected\">\n\t\t\t<template #no-options=\"{ search }\">\n\t\t\t\t{{ search ? noResultText : placeholder }}\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 { getCapabilities } from '@nextcloud/capabilities'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\n\nimport Config from '../services/ConfigService.ts'\nimport Share from '../models/Share.ts'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport { ShareType } from '@nextcloud/sharing'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tmixins: [ShareRequests, ShareDetails],\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\tisExternal: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tsetup() {\n\t\treturn {\n\t\t\tshareInputId: `share-input-${Math.random().toString(36).slice(2, 7)}`,\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\tif (this.placeholder) {\n\t\t\t\treturn this.placeholder\n\t\t\t}\n\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\tif (!this.isExternal) {\n\t\t\t// We can only recommend users, groups etc for internal shares\n\t\t\tthis.getRecommendations()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonSelected(option) {\n\t\t\tthis.value = null // Reset selected option\n\t\t\tthis.openSharingDetails(option)\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] 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 (getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tlet shareType = []\n\n\t\t\tif (this.isExternal) {\n\t\t\t\tshareType.push(ShareType.Remote)\n\t\t\t\tshareType.push(ShareType.RemoteGroup)\n\t\t\t} else {\n\t\t\t\t// Merge shareType array\n\t\t\t\tshareType = shareType.concat([\n\t\t\t\t\tShareType.User,\n\t\t\t\t\tShareType.Group,\n\t\t\t\t\tShareType.Team,\n\t\t\t\t\tShareType.Room,\n\t\t\t\t\tShareType.Guest,\n\t\t\t\t\tShareType.Deck,\n\t\t\t\t\tShareType.ScienceMesh,\n\t\t\t\t])\n\n\t\t\t}\n\n\t\t\tif (getCapabilities().files_sharing.public.enabled === true && this.isExternal) {\n\t\t\t\tshareType.push(ShareType.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 === ShareType.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 === ShareType.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 ShareType.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 ShareType.Remote:\n\t\t\t\t// case ShareType.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 ShareType.RemoteGroup:\n\t\t\tcase ShareType.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 ShareType.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 ShareType.Team:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-teams',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Team'),\n\t\t\t\t}\n\t\t\tcase ShareType.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 ShareType.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 ShareType.Sciencemesh:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-sciencemesh',\n\t\t\t\t\ticonTitle: t('files_sharing', 'ScienceMesh'),\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 subname\n\t\t\tif (result.value.shareType === ShareType.User && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubname = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === ShareType.Remote\n\t\t\t\t\t|| result.value.shareType === ShareType.RemoteGroup\n\t\t\t) && result.value.server) {\n\t\t\t\tsubname = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === ShareType.Email) {\n\t\t\t\tsubname = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubname = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\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 !== ShareType.User,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubname,\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\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\t.avatardiv__initials-wrapper {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=272b9f81&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=272b9f81&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=272b9f81\"\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=272b9f81&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 (_vm.shares.length)?_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}],null,false,1184892072)},[_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):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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\tALL_FILE: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.READ | 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 { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\nexport const fetchNode = async (path) => {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n};\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { ShareType } from '@nextcloud/sharing'\nimport { emit } from '@nextcloud/event-bus'\n\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share.ts'\nimport SharesRequests from './ShareRequests.js'\nimport Config from '../services/ConfigService.ts'\nimport logger from '../services/logger.ts'\n\nimport {\n\tBUNDLED_PERMISSIONS,\n} from '../lib/SharePermissionsToolBox.js'\nimport { fetchNode } from '../../../files/src/services/WebdavClient.ts'\n\nexport default {\n\tmixins: [SharesRequests],\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\t\t\tnode: null,\n\t\t\tShareType,\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\t\tpath() {\n\t\t\treturn (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t},\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\t\tisNewShare() {\n\t\t\treturn !this.share.id\n\t\t},\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\t\tisPublicShare() {\n\t\t\tconst shareType = this.share.shareType ?? this.share.type\n\t\t\treturn [ShareType.Link, ShareType.Email].includes(shareType)\n\t\t},\n\t\tisRemoteShare() {\n\t\t\treturn this.share.type === ShareType.RemoteGroup || this.share.type === ShareType.Remote\n\t\t},\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\t\tisExpiryDateEnforced() {\n\t\t\tif (this.isPublicShare) {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t}\n\t\t\tif (this.isRemoteShare) {\n\t\t\t\treturn this.config.isDefaultRemoteExpireDateEnforced\n\t\t\t}\n\t\t\treturn this.config.isDefaultInternalExpireDateEnforced\n\t\t},\n\t\thasCustomPermissions() {\n\t\t\tconst bundledPermissions = [\n\t\t\t\tBUNDLED_PERMISSIONS.ALL,\n\t\t\t\tBUNDLED_PERMISSIONS.READ_ONLY,\n\t\t\t\tBUNDLED_PERMISSIONS.FILE_DROP,\n\t\t\t]\n\t\t\treturn !bundledPermissions.includes(this.share.permissions)\n\t\t},\n\t\tmaxExpirationDateEnforced() {\n\t\t\tif (this.isExpiryDateEnforced) {\n\t\t\t\tif (this.isPublicShare) {\n\t\t\t\t\treturn this.config.defaultExpirationDate\n\t\t\t\t}\n\t\t\t\tif (this.isRemoteShare) {\n\t\t\t\t\treturn this.config.defaultRemoteExpirationDateString\n\t\t\t\t}\n\t\t\t\t// If it get's here then it must be an internal share\n\t\t\t\treturn this.config.defaultInternalExpirationDate\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Fetch WebDAV node\n\t\t *\n\t\t * @return {Node}\n\t\t */\n\t\tasync getNode() {\n\t\t\tconst node = { path: this.path }\n\t\t\ttry {\n\t\t\t\tthis.node = await fetchNode(node.path)\n\t\t\t\tlogger.info('Fetched node:', { node: this.node })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Error:', error)\n\t\t\t}\n\t\t},\n\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 {Date} date the date to format\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\tconst formattedDate = date ? this.formatDateToString(new Date(date)) : ''\n\t\t\tthis.share.expireDate = formattedDate\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\tawait this.getNode()\n\t\t\t\temit('files:node:updated', this.node)\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 (this.share[name] === null || this.share[name] === undefined) {\n\t\t\t\t\t\tproperties[name] = ''\n\t\t\t\t\t} else if ((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\treturn this.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(this.updateSuccessMessage(propertyNames))\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tlogger.error('Could not update share', { error, share: this.share, propertyNames })\n\n\t\t\t\t\t\tconst { message } = error\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(message)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// We do not have information what happened, but we should still inform the user\n\t\t\t\t\t\t\tshowError(t('files_sharing', 'Could not update share'))\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}\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 * @param {string[]} names Properties changed\n\t\t */\n\t\tupdateSuccessMessage(names) {\n\t\t\tif (names.length !== 1) {\n\t\t\t\treturn t('files_sharing', 'Share saved')\n\t\t\t}\n\n\t\t\tswitch (names[0]) {\n\t\t\tcase 'expireDate':\n\t\t\t\treturn t('files_sharing', 'Share expiry date saved')\n\t\t\tcase 'hideDownload':\n\t\t\t\treturn t('files_sharing', 'Share hide-download state saved')\n\t\t\tcase 'label':\n\t\t\t\treturn t('files_sharing', 'Share label saved')\n\t\t\tcase 'note':\n\t\t\t\treturn t('files_sharing', 'Share note for recipient saved')\n\t\t\tcase 'password':\n\t\t\t\treturn t('files_sharing', 'Share password saved')\n\t\t\tcase 'permissions':\n\t\t\t\treturn t('files_sharing', 'Share permissions saved')\n\t\t\tdefault:\n\t\t\t\treturn t('files_sharing', 'Share saved')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\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 - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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/components/NcAvatar'\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActionLink from '@nextcloud/vue/components/NcActionLink'\nimport NcActionText from '@nextcloud/vue/components/NcActionText'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\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\tpadding-inline-start: 10px;\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-inline-start: 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=fe8ed59e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=fe8ed59e&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=fe8ed59e&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=fe8ed59e&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 \"fe8ed59e\",\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 }","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 - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<ul v-if=\"shares.length\" 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/components/NcActionButton'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share.ts'\nimport SharingEntryInherited from '../components/SharingEntryInherited.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\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 accounts 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","\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=a6cc72e6&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=a6cc72e6&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=a6cc72e6&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=a6cc72e6&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 \"a6cc72e6\",\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\",attrs:{\"aria-label\":_vm.t('files_sharing', 'Link shares')}},[(!_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,\"open-sharing-details\":function($event){return _vm.openSharingDetails(share)}}})}):_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon tune-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TuneIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tune.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tune.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Tune.vue?vue&type=template&id=18d04e6a\"\nimport script from \"./Tune.vue?vue&type=script&lang=js\"\nexport * from \"./Tune.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon tune-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarBlank.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarBlank.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon calendar-blank-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CalendarBlankIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./CalendarBlank.vue?vue&type=template&id=41fe7db9\"\nimport script from \"./CalendarBlank.vue?vue&type=script&lang=js\"\nexport * from \"./CalendarBlank.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon calendar-blank-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Qrcode.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Qrcode.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon qrcode-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"QrcodeIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Qrcode.vue?vue&type=template&id=aba87788\"\nimport script from \"./Qrcode.vue?vue&type=script&lang=js\"\nexport * from \"./Qrcode.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon qrcode-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Exclamation.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Exclamation.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon exclamation-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M 11,4L 13,4L 13,15L 11,15L 11,4 Z M 13,18L 13,20L 11,20L 11,18L 13,18 Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ExclamationIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Exclamation.vue?vue&type=template&id=03239926\"\nimport script from \"./Exclamation.vue?vue&type=script&lang=js\"\nexport * from \"./Exclamation.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon exclamation-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M 11,4L 13,4L 13,15L 11,15L 11,4 Z M 13,18L 13,20L 11,20L 11,18L 13,18 Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Lock.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Lock.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon lock-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"LockIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Lock.vue?vue&type=template&id=6d856da2\"\nimport script from \"./Lock.vue?vue&type=script&lang=js\"\nexport * from \"./Lock.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon lock-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckBold.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckBold.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon check-bold-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CheckBoldIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./CheckBold.vue?vue&type=template&id=5603f41f\"\nimport script from \"./CheckBold.vue?vue&type=script&lang=js\"\nexport * from \"./CheckBold.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon check-bold-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon triangle-small-down-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M8 9H16L12 16\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TriangleSmallDownIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TriangleSmallDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TriangleSmallDown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TriangleSmallDown.vue?vue&type=template&id=1eed3dd9\"\nimport script from \"./TriangleSmallDown.vue?vue&type=script&lang=js\"\nexport * from \"./TriangleSmallDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon triangle-small-down-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M8 9H16L12 16\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./EyeOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./EyeOutline.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./EyeOutline.vue?vue&type=template&id=e26de6f6\"\nimport script from \"./EyeOutline.vue?vue&type=script&lang=js\"\nexport * from \"./EyeOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon eye-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon file-upload-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13.5,16V19H10.5V16H8L12,12L16,16H13.5M13,9V3.5L18.5,9H13Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FileUploadIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FileUpload.vue?vue&type=template&id=caa55e94\"\nimport script from \"./FileUpload.vue?vue&type=script&lang=js\"\nexport * from \"./FileUpload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon file-upload-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13.5,16V19H10.5V16H8L12,12L16,16H13.5M13,9V3.5L18.5,9H13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<NcActions ref=\"quickShareActions\"\n\t\tclass=\"share-select\"\n\t\t:menu-name=\"selectedOption\"\n\t\t:aria-label=\"ariaLabel\"\n\t\ttype=\"tertiary-no-background\"\n\t\t:disabled=\"!share.canEdit\"\n\t\tforce-name>\n\t\t<template #icon>\n\t\t\t<DropdownIcon :size=\"15\" />\n\t\t</template>\n\t\t<NcActionButton v-for=\"option in options\"\n\t\t\t:key=\"option.label\"\n\t\t\ttype=\"radio\"\n\t\t\t:model-value=\"option.label === selectedOption\"\n\t\t\tclose-after-click\n\t\t\t@click=\"selectOption(option.label)\">\n\t\t\t<template #icon>\n\t\t\t\t<component :is=\"option.icon\" />\n\t\t\t</template>\n\t\t\t{{ option.label }}\n\t\t</NcActionButton>\n\t</NcActions>\n</template>\n\n<script>\nimport { ShareType } from '@nextcloud/sharing'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport DropdownIcon from 'vue-material-design-icons/TriangleSmallDown.vue'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport NcActions from '@nextcloud/vue/components/NcActions'\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport IconEyeOutline from 'vue-material-design-icons/EyeOutline.vue'\nimport IconPencil from 'vue-material-design-icons/Pencil.vue'\nimport IconFileUpload from 'vue-material-design-icons/FileUpload.vue'\nimport IconTune from 'vue-material-design-icons/Tune.vue'\n\nimport {\n\tBUNDLED_PERMISSIONS,\n\tATOMIC_PERMISSIONS,\n} from '../lib/SharePermissionsToolBox.js'\n\nexport default {\n\tname: 'SharingEntryQuickShareSelect',\n\n\tcomponents: {\n\t\tDropdownIcon,\n\t\tNcActions,\n\t\tNcActionButton,\n\t},\n\n\tmixins: [SharesMixin, ShareDetails],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\temits: ['open-sharing-details'],\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedOption: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tariaLabel() {\n\t\t\treturn t('files_sharing', 'Quick share options, the current selected is \"{selectedOption}\"', { selectedOption: this.selectedOption })\n\t\t},\n\t\tcanViewText() {\n\t\t\treturn t('files_sharing', 'View only')\n\t\t},\n\t\tcanEditText() {\n\t\t\treturn t('files_sharing', 'Can edit')\n\t\t},\n\t\tfileDropText() {\n\t\t\treturn t('files_sharing', 'File request')\n\t\t},\n\t\tcustomPermissionsText() {\n\t\t\treturn t('files_sharing', 'Custom permissions')\n\t\t},\n\t\tpreSelectedOption() {\n\t\t\t// We remove the share permission for the comparison as it is not relevant for bundled permissions.\n\t\t\tif ((this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === BUNDLED_PERMISSIONS.READ_ONLY) {\n\t\t\t\treturn this.canViewText\n\t\t\t} else if (this.share.permissions === BUNDLED_PERMISSIONS.ALL || this.share.permissions === BUNDLED_PERMISSIONS.ALL_FILE) {\n\t\t\t\treturn this.canEditText\n\t\t\t} else if ((this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === BUNDLED_PERMISSIONS.FILE_DROP) {\n\t\t\t\treturn this.fileDropText\n\t\t\t}\n\n\t\t\treturn this.customPermissionsText\n\n\t\t},\n\t\toptions() {\n\t\t\tconst options = [{\n\t\t\t\tlabel: this.canViewText,\n\t\t\t\ticon: IconEyeOutline,\n\t\t\t}, {\n\t\t\t\tlabel: this.canEditText,\n\t\t\t\ticon: IconPencil,\n\t\t\t}]\n\t\t\tif (this.supportsFileDrop) {\n\t\t\t\toptions.push({\n\t\t\t\t\tlabel: this.fileDropText,\n\t\t\t\t\ticon: IconFileUpload,\n\t\t\t\t})\n\t\t\t}\n\t\t\toptions.push({\n\t\t\t\tlabel: this.customPermissionsText,\n\t\t\t\ticon: IconTune,\n\t\t\t})\n\n\t\t\treturn options\n\t\t},\n\t\tsupportsFileDrop() {\n\t\t\tif (this.isFolder && this.config.isPublicUploadEnabled) {\n\t\t\t\tconst shareType = this.share.type ?? this.share.shareType\n\t\t\t\treturn [ShareType.Link, ShareType.Email].includes(shareType)\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tdropDownPermissionValue() {\n\t\t\tswitch (this.selectedOption) {\n\t\t\tcase this.canEditText:\n\t\t\t\treturn this.isFolder ? BUNDLED_PERMISSIONS.ALL : BUNDLED_PERMISSIONS.ALL_FILE\n\t\t\tcase this.fileDropText:\n\t\t\t\treturn BUNDLED_PERMISSIONS.FILE_DROP\n\t\t\tcase this.customPermissionsText:\n\t\t\t\treturn 'custom'\n\t\t\tcase this.canViewText:\n\t\t\tdefault:\n\t\t\t\treturn BUNDLED_PERMISSIONS.READ_ONLY\n\t\t\t}\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.selectedOption = this.preSelectedOption\n\t},\n\tmounted() {\n\t\tsubscribe('update:share', (share) => {\n\t\t\tif (share.id === this.share.id) {\n\t\t\t\tthis.share.permissions = share.permissions\n\t\t\t\tthis.selectedOption = this.preSelectedOption\n\t\t\t}\n\t\t})\n\t},\n\tunmounted() {\n\t\tunsubscribe('update:share')\n\t},\n\tmethods: {\n\t\tselectOption(optionLabel) {\n\t\t\tthis.selectedOption = optionLabel\n\t\t\tif (optionLabel === this.customPermissionsText) {\n\t\t\t\tthis.$emit('open-sharing-details')\n\t\t\t} else {\n\t\t\t\tthis.share.permissions = this.dropDownPermissionValue\n\t\t\t\tthis.queueUpdate('permissions')\n\t\t\t\t// TODO: Add a focus method to NcActions or configurable returnFocus enabling to NcActionButton with closeAfterClick\n\t\t\t\tthis.$refs.quickShareActions.$refs.menuButton.$el.focus()\n\t\t\t}\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.share-select {\n\tdisplay: block;\n\n\t// TODO: NcActions should have a slot for custom trigger button like NcPopover\n\t// Overrider NcActionms button to make it small\n\t:deep(.action-item__menutoggle) {\n\t\tcolor: var(--color-primary-element) !important;\n\t\tfont-size: 12.5px !important;\n\t\theight: auto !important;\n\t\tmin-height: auto !important;\n\n\t\t.button-vue__text {\n\t\t\tfont-weight: normal !important;\n\t\t}\n\n\t\t.button-vue__icon {\n\t\t\theight: 24px !important;\n\t\t\tmin-height: 24px !important;\n\t\t\twidth: 24px !important;\n\t\t\tmin-width: 24px !important;\n\t\t}\n\n\t\t.button-vue__wrapper {\n\t\t\t// Emulate NcButton's alignment=center-reverse\n\t\t\tflex-direction: row-reverse !important;\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!./SharingEntryQuickShareSelect.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!./SharingEntryQuickShareSelect.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!./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=2aa230f1&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=2aa230f1&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryQuickShareSelect.vue?vue&type=template&id=2aa230f1&scoped=true\"\nimport script from \"./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js\"\nexport * from \"./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js\"\nimport style0 from \"./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=2aa230f1&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 \"2aa230f1\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',{ref:\"quickShareActions\",staticClass:\"share-select\",attrs:{\"menu-name\":_vm.selectedOption,\"aria-label\":_vm.ariaLabel,\"type\":\"tertiary-no-background\",\"disabled\":!_vm.share.canEdit,\"force-name\":\"\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DropdownIcon',{attrs:{\"size\":15}})]},proxy:true}])},[_vm._v(\" \"),_vm._l((_vm.options),function(option){return _c('NcActionButton',{key:option.label,attrs:{\"type\":\"radio\",\"model-value\":option.label === _vm.selectedOption,\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.selectOption(option.label)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(option.icon,{tag:\"component\"})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\"+_vm._s(option.label)+\"\\n\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"share-expiry-time\"},[_c('NcPopover',{attrs:{\"popup-role\":\"dialog\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [(_vm.expiryTime)?_c('NcButton',{staticClass:\"hint-icon\",attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('files_sharing', 'Share expiration: ') + new Date(_vm.expiryTime).toLocaleString()},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ClockIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,3754271979)}):_vm._e()]},proxy:true}])},[_vm._v(\" \"),_c('h3',{staticClass:\"hint-heading\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share Expiration'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.expiryTime)?_c('p',{staticClass:\"hint-body\"},[_c('NcDateTime',{attrs:{\"timestamp\":_vm.expiryTime,\"format\":_vm.timeFormat,\"relative-time\":false}}),_vm._v(\" (\"),_c('NcDateTime',{attrs:{\"timestamp\":_vm.expiryTime}}),_vm._v(\")\\n\\t\\t\")],1):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon clock-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ClockIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clock.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clock.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Clock.vue?vue&type=template&id=539578bc\"\nimport script from \"./Clock.vue?vue&type=script&lang=js\"\nexport * from \"./Clock.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon clock-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareExpiryTime.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!./ShareExpiryTime.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<div class=\"share-expiry-time\">\n\t\t<NcPopover popup-role=\"dialog\">\n\t\t\t<template #trigger>\n\t\t\t\t<NcButton v-if=\"expiryTime\"\n\t\t\t\t\tclass=\"hint-icon\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t:aria-label=\"t('files_sharing', 'Share expiration: ') + new Date(expiryTime).toLocaleString()\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<ClockIcon :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\t\t\t</template>\n\t\t\t<h3 class=\"hint-heading\">\n\t\t\t\t{{ t('files_sharing', 'Share Expiration') }}\n\t\t\t</h3>\n\t\t\t<p v-if=\"expiryTime\" class=\"hint-body\">\n\t\t\t\t<NcDateTime :timestamp=\"expiryTime\"\n\t\t\t\t\t:format=\"timeFormat\"\n\t\t\t\t\t:relative-time=\"false\" /> (<NcDateTime :timestamp=\"expiryTime\" />)\n\t\t\t</p>\n\t\t</NcPopover>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcPopover from '@nextcloud/vue/components/NcPopover'\nimport NcDateTime from '@nextcloud/vue/components/NcDateTime'\nimport ClockIcon from 'vue-material-design-icons/Clock.vue'\n\nexport default {\n\tname: 'ShareExpiryTime',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcPopover,\n\t\tNcDateTime,\n\t\tClockIcon,\n\t},\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\texpiryTime() {\n\t\t\treturn this.share?.expireDate ? new Date(this.share.expireDate).getTime() : null\n\t\t},\n\t\ttimeFormat() {\n\t\t\treturn { dateStyle: 'full', timeStyle: 'short' }\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.share-expiry-time {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n .hint-icon {\n padding: 0;\n margin: 0;\n width: 24px;\n height: 24px;\n }\n}\n\n.hint-heading {\n text-align: center;\n font-size: 1rem;\n margin-top: 8px;\n padding-bottom: 8px;\n margin-bottom: 0;\n border-bottom: 1px solid var(--color-border);\n}\n\n.hint-body {\n padding: var(--border-radius-element);\n max-width: 300px;\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!./ShareExpiryTime.vue?vue&type=style&index=0&id=66d8c844&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./ShareExpiryTime.vue?vue&type=style&index=0&id=66d8c844&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ShareExpiryTime.vue?vue&type=template&id=66d8c844&scoped=true\"\nimport script from \"./ShareExpiryTime.vue?vue&type=script&lang=js\"\nexport * from \"./ShareExpiryTime.vue?vue&type=script&lang=js\"\nimport style0 from \"./ShareExpiryTime.vue?vue&type=style&index=0&id=66d8c844&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 \"66d8c844\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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 - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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.ts'\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=2812a40a\"\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 * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport Config from '../services/ConfigService.ts';\nimport { showError, showSuccess } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nconst config = new Config();\n// note: some chars removed on purpose to make them human friendly when read out\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789';\n/**\n * Generate a valid policy password or request a valid password if password_policy is enabled\n *\n * @param {boolean} verbose If enabled the the status is shown to the user via toast\n */\nexport default async function (verbose = false) {\n // password policy is enabled, let's request a pass\n if (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n try {\n const request = await axios.get(config.passwordPolicy.api.generate);\n if (request.data.ocs.data.password) {\n if (verbose) {\n showSuccess(t('files_sharing', 'Password created successfully'));\n }\n return request.data.ocs.data.password;\n }\n }\n catch (error) {\n console.info('Error generating password from password_policy', error);\n if (verbose) {\n showError(t('files_sharing', 'Error generating password from password policy'));\n }\n }\n }\n const array = new Uint8Array(10);\n const ratio = passwordSet.length / 255;\n self.crypto.getRandomValues(array);\n let password = '';\n for (let i = 0; i < array.length; i++) {\n password += passwordSet.charAt(array[i] * ratio);\n }\n return password;\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<li :class=\"{ 'sharing-entry--share': share }\"\n\t\tclass=\"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\n\t\t<div class=\"sharing-entry__summary\">\n\t\t\t<div class=\"sharing-entry__desc\">\n\t\t\t\t<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t\t{{ title }}\n\t\t\t\t</span>\n\t\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t\t{{ subtitle }}\n\t\t\t\t</p>\n\t\t\t\t<SharingEntryQuickShareSelect v-if=\"share && share.permissions !== undefined\"\n\t\t\t\t\t:share=\"share\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t@open-sharing-details=\"openShareDetailsForCustomSettings(share)\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"sharing-entry__actions\">\n\t\t\t\t<ShareExpiryTime v-if=\"share && share.expireDate\" :share=\"share\" />\n\n\t\t\t\t<!-- clipboard -->\n\t\t\t\t<div>\n\t\t\t\t\t<NcActions v-if=\"share && (!isEmailShareType || isFileRequest) && share.token\" ref=\"copyButton\" class=\"sharing-entry__copy\">\n\t\t\t\t\t\t<NcActionButton :aria-label=\"copyLinkTooltip\"\n\t\t\t\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\t\t\t\t:href=\"shareLink\"\n\t\t\t\t\t\t\t@click.prevent=\"copyLink\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<CheckIcon v-if=\"copied && copySuccess\"\n\t\t\t\t\t\t\t\t\t:size=\"20\"\n\t\t\t\t\t\t\t\t\tclass=\"icon-checkmark-color\" />\n\t\t\t\t\t\t\t\t<ClipboardIcon v-else :size=\"20\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t</NcActions>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && pendingDataIsMissing\"\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=\"onCancel\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<NcActionText v-if=\"errors.pending\"\n\t\t\t\tclass=\"error\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<ErrorIcon :size=\"20\" />\n\t\t\t\t</template>\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<NcActionCheckbox v-if=\"pendingPassword\"\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{{ config.enforcePasswordForPublicLink ? t('files_sharing', 'Password protection (enforced)') : t('files_sharing', 'Password protection') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<NcActionInput v-if=\"pendingEnforcedPassword || share.password\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:label=\"t('files_sharing', 'Enter a 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\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare(true)\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<LockIcon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcActionInput>\n\n\t\t\t<NcActionCheckbox v-if=\"pendingDefaultExpirationDate\"\n\t\t\t\t:checked.sync=\"defaultExpirationDateEnabled\"\n\t\t\t\t:disabled=\"pendingEnforcedExpirationDate || saving\"\n\t\t\t\tclass=\"share-link-expiration-date-checkbox\"\n\t\t\t\t@update:model-value=\"onExpirationDateToggleUpdate\">\n\t\t\t\t{{ config.isDefaultExpireDateEnforced ? t('files_sharing', 'Enable link expiration (enforced)') : t('files_sharing', 'Enable link expiration') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<NcActionInput v-if=\"(pendingDefaultExpirationDate || pendingEnforcedExpirationDate) && defaultExpirationDateEnabled\"\n\t\t\t\tdata-cy-files-sharing-expiration-date-input\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:label=\"pendingEnforcedExpirationDate ? t('files_sharing', 'Enter expiration date (enforced)') : t('files_sharing', 'Enter expiration 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=\"maxExpirationDateEnforced\"\n\t\t\t\t@change=\"expirationDateChanged($event)\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconCalendarBlank :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcActionInput>\n\n\t\t\t<NcActionButton @click.prevent.stop=\"onNewLinkShare(true)\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CheckIcon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton @click.prevent.stop=\"onCancel\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon :size=\"20\" />\n\t\t\t\t</template>\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<NcActionButton :disabled=\"saving\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t@click.prevent=\"openSharingDetails\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Customize link') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<NcActionButton :close-after-click=\"true\"\n\t\t\t\t\t@click.prevent=\"showQRCode = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconQr :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_sharing', 'Generate QR code') }}\n\t\t\t\t</NcActionButton>\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 }, actionIndex) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"actionIndex\"\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=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<PlusIcon :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</NcActionButton>\n\n\t\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<CloseIcon :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\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\n\t\t<!-- Modal to open whenever we have a QR code -->\n\t\t<NcDialog v-if=\"showQRCode\"\n\t\t\tsize=\"normal\"\n\t\t\t:open.sync=\"showQRCode\"\n\t\t\t:name=\"title\"\n\t\t\t:close-on-click-outside=\"true\"\n\t\t\t@close=\"showQRCode = false\">\n\t\t\t<div class=\"qr-code-dialog\">\n\t\t\t\t<VueQrcode tag=\"img\"\n\t\t\t\t\t:value=\"shareLink\"\n\t\t\t\t\tclass=\"qr-code-dialog__img\" />\n\t\t\t</div>\n\t\t</NcDialog>\n\t</li>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport { generateUrl, getBaseUrl } from '@nextcloud/router'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { ShareType } from '@nextcloud/sharing'\nimport VueQrcode from '@chenfengyuan/vue-qrcode'\nimport moment from '@nextcloud/moment'\nimport Vue from 'vue'\n\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActionCheckbox from '@nextcloud/vue/components/NcActionCheckbox'\nimport NcActionInput from '@nextcloud/vue/components/NcActionInput'\nimport NcActionLink from '@nextcloud/vue/components/NcActionLink'\nimport NcActionText from '@nextcloud/vue/components/NcActionText'\nimport NcActionSeparator from '@nextcloud/vue/components/NcActionSeparator'\nimport NcActions from '@nextcloud/vue/components/NcActions'\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport NcDialog from '@nextcloud/vue/components/NcDialog'\n\nimport Tune from 'vue-material-design-icons/Tune.vue'\nimport IconCalendarBlank from 'vue-material-design-icons/CalendarBlank.vue'\nimport IconQr from 'vue-material-design-icons/Qrcode.vue'\nimport ErrorIcon from 'vue-material-design-icons/Exclamation.vue'\nimport LockIcon from 'vue-material-design-icons/Lock.vue'\nimport CheckIcon from 'vue-material-design-icons/CheckBold.vue'\nimport ClipboardIcon from 'vue-material-design-icons/ContentCopy.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\nimport PlusIcon from 'vue-material-design-icons/Plus.vue'\n\nimport SharingEntryQuickShareSelect from './SharingEntryQuickShareSelect.vue'\nimport ShareExpiryTime from './ShareExpiryTime.vue'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport GeneratePassword from '../utils/GeneratePassword.ts'\nimport Share from '../models/Share.ts'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tExternalShareAction,\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcActionSeparator,\n\t\tNcAvatar,\n\t\tNcDialog,\n\t\tVueQrcode,\n\t\tTune,\n\t\tIconCalendarBlank,\n\t\tIconQr,\n\t\tErrorIcon,\n\t\tLockIcon,\n\t\tCheckIcon,\n\t\tClipboardIcon,\n\t\tCloseIcon,\n\t\tPlusIcon,\n\t\tSharingEntryQuickShareSelect,\n\t\tShareExpiryTime,\n\t},\n\n\tmixins: [SharesMixin, ShareDetails],\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\tshareCreationComplete: false,\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\t\t\tdefaultExpirationDateEnabled: 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\tlogger: getLoggerBuilder()\n\t\t\t\t.setApp('files_sharing')\n\t\t\t\t.detectUser()\n\t\t\t\t.build(),\n\n\t\t\t// tracks whether modal should be opened or not\n\t\t\tshowQRCode: false,\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\tif (this.isFileRequest) {\n\t\t\t\t\t\t\treturn t('files_sharing', 'File request ({label})', {\n\t\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\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\tif (!this.share.shareWith || this.share.shareWith.trim() === '') {\n\t\t\t\t\t\treturn this.isFileRequest\n\t\t\t\t\t\t\t? t('files_sharing', 'File request')\n\t\t\t\t\t\t\t: t('files_sharing', 'Mail share')\n\t\t\t\t\t}\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\n\t\t\t\tif (this.index === null) {\n\t\t\t\t\treturn t('files_sharing', 'Share link')\n\t\t\t\t}\n\t\t\t}\n\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\n\t\t\treturn t('files_sharing', 'Create public 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\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(true) : '')\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 === ShareType.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\tpendingDataIsMissing() {\n\t\t\treturn this.pendingPassword || this.pendingEnforcedPassword || this.pendingDefaultExpirationDate || this.pendingEnforcedExpirationDate\n\t\t},\n\t\tpendingPassword() {\n\t\t\treturn this.config.enableLinkPasswordByDefault && this.isPendingShare\n\t\t},\n\t\tpendingEnforcedPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.isPendingShare\n\t\t},\n\t\tpendingEnforcedExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.isPendingShare\n\t\t},\n\t\tpendingDefaultExpirationDate() {\n\t\t\treturn (this.config.defaultExpirationDate instanceof Date || !isNaN(new Date(this.config.defaultExpirationDate).getTime())) && this.isPendingShare\n\t\t},\n\t\tisPendingShare() {\n\t\t\treturn !!(this.share && !this.share.id)\n\t\t},\n\t\tsharePolicyHasEnforcedProperties() {\n\t\t\treturn this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced\n\t\t},\n\n\t\tenforcedPropertiesMissing() {\n\t\t\t// Ensure share exist and the share policy has required properties\n\t\t\tif (!this.sharePolicyHasEnforcedProperties) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif (!this.share) {\n\t\t\t\t// if no share, we can't tell if properties are missing or not so we assume properties are missing\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// If share has ID, then this is an incoming link share created from the existing link share\n\t\t\t// Hence assume required properties\n\t\t\tif (this.share.id) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Check if either password or expiration date is missing and enforced\n\t\t\tconst isPasswordMissing = this.config.enforcePasswordForPublicLink && !this.share.password\n\t\t\tconst isExpireDateMissing = this.config.isDefaultExpireDateEnforced && !this.share.expireDate\n\n\t\t\treturn isPasswordMissing || isExpireDateMissing\n\t\t},\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 generateUrl('/s/{token}', { token: this.share.token }, { baseURL: getBaseUrl() })\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\tconst filterValidAction = (action) => (action.shareType.includes(ShareType.Link) || action.shareType.includes(ShareType.Email)) && !action.advanced\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(filterValidAction)\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.scope === 'permissions' && shareAttribute.key === 'download' && shareAttribute.value === false\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\n\t\tisFileRequest() {\n\t\t\treturn this.share.isFileRequest\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.defaultExpirationDateEnabled = this.config.defaultExpirationDate instanceof Date\n\t\tif (this.share && this.isNewShare) {\n\t\t\tthis.share.expireDate = this.defaultExpirationDateEnabled ? this.formatDateToString(this.config.defaultExpirationDate) : ''\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if the share requires review\n\t\t *\n\t\t * @param {boolean} shareReviewComplete if the share was reviewed\n\t\t * @return {boolean}\n\t\t */\n\t\tshareRequiresReview(shareReviewComplete) {\n\t\t\t// If a user clicks 'Create share' it means they have reviewed the share\n\t\t\tif (shareReviewComplete) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.defaultExpirationDateEnabled || this.config.enableLinkPasswordByDefault\n\t\t},\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t * @param {boolean} shareReviewComplete if the share was reviewed\n\t\t */\n\t\tasync onNewLinkShare(shareReviewComplete = false) {\n\t\t\tthis.logger.debug('onNewLinkShare called (with this.share)', this.share)\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: ShareType.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\n\t\t\tthis.logger.debug('Missing required properties?', this.enforcedPropertiesMissing)\n\t\t\t// Do not push yet if we need a password or an expiration date: show pending menu\n\t\t\t// A share would require a review for example is default expiration date is set but not enforced, this allows\n\t\t\t// the user to review the share and remove the expiration date if they don't want it\n\t\t\tif ((this.sharePolicyHasEnforcedProperties && this.enforcedPropertiesMissing) || this.shareRequiresReview(shareReviewComplete === true)) {\n\t\t\t\tthis.pending = true\n\t\t\t\tthis.shareCreationComplete = false\n\n\t\t\t\tthis.logger.info('Share policy requires a review or has mandated properties (password, expirationDate)...')\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password default or enforced, pre-fill with random one\n\t\t\t\tif (this.config.enableLinkPasswordByDefault || this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword(true)\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\t// Nothing is enforced, creating share directly\n\t\t\t} else {\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\tthis.logger.info('Sending existing share to server', this.share)\n\t\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\t\tthis.shareCreationComplete = true\n\t\t\t\t\t\t\tthis.logger.info('Share created on server', this.share)\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\tthis.logger.error('Error creating share', 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\tshowError(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\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t\tthis.shareCreationComplete = true\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] 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: ShareType.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 requests\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\tthis.shareCreationComplete = true\n\t\t\t\tconsole.debug('Link share created', newShare)\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\tawait this.getNode()\n\t\t\t\temit('files:node:updated', this.node)\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('files_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('files_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\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t\tthis.shareCreationComplete = true\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 * @param enabled True if expiration is enabled\n\t\t */\n\t\tonExpirationDateToggleUpdate(enabled) {\n\t\t\tthis.share.expireDate = enabled ? this.formatDateToString(this.config.defaultExpirationDate) : ''\n\t\t},\n\n\t\texpirationDateChanged(event) {\n\t\t\tconst date = event.target.value\n\t\t\tthis.onExpirationChange(date)\n\t\t\tthis.defaultExpirationDateEnabled = !!date\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\tif (!this.shareCreationComplete) {\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t}\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\n\t&__summary {\n\t\tpadding: 8px;\n\t\tpadding-inline-start: 10px;\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tflex: 1 0;\n\t\tmin-width: 0;\n\t}\n\n\t\t&__desc {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tline-height: 1.2em;\n\n\t\t\tp {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\n\t\t\t&__title {\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\t\t}\n\n\t\t&__actions {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tmargin-inline-start: auto;\n\t\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:deep(.avatar-link-share) {\n\t\tbackground-color: var(--color-primary-element);\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-inline-start: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\n\t\t~.action-item,\n\t\t~.sharing-entry__loading {\n\t\t\tmargin-inline-start: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t\tcolor: var(--color-success);\n\t}\n}\n\n// styling for the qr-code container\n.qr-code-dialog {\n\tdisplay: flex;\n\twidth: 100%;\n\tjustify-content: center;\n\n\t&__img {\n\t\twidth: 100%;\n\t\theight: 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!./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=43291a73&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=43291a73&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=43291a73&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=43291a73&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 \"43291a73\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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 - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<ul v-if=\"canLinkShare\"\n\t\t:aria-label=\"t('files_sharing', 'Link shares')\"\n\t\tclass=\"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\t\t@open-sharing-details=\"openSharingDetails(share)\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\nimport { getCapabilities } from '@nextcloud/capabilities'\n\nimport { t } from '@nextcloud/l10n'\n\nimport Share from '../models/Share.js'\nimport SharingEntryLink from '../components/SharingEntryLink.vue'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport { ShareType } from '@nextcloud/sharing'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareDetails],\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: 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 === ShareType.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\tt,\n\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.push(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","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__summary\"},[_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\",attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share && _vm.share.permissions !== undefined)?_c('SharingEntryQuickShareSelect',{attrs:{\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"open-sharing-details\":function($event){return _vm.openShareDetailsForCustomSettings(_vm.share)}}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__actions\"},[(_vm.share && _vm.share.expireDate)?_c('ShareExpiryTime',{attrs:{\"share\":_vm.share}}):_vm._e(),_vm._v(\" \"),_c('div',[(_vm.share && (!_vm.isEmailShareType || _vm.isFileRequest) && _vm.share.token)?_c('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionButton',{attrs:{\"aria-label\":_vm.copyLinkTooltip,\"title\":_vm.copyLinkTooltip,\"href\":_vm.shareLink},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.copied && _vm.copySuccess)?_c('CheckIcon',{staticClass:\"icon-checkmark-color\",attrs:{\"size\":20}}):_c('ClipboardIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,4269614823)})],1):_vm._e()],1)],1)]),_vm._v(\" \"),(!_vm.pending && _vm.pendingDataIsMissing)?_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.onCancel}},[(_vm.errors.pending)?_c('NcActionText',{staticClass:\"error\",scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ErrorIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,1966124155)},[_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('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.config.enforcePasswordForPublicLink ? _vm.t('files_sharing', 'Password protection (enforced)') : _vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingEnforcedPassword || _vm.share.password)?_c('NcActionInput',{staticClass:\"share-link-password\",attrs:{\"label\":_vm.t('files_sharing', 'Enter a password'),\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":function($event){return _vm.onNewLinkShare(true)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('LockIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2056568168)}):_vm._e(),_vm._v(\" \"),(_vm.pendingDefaultExpirationDate)?_c('NcActionCheckbox',{staticClass:\"share-link-expiration-date-checkbox\",attrs:{\"checked\":_vm.defaultExpirationDateEnabled,\"disabled\":_vm.pendingEnforcedExpirationDate || _vm.saving},on:{\"update:checked\":function($event){_vm.defaultExpirationDateEnabled=$event},\"update:model-value\":_vm.onExpirationDateToggleUpdate}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced ? _vm.t('files_sharing', 'Enable link expiration (enforced)') : _vm.t('files_sharing', 'Enable link expiration'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),((_vm.pendingDefaultExpirationDate || _vm.pendingEnforcedExpirationDate) && _vm.defaultExpirationDateEnabled)?_c('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"data-cy-files-sharing-expiration-date-input\":\"\",\"label\":_vm.pendingEnforcedExpirationDate ? _vm.t('files_sharing', 'Enter expiration date (enforced)') : _vm.t('files_sharing', 'Enter expiration date'),\"disabled\":_vm.saving,\"is-native-picker\":true,\"hide-label\":true,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.maxExpirationDateEnforced},on:{\"change\":function($event){return _vm.expirationDateChanged($event)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconCalendarBlank',{attrs:{\"size\":20}})]},proxy:true}],null,false,3418578971)}):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare(true)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CheckIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2630571749)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CloseIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2428343285)},[_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('NcActionButton',{attrs:{\"disabled\":_vm.saving,\"close-after-click\":true},on:{\"click\":function($event){$event.preventDefault();return _vm.openSharingDetails.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune',{attrs:{\"size\":20}})]},proxy:true}],null,false,1300586850)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Customize link'))+\"\\n\\t\\t\\t\\t\")])]:_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){$event.preventDefault();_vm.showQRCode = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconQr',{attrs:{\"size\":20}})]},proxy:true}],null,false,1082198240)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Generate QR code'))+\"\\n\\t\\t\\t\")]),_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 },actionIndex){return _c('NcActionLink',{key:actionIndex,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.isEmailShareType && _vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PlusIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2953566425)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CloseIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2428343285)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\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\"}),_vm._v(\" \"),(_vm.showQRCode)?_c('NcDialog',{attrs:{\"size\":\"normal\",\"open\":_vm.showQRCode,\"name\":_vm.title,\"close-on-click-outside\":true},on:{\"update:open\":function($event){_vm.showQRCode=$event},\"close\":function($event){_vm.showQRCode = false}}},[_c('div',{staticClass:\"qr-code-dialog\"},[_c('VueQrcode',{staticClass:\"qr-code-dialog__img\",attrs:{\"tag\":\"img\",\"value\":_vm.shareLink}})],1)]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=5f722665\"\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 _c('ul',{staticClass:\"sharing-sharee-list\",attrs:{\"aria-label\":_vm.t('files_sharing', 'Shares')}},_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:{\"open-sharing-details\":function($event){return _vm.openSharingDetails(share)}}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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 !== ShareType.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<div class=\"sharing-entry__summary\">\n\t\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\t\t:title=\"tooltip\"\n\t\t\t\t:aria-label=\"tooltip\"\n\t\t\t\t:href=\"share.shareWithLink\"\n\t\t\t\tclass=\"sharing-entry__summary__desc\">\n\t\t\t\t<span>{{ title }}\n\t\t\t\t\t<span v-if=\"!isUnique\" class=\"sharing-entry__summary__desc-unique\"> ({{\n\t\t\t\t\t\tshare.shareWithDisplayNameUnique }})</span>\n\t\t\t\t\t<small v-if=\"hasStatus && share.status.message\">({{ share.status.message }})</small>\n\t\t\t\t</span>\n\t\t\t</component>\n\t\t\t<SharingEntryQuickShareSelect :share=\"share\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@open-sharing-details=\"openShareDetailsForCustomSettings(share)\" />\n\t\t</div>\n\t\t<ShareExpiryTime v-if=\"share && share.expireDate\" :share=\"share\" />\n\t\t<NcButton v-if=\"share.canEdit\"\n\t\t\tclass=\"sharing-entry__action\"\n\t\t\tdata-cy-files-sharing-share-actions\n\t\t\t:aria-label=\"t('files_sharing', 'Open Sharing Details')\"\n\t\t\ttype=\"tertiary\"\n\t\t\t@click=\"openSharingDetails(share)\">\n\t\t\t<template #icon>\n\t\t\t\t<DotsHorizontalIcon :size=\"20\" />\n\t\t\t</template>\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport { ShareType } from '@nextcloud/sharing'\n\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\n\nimport ShareExpiryTime from './ShareExpiryTime.vue'\nimport SharingEntryQuickShareSelect from './SharingEntryQuickShareSelect.vue'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcAvatar,\n\t\tDotsHorizontalIcon,\n\t\tNcSelect,\n\t\tShareExpiryTime,\n\t\tSharingEntryQuickShareSelect,\n\t},\n\n\tmixins: [SharesMixin, ShareDetails],\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === ShareType.Group) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === ShareType.Room) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === ShareType.Remote) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === ShareType.RemoteGroup) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === ShareType.Guest) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\ttitle += ' ' + t('files_sharing', 'by {initiator}', {\n\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn title\n\t\t},\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 === ShareType.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 === ShareType.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\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== ShareType.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\t},\n\n\tmethods: {\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&__summary {\n\t\tpadding: 8px;\n\t\tpadding-inline-start: 10px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: flex-start;\n\t\tflex: 1 0;\n\t\tmin-width: 0;\n\n\t\t&__desc {\n\t\t\tdisplay: inline-block;\n\t\t\tpadding-bottom: 0;\n\t\t\tline-height: 1.2em;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\n\t\t\tp,\n\t\t\tsmall {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\n\t\t\t&-unique {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\t\t}\n\t}\n\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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=2dbd45b5&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=2dbd45b5&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=2dbd45b5&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=2dbd45b5&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 \"2dbd45b5\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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\"","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<ul class=\"sharing-sharee-list\" :aria-label=\"t('files_sharing', 'Shares')\">\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@open-sharing-details=\"openSharingDetails(share)\" />\n\t</ul>\n</template>\n\n<script>\nimport { t } from '@nextcloud/l10n'\nimport SharingEntry from '../components/SharingEntry.vue'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport { ShareType } from '@nextcloud/sharing'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareDetails],\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\tsetup() {\n\t\treturn {\n\t\t\tt,\n\t\t}\n\t},\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 === ShareType.User && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n","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.ShareType.User,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__summary\"},[_c(_vm.share.shareWithLink ? 'a' : 'div',{tag:\"component\",staticClass:\"sharing-entry__summary__desc\",attrs:{\"title\":_vm.tooltip,\"aria-label\":_vm.tooltip,\"href\":_vm.share.shareWithLink}},[_c('span',[_vm._v(_vm._s(_vm.title)+\"\\n\\t\\t\\t\\t\"),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__summary__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e(),_vm._v(\" \"),(_vm.hasStatus && _vm.share.status.message)?_c('small',[_vm._v(\"(\"+_vm._s(_vm.share.status.message)+\")\")]):_vm._e()])]),_vm._v(\" \"),_c('SharingEntryQuickShareSelect',{attrs:{\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"open-sharing-details\":function($event){return _vm.openShareDetailsForCustomSettings(_vm.share)}}})],1),_vm._v(\" \"),(_vm.share && _vm.share.expireDate)?_c('ShareExpiryTime',{attrs:{\"share\":_vm.share}}):_vm._e(),_vm._v(\" \"),(_vm.share.canEdit)?_c('NcButton',{staticClass:\"sharing-entry__action\",attrs:{\"data-cy-files-sharing-share-actions\":\"\",\"aria-label\":_vm.t('files_sharing', 'Open Sharing Details'),\"type\":\"tertiary\"},on:{\"click\":function($event){return _vm.openSharingDetails(_vm.share)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DotsHorizontalIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,1700783217)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=5b9a3a03\"\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('div',{staticClass:\"sharingTabDetailsView\"},[_c('div',{staticClass:\"sharingTabDetailsView__header\"},[_c('span',[(_vm.isUserShare)?_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.shareType !== _vm.ShareType.User,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}):_vm._e(),_vm._v(\" \"),_c(_vm.getShareTypeIcon(_vm.share.type),{tag:\"component\",attrs:{\"size\":32}})],1),_vm._v(\" \"),_c('span',[_c('h1',[_vm._v(_vm._s(_vm.title))])])]),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__wrapper\"},[_c('div',{ref:\"quickPermissions\",staticClass:\"sharingTabDetailsView__quick-permissions\"},[_c('div',[_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"data-cy-files-sharing-share-permissions-bundle\":\"read-only\",\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.READ_ONLY.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ViewIcon',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'View only'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"data-cy-files-sharing-share-permissions-bundle\":\"upload-edit\",\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.ALL.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('EditIcon',{attrs:{\"size\":20}})]},proxy:true}])},[(_vm.allowsFileDrop)?[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\\t\\t\")]:[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\\t\\t\")]],2),_vm._v(\" \"),(_vm.allowsFileDrop)?_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-sharing-share-permissions-bundle\":\"file-drop\",\"button-variant\":true,\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.FILE_DROP.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('UploadIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,1083194048)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File request'))+\"\\n\\t\\t\\t\\t\\t\"),_c('small',{staticClass:\"subline\"},[_vm._v(_vm._s(_vm.t('files_sharing', 'Upload only')))])]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"data-cy-files-sharing-share-permissions-bundle\":\"custom\",\"checked\":_vm.sharingPermission,\"value\":'custom',\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.expandCustomPermissions]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DotsHorizontalIcon',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Custom permissions'))+\"\\n\\t\\t\\t\\t\\t\"),_c('small',{staticClass:\"subline\"},[_vm._v(_vm._s(_vm.customPermissionsList))])])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__advanced-control\"},[_c('NcButton',{attrs:{\"id\":\"advancedSectionAccordionAdvancedControl\",\"type\":\"tertiary\",\"alignment\":\"end-reverse\",\"aria-controls\":\"advancedSectionAccordionAdvanced\",\"aria-expanded\":_vm.advancedControlExpandedValue},on:{\"click\":function($event){_vm.advancedSectionAccordionExpanded = !_vm.advancedSectionAccordionExpanded}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!_vm.advancedSectionAccordionExpanded)?_c('MenuDownIcon'):_c('MenuUpIcon')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Advanced settings'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.advancedSectionAccordionExpanded)?_c('div',{staticClass:\"sharingTabDetailsView__advanced\",attrs:{\"id\":\"advancedSectionAccordionAdvanced\",\"aria-labelledby\":\"advancedSectionAccordionAdvancedControl\",\"role\":\"region\"}},[_c('section',[(_vm.isPublicShare)?_c('NcInputField',{staticClass:\"sharingTabDetailsView__label\",attrs:{\"autocomplete\":\"off\",\"label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.label},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"label\", $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.config.allowCustomTokens && _vm.isPublicShare && !_vm.isNewShare)?_c('NcInputField',{attrs:{\"autocomplete\":\"off\",\"label\":_vm.t('files_sharing', 'Share link token'),\"helper-text\":_vm.t('files_sharing', 'Set the public share link token to something easy to remember or generate a new token. It is not recommended to use a guessable token for shares which contain sensitive information.'),\"show-trailing-button\":\"\",\"trailing-button-label\":_vm.loadingToken ? _vm.t('files_sharing', 'Generating…') : _vm.t('files_sharing', 'Generate new token'),\"value\":_vm.share.token},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"token\", $event)},\"trailing-button-click\":_vm.generateNewToken},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [(_vm.loadingToken)?_c('NcLoadingIcon'):_c('Refresh',{attrs:{\"size\":20}})]},proxy:true}],null,false,4228062821)}):_vm._e(),_vm._v(\" \"),(_vm.isPublicShare)?[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.isPasswordEnforced},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Set password'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('NcPasswordField',{attrs:{\"autocomplete\":\"new-password\",\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '',\"error\":_vm.passwordError,\"helper-text\":_vm.errorPasswordLabel || _vm.passwordHint,\"required\":_vm.isPasswordEnforced && _vm.isNewShare,\"label\":_vm.t('files_sharing', 'Password')},on:{\"update:value\":_vm.onPasswordChange}}):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('span',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', { passwordExpirationTime: _vm.passwordExpirationTime }))+\"\\n\\t\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('span',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.canTogglePasswordProtectedByTalkAvailable)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.isPasswordProtectedByTalk},on:{\"update:checked\":[function($event){_vm.isPasswordProtectedByTalk=$event},_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('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.isExpiryDateEnforced},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.isExpiryDateEnforced\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('NcDateTimePickerNative',{attrs:{\"id\":\"share-date-picker\",\"value\":new Date(_vm.share.expireDate ?? _vm.dateTomorrow),\"min\":_vm.dateTomorrow,\"max\":_vm.maxExpirationDateEnforced,\"hide-label\":\"\",\"label\":_vm.t('files_sharing', 'Expiration date'),\"placeholder\":_vm.t('files_sharing', 'Expiration date'),\"type\":\"date\"},on:{\"input\":_vm.onExpirationChange}}):_vm._e(),_vm._v(\" \"),(_vm.isPublicShare)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":_vm.canChangeHideDownload,\"checked\":_vm.share.hideDownload},on:{\"update:checked\":[function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},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\")]):_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetDownload,\"checked\":_vm.canDownload,\"data-cy-files-sharing-share-permissions-checkbox\":\"download\"},on:{\"update:checked\":function($event){_vm.canDownload=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow download and sync'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.writeNoteToRecipientIsChecked},on:{\"update:checked\":function($event){_vm.writeNoteToRecipientIsChecked=$event}}},[_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.writeNoteToRecipientIsChecked)?[_c('NcTextArea',{attrs:{\"label\":_vm.t('files_sharing', 'Note to recipient'),\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.note},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"note\", $event)}}})]:_vm._e(),_vm._v(\" \"),(_vm.isPublicShare && _vm.isFolder)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.showInGridView},on:{\"update:checked\":function($event){_vm.showInGridView=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Show files in grid view'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,ref:\"externalLinkActions\",refInFor:true,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.setCustomPermissions},on:{\"update:checked\":function($event){_vm.setCustomPermissions=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Custom permissions'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.setCustomPermissions)?_c('section',{staticClass:\"custom-permissions-group\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canRemoveReadPermission,\"checked\":_vm.hasRead,\"data-cy-files-sharing-share-permissions-checkbox\":\"read\"},on:{\"update:checked\":function($event){_vm.hasRead=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetCreate,\"checked\":_vm.canCreate,\"data-cy-files-sharing-share-permissions-checkbox\":\"create\"},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetEdit,\"checked\":_vm.canEdit,\"data-cy-files-sharing-share-permissions-checkbox\":\"update\"},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.resharingIsPossible)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetReshare,\"checked\":_vm.canReshare,\"data-cy-files-sharing-share-permissions-checkbox\":\"share\"},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetDelete,\"checked\":_vm.canDelete,\"data-cy-files-sharing-share-permissions-checkbox\":\"delete\"},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__delete\"},[(!_vm.isNewShare)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('files_sharing', 'Delete share'),\"disabled\":false,\"readonly\":false,\"type\":\"tertiary\"},on:{\"click\":function($event){$event.preventDefault();return _vm.removeShare.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CloseIcon',{attrs:{\"size\":16}})]},proxy:true}],null,false,2746485232)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete share'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()],1)],2)]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__footer\"},[_c('div',{staticClass:\"button-group\"},[_c('NcButton',{attrs:{\"data-cy-files-sharing-share-editor-action\":\"cancel\"},on:{\"click\":_vm.cancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"data-cy-files-sharing-share-editor-action\":\"save\"},on:{\"click\":_vm.saveShare},scopedSlots:_vm._u([(_vm.creating)?{key:\"icon\",fn:function(){return [_c('NcLoadingIcon')]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.shareButtonText)+\"\\n\\t\\t\\t\\t\")])],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon circle-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CircleOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CircleOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CircleOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CircleOutline.vue?vue&type=template&id=c013567c\"\nimport script from \"./CircleOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CircleOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon circle-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon email-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EmailIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Email.vue?vue&type=template&id=7dd7f6aa\"\nimport script from \"./Email.vue?vue&type=script&lang=js\"\nexport * from \"./Email.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon email-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon share-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M14 16V13C10.39 13 7.81 14.43 6 17C6.72 13.33 8.94 9.73 14 9V6L19 11L14 16Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ShareCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ShareCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ShareCircle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ShareCircle.vue?vue&type=template&id=0e958886\"\nimport script from \"./ShareCircle.vue?vue&type=script&lang=js\"\nexport * from \"./ShareCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon share-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M14 16V13C10.39 13 7.81 14.43 6 17C6.72 13.33 8.94 9.73 14 9V6L19 11L14 16Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountCircleOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountCircleOutline.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon account-circle-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.07,18.28C7.5,17.38 10.12,16.5 12,16.5C13.88,16.5 16.5,17.38 16.93,18.28C15.57,19.36 13.86,20 12,20C10.14,20 8.43,19.36 7.07,18.28M18.36,16.83C16.93,15.09 13.46,14.5 12,14.5C10.54,14.5 7.07,15.09 5.64,16.83C4.62,15.5 4,13.82 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,13.82 19.38,15.5 18.36,16.83M12,6C10.06,6 8.5,7.56 8.5,9.5C8.5,11.44 10.06,13 12,13C13.94,13 15.5,11.44 15.5,9.5C15.5,7.56 13.94,6 12,6M12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountCircleOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./AccountCircleOutline.vue?vue&type=template&id=5b2fe1de\"\nimport script from \"./AccountCircleOutline.vue?vue&type=script&lang=js\"\nexport * from \"./AccountCircleOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon account-circle-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.07,18.28C7.5,17.38 10.12,16.5 12,16.5C13.88,16.5 16.5,17.38 16.93,18.28C15.57,19.36 13.86,20 12,20C10.14,20 8.43,19.36 7.07,18.28M18.36,16.83C16.93,15.09 13.46,14.5 12,14.5C10.54,14.5 7.07,15.09 5.64,16.83C4.62,15.5 4,13.82 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,13.82 19.38,15.5 18.36,16.83M12,6C10.06,6 8.5,7.56 8.5,9.5C8.5,11.44 10.06,13 12,13C13.94,13 15.5,11.44 15.5,9.5C15.5,7.56 13.94,6 12,6M12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Eye.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Eye.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Eye.vue?vue&type=template&id=4ae2345c\"\nimport script from \"./Eye.vue?vue&type=script&lang=js\"\nexport * from \"./Eye.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon eye-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon refresh-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"RefreshIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Refresh.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Refresh.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Refresh.vue?vue&type=template&id=2864f909\"\nimport script from \"./Refresh.vue?vue&type=script&lang=js\"\nexport * from \"./Refresh.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon refresh-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.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!./SharingDetailsTab.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<div class=\"sharingTabDetailsView\">\n\t\t<div class=\"sharingTabDetailsView__header\">\n\t\t\t<span>\n\t\t\t\t<NcAvatar v-if=\"isUserShare\"\n\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t:is-no-user=\"share.shareType !== ShareType.User\"\n\t\t\t\t\t:user=\"share.shareWith\"\n\t\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\t\t:menu-position=\"'left'\"\n\t\t\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t\t\t<component :is=\"getShareTypeIcon(share.type)\" :size=\"32\" />\n\t\t\t</span>\n\t\t\t<span>\n\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t</span>\n\t\t</div>\n\t\t<div class=\"sharingTabDetailsView__wrapper\">\n\t\t\t<div ref=\"quickPermissions\" class=\"sharingTabDetailsView__quick-permissions\">\n\t\t\t\t<div>\n\t\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-bundle=\"read-only\"\n\t\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY.toString()\"\n\t\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t\t{{ t('files_sharing', 'View only') }}\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ViewIcon :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-bundle=\"upload-edit\"\n\t\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t\t:value=\"bundledPermissions.ALL.toString()\"\n\t\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t\t<template v-if=\"allowsFileDrop\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<EditIcon :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"allowsFileDrop\"\n\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-bundle=\"file-drop\"\n\t\t\t\t\t\t:button-variant=\"true\"\n\t\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP.toString()\"\n\t\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t\t{{ t('files_sharing', 'File request') }}\n\t\t\t\t\t\t<small class=\"subline\">{{ t('files_sharing', 'Upload only') }}</small>\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<UploadIcon :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-bundle=\"custom\"\n\t\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t\t:value=\"'custom'\"\n\t\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t\t@update:checked=\"expandCustomPermissions\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Custom permissions') }}\n\t\t\t\t\t\t<small class=\"subline\">{{ customPermissionsList }}</small>\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<DotsHorizontalIcon :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"sharingTabDetailsView__advanced-control\">\n\t\t\t\t<NcButton id=\"advancedSectionAccordionAdvancedControl\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\talignment=\"end-reverse\"\n\t\t\t\t\taria-controls=\"advancedSectionAccordionAdvanced\"\n\t\t\t\t\t:aria-expanded=\"advancedControlExpandedValue\"\n\t\t\t\t\t@click=\"advancedSectionAccordionExpanded = !advancedSectionAccordionExpanded\">\n\t\t\t\t\t{{ t('files_sharing', 'Advanced settings') }}\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<MenuDownIcon v-if=\"!advancedSectionAccordionExpanded\" />\n\t\t\t\t\t\t<MenuUpIcon v-else />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<div v-if=\"advancedSectionAccordionExpanded\"\n\t\t\t\tid=\"advancedSectionAccordionAdvanced\"\n\t\t\t\tclass=\"sharingTabDetailsView__advanced\"\n\t\t\t\taria-labelledby=\"advancedSectionAccordionAdvancedControl\"\n\t\t\t\trole=\"region\">\n\t\t\t\t<section>\n\t\t\t\t\t<NcInputField v-if=\"isPublicShare\"\n\t\t\t\t\t\tclass=\"sharingTabDetailsView__label\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t:label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value.sync=\"share.label\" />\n\t\t\t\t\t<NcInputField v-if=\"config.allowCustomTokens && isPublicShare && !isNewShare\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t:label=\"t('files_sharing', 'Share link token')\"\n\t\t\t\t\t\t:helper-text=\"t('files_sharing', 'Set the public share link token to something easy to remember or generate a new token. It is not recommended to use a guessable token for shares which contain sensitive information.')\"\n\t\t\t\t\t\tshow-trailing-button\n\t\t\t\t\t\t:trailing-button-label=\"loadingToken ? t('files_sharing', 'Generating…') : t('files_sharing', 'Generate new token')\"\n\t\t\t\t\t\t:value.sync=\"share.token\"\n\t\t\t\t\t\t@trailing-button-click=\"generateNewToken\">\n\t\t\t\t\t\t<template #trailing-button-icon>\n\t\t\t\t\t\t\t<NcLoadingIcon v-if=\"loadingToken\" />\n\t\t\t\t\t\t\t<Refresh v-else :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcInputField>\n\t\t\t\t\t<template v-if=\"isPublicShare\">\n\t\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"isPasswordProtected\" :disabled=\"isPasswordEnforced\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Set password') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t\t<NcPasswordField v-if=\"isPasswordProtected\"\n\t\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : ''\"\n\t\t\t\t\t\t\t:error=\"passwordError\"\n\t\t\t\t\t\t\t:helper-text=\"errorPasswordLabel || passwordHint\"\n\t\t\t\t\t\t\t:required=\"isPasswordEnforced && isNewShare\"\n\t\t\t\t\t\t\t:label=\"t('files_sharing', 'Password')\"\n\t\t\t\t\t\t\t@update:value=\"onPasswordChange\" />\n\n\t\t\t\t\t\t<!-- Migrate icons and remote -> icon=\"icon-info\"-->\n\t\t\t\t\t\t<span v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', { passwordExpirationTime }) }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"canTogglePasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t@update:checked=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"hasExpirationDate\" :disabled=\"isExpiryDateEnforced\">\n\t\t\t\t\t\t{{ isExpiryDateEnforced\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</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcDateTimePickerNative v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tid=\"share-date-picker\"\n\t\t\t\t\t\t:value=\"new Date(share.expireDate ?? dateTomorrow)\"\n\t\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t\t:max=\"maxExpirationDateEnforced\"\n\t\t\t\t\t\thide-label\n\t\t\t\t\t\t:label=\"t('files_sharing', 'Expiration date')\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Expiration date')\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t@input=\"onExpirationChange\" />\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"isPublicShare\"\n\t\t\t\t\t\t:disabled=\"canChangeHideDownload\"\n\t\t\t\t\t\t:checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t@update:checked=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-else\n\t\t\t\t\t\t:disabled=\"!canSetDownload\"\n\t\t\t\t\t\t:checked.sync=\"canDownload\"\n\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"download\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Allow download and sync') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"writeNoteToRecipientIsChecked\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<template v-if=\"writeNoteToRecipientIsChecked\">\n\t\t\t\t\t\t<NcTextArea :label=\"t('files_sharing', 'Note to recipient')\"\n\t\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t\t:value.sync=\"share.note\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"isPublicShare && isFolder\"\n\t\t\t\t\t\t:checked.sync=\"showInGridView\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Show files in grid view') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t\tref=\"externalLinkActions\"\n\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t\t:share=\"share\" />\n\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"setCustomPermissions\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Custom permissions') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<section v-if=\"setCustomPermissions\" class=\"custom-permissions-group\">\n\t\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!canRemoveReadPermission\"\n\t\t\t\t\t\t\t:checked.sync=\"hasRead\"\n\t\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"read\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"isFolder\"\n\t\t\t\t\t\t\t:disabled=\"!canSetCreate\"\n\t\t\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"create\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Create') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!canSetEdit\"\n\t\t\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"update\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"resharingIsPossible\"\n\t\t\t\t\t\t\t:disabled=\"!canSetReshare\"\n\t\t\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"share\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Share') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!canSetDelete\"\n\t\t\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"delete\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t</section>\n\t\t\t\t\t<div class=\"sharingTabDetailsView__delete\">\n\t\t\t\t\t\t<NcButton v-if=\"!isNewShare\"\n\t\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Delete share')\"\n\t\t\t\t\t\t\t:disabled=\"false\"\n\t\t\t\t\t\t\t:readonly=\"false\"\n\t\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t\t@click.prevent=\"removeShare\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<CloseIcon :size=\"16\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Delete share') }}\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"sharingTabDetailsView__footer\">\n\t\t\t<div class=\"button-group\">\n\t\t\t\t<NcButton data-cy-files-sharing-share-editor-action=\"cancel\"\n\t\t\t\t\t@click=\"cancel\">\n\t\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\tdata-cy-files-sharing-share-editor-action=\"save\"\n\t\t\t\t\t@click=\"saveShare\">\n\t\t\t\t\t{{ shareButtonText }}\n\t\t\t\t\t<template v-if=\"creating\" #icon>\n\t\t\t\t\t\t<NcLoadingIcon />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport { getLanguage } from '@nextcloud/l10n'\nimport { ShareType } from '@nextcloud/sharing'\nimport { showError } from '@nextcloud/dialogs'\nimport moment from '@nextcloud/moment'\n\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'\nimport NcDateTimePickerNative from '@nextcloud/vue/components/NcDateTimePickerNative'\nimport NcInputField from '@nextcloud/vue/components/NcInputField'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport NcPasswordField from '@nextcloud/vue/components/NcPasswordField'\nimport NcTextArea from '@nextcloud/vue/components/NcTextArea'\n\nimport CircleIcon from 'vue-material-design-icons/CircleOutline.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\nimport EditIcon from 'vue-material-design-icons/Pencil.vue'\nimport EmailIcon from 'vue-material-design-icons/Email.vue'\nimport LinkIcon from 'vue-material-design-icons/Link.vue'\nimport GroupIcon from 'vue-material-design-icons/AccountGroup.vue'\nimport ShareIcon from 'vue-material-design-icons/ShareCircle.vue'\nimport UserIcon from 'vue-material-design-icons/AccountCircleOutline.vue'\nimport ViewIcon from 'vue-material-design-icons/Eye.vue'\nimport UploadIcon from 'vue-material-design-icons/Upload.vue'\nimport MenuDownIcon from 'vue-material-design-icons/MenuDown.vue'\nimport MenuUpIcon from 'vue-material-design-icons/MenuUp.vue'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport Refresh from 'vue-material-design-icons/Refresh.vue'\n\nimport ExternalShareAction from '../components/ExternalShareAction.vue'\n\nimport GeneratePassword from '../utils/GeneratePassword.ts'\nimport Share from '../models/Share.ts'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport { generateToken } from '../services/TokenService.ts'\nimport logger from '../services/logger.ts'\n\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n} from '../lib/SharePermissionsToolBox.js'\n\nexport default {\n\tname: 'SharingDetailsTab',\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcDateTimePickerNative,\n\t\tNcInputField,\n\t\tNcLoadingIcon,\n\t\tNcPasswordField,\n\t\tNcTextArea,\n\t\tCloseIcon,\n\t\tCircleIcon,\n\t\tEditIcon,\n\t\tExternalShareAction,\n\t\tLinkIcon,\n\t\tGroupIcon,\n\t\tShareIcon,\n\t\tUserIcon,\n\t\tUploadIcon,\n\t\tViewIcon,\n\t\tMenuDownIcon,\n\t\tMenuUpIcon,\n\t\tDotsHorizontalIcon,\n\t\tRefresh,\n\t},\n\tmixins: [ShareRequests, SharesMixin],\n\tprops: {\n\t\tshareRequestValue: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\twriteNoteToRecipientIsChecked: false,\n\t\t\tsharingPermission: BUNDLED_PERMISSIONS.ALL.toString(),\n\t\t\trevertSharingPermission: BUNDLED_PERMISSIONS.ALL.toString(),\n\t\t\tsetCustomPermissions: false,\n\t\t\tpasswordError: false,\n\t\t\tadvancedSectionAccordionExpanded: false,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t\tisFirstComponentLoad: true,\n\t\t\ttest: false,\n\t\t\tcreating: false,\n\t\t\tinitialToken: this.share.token,\n\t\t\tloadingToken: false,\n\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tswitch (this.share.type) {\n\t\t\tcase ShareType.User:\n\t\t\t\treturn t('files_sharing', 'Share with {userName}', { userName: this.share.shareWithDisplayName })\n\t\t\tcase ShareType.Email:\n\t\t\t return t('files_sharing', 'Share with email {email}', { email: this.share.shareWith })\n\t\t\tcase ShareType.Link:\n\t\t\t\treturn t('files_sharing', 'Share link')\n\t\t\tcase ShareType.Group:\n\t\t\t\treturn t('files_sharing', 'Share with group')\n\t\t\tcase ShareType.Room:\n\t\t\t\treturn t('files_sharing', 'Share in conversation')\n\t\t\tcase ShareType.Remote: {\n\t\t\t\tconst [user, server] = this.share.shareWith.split('@')\n\t\t\t\treturn t('files_sharing', 'Share with {user} on remote server {server}', { user, server })\n\t\t\t}\n\t\t\tcase ShareType.RemoteGroup:\n\t\t\t\treturn t('files_sharing', 'Share with remote group')\n\t\t\tcase ShareType.Guest:\n\t\t\t\treturn t('files_sharing', 'Share with guest')\n\t\t\tdefault: {\n\t\t\t\tif (this.share.id) {\n\t\t\t\t\t// Share already exists\n\t\t\t\t\treturn t('files_sharing', 'Update share')\n\t\t\t\t} else {\n\t\t\t\t\treturn t('files_sharing', 'Create share')\n\t\t\t\t}\n\t\t\t}\n\t\t\t}\n\t\t},\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.updateAtomicPermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\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.updateAtomicPermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\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.updateAtomicPermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\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.updateAtomicPermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Change the default view for public shares from \"list\" to \"grid\"\n\t\t */\n\t\tshowInGridView: {\n\t\t\tget() {\n\t\t\t\treturn this.getShareAttribute('config', 'grid_view', false)\n\t\t\t},\n\t\t\t/** @param {boolean} value If the default view should be changed to \"grid\" */\n\t\t\tset(value) {\n\t\t\t\tthis.setShareAttribute('config', 'grid_view', value)\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.getShareAttribute('permissions', 'download', true)\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.setShareAttribute('permissions', 'download', checked)\n\t\t\t},\n\t\t},\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 requests 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\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isReadChecked: checked })\n\t\t\t},\n\t\t},\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.isValidShareAttribute(this.share.expireDate)\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(this.defaultExpiryDate)\n\t\t\t\t\t: ''\n\t\t\t},\n\t\t},\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\tif (enabled) {\n\t\t\t\t\tthis.share.password = await GeneratePassword(true)\n\t\t\t\t\tthis.$set(this.share, 'newPassword', this.share.password)\n\t\t\t\t} else {\n\t\t\t\t\tthis.share.password = ''\n\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\t\t\t\t}\n\t\t\t},\n\t\t},\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\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\tisPasswordEnforced() {\n\t\t\treturn this.isPublicShare && this.config.enforcePasswordForPublicLink\n\t\t},\n\t\tdefaultExpiryDate() {\n\t\t\tif ((this.isGroupShare || this.isUserShare) && this.config.isDefaultInternalExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultInternalExpirationDate)\n\t\t\t} else if (this.isRemoteShare && this.config.isDefaultRemoteExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultRemoteExpireDateEnabled)\n\t\t\t} else if (this.isPublicShare && this.config.isDefaultExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultExpirationDate)\n\t\t\t}\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t},\n\t\tisUserShare() {\n\t\t\treturn this.share.type === ShareType.User\n\t\t},\n\t\tisGroupShare() {\n\t\t\treturn this.share.type === ShareType.Group\n\t\t},\n\t\tallowsFileDrop() {\n\t\t\tif (this.isFolder && this.config.isPublicUploadEnabled) {\n\t\t\t\tif (this.share.type === ShareType.Link || this.share.type === ShareType.Email) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\thasFileDropPermissions() {\n\t\t\treturn this.share.permissions === this.bundledPermissions.FILE_DROP\n\t\t},\n\t\tshareButtonText() {\n\t\t\tif (this.isNewShare) {\n\t\t\t\treturn t('files_sharing', 'Save share')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Update share')\n\n\t\t},\n\t\tresharingIsPossible() {\n\t\t\treturn this.config.isResharingAllowed && this.share.type !== ShareType.Link && this.share.type !== ShareType.Email\n\t\t},\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\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\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\t\tcanRemoveReadPermission() {\n\t\t\treturn this.allowsFileDrop && (\n\t\t\t\tthis.share.type === ShareType.Link\n\t\t\t\t\t|| this.share.type === ShareType.Email\n\t\t\t)\n\t\t},\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\t\tpasswordExpirationTime() {\n\t\t\tif (!this.isValidShareAttribute(this.share.passwordExpirationTime)) {\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\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\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 === ShareType.Email\n\t\t\t\t: false\n\t\t},\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPublicShare || !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// Is Talk enabled?\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.value === false\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t\tcustomPermissionsList() {\n\t\t\t// Key order will be different, because ATOMIC_PERMISSIONS are numbers\n\t\t\tconst translatedPermissions = {\n\t\t\t\t[ATOMIC_PERMISSIONS.READ]: this.t('files_sharing', 'Read'),\n\t\t\t\t[ATOMIC_PERMISSIONS.CREATE]: this.t('files_sharing', 'Create'),\n\t\t\t\t[ATOMIC_PERMISSIONS.UPDATE]: this.t('files_sharing', 'Edit'),\n\t\t\t\t[ATOMIC_PERMISSIONS.SHARE]: this.t('files_sharing', 'Share'),\n\t\t\t\t[ATOMIC_PERMISSIONS.DELETE]: this.t('files_sharing', 'Delete'),\n\t\t\t}\n\n\t\t\treturn [ATOMIC_PERMISSIONS.READ, ATOMIC_PERMISSIONS.CREATE, ATOMIC_PERMISSIONS.UPDATE, ...(this.resharingIsPossible ? [ATOMIC_PERMISSIONS.SHARE] : []), ATOMIC_PERMISSIONS.DELETE]\n\t\t\t\t.filter((permission) => hasPermissions(this.share.permissions, permission))\n\t\t\t\t.map((permission, index) => index === 0\n\t\t\t\t\t? translatedPermissions[permission]\n\t\t\t\t\t: translatedPermissions[permission].toLocaleLowerCase(getLanguage()))\n\t\t\t\t.join(', ')\n\t\t},\n\t\tadvancedControlExpandedValue() {\n\t\t\treturn this.advancedSectionAccordionExpanded ? 'true' : 'false'\n\t\t},\n\t\terrorPasswordLabel() {\n\t\t\tif (this.passwordError) {\n\t\t\t\treturn t('files_sharing', 'Password field cannot be empty')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\n\t\tpasswordHint() {\n\t\t\tif (this.isNewShare || this.hasUnsavedPassword) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Replace current password')\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\tconst filterValidAction = (action) => (action.shareType.includes(ShareType.Link) || action.shareType.includes(ShareType.Email)) && action.advanced\n\t\t\t// filter only the advanced registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(filterValidAction)\n\t\t},\n\t},\n\twatch: {\n\t\tsetCustomPermissions(isChecked) {\n\t\t\tif (isChecked) {\n\t\t\t\tthis.sharingPermission = 'custom'\n\t\t\t} else {\n\t\t\t\tthis.sharingPermission = this.revertSharingPermission\n\t\t\t}\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.initializePermissions()\n\t\tthis.initializeAttributes()\n\t\tlogger.debug('Share object received', { share: this.share })\n\t\tlogger.debug('Configuration object received', { config: this.config })\n\t},\n\n\tmounted() {\n\t\tthis.$refs.quickPermissions?.querySelector('input:checked')?.focus()\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Set a share attribute on the current share\n\t\t * @param {string} scope The attribute scope\n\t\t * @param {string} key The attribute key\n\t\t * @param {boolean} value The value\n\t\t */\n\t\tsetShareAttribute(scope, key, value) {\n\t\t\tif (!this.share.attributes) {\n\t\t\t\tthis.$set(this.share, 'attributes', [])\n\t\t\t}\n\n\t\t\tconst attribute = this.share.attributes\n\t\t\t\t.find((attr) => attr.scope === scope || attr.key === key)\n\n\t\t\tif (attribute) {\n\t\t\t\tattribute.value = value\n\t\t\t} else {\n\t\t\t\tthis.share.attributes.push({\n\t\t\t\t\tscope,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get the value of a share attribute\n\t\t * @param {string} scope The attribute scope\n\t\t * @param {string} key The attribute key\n\t\t * @param {undefined|boolean} fallback The fallback to return if not found\n\t\t */\n\t\tgetShareAttribute(scope, key, fallback = undefined) {\n\t\t\tconst attribute = this.share.attributes?.find((attr) => attr.scope === scope && attr.key === key)\n\t\t\treturn attribute?.value ?? fallback\n\t\t},\n\n\t\tasync generateNewToken() {\n\t\t\tif (this.loadingToken) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loadingToken = true\n\t\t\ttry {\n\t\t\t\tthis.share.token = await generateToken()\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('files_sharing', 'Failed to generate a new token'))\n\t\t\t}\n\t\t\tthis.loadingToken = false\n\t\t},\n\n\t\tcancel() {\n\t\t\tthis.share.token = this.initialToken\n\t\t\tthis.$emit('close-sharing-details')\n\t\t},\n\n\t\tupdateAtomicPermissions({\n\t\t\tisReadChecked = this.hasRead,\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} = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (isReadChecked ? ATOMIC_PERMISSIONS.READ : 0)\n\t\t\t\t| (isCreateChecked ? ATOMIC_PERMISSIONS.CREATE : 0)\n\t\t\t\t| (isDeleteChecked ? ATOMIC_PERMISSIONS.DELETE : 0)\n\t\t\t\t| (isEditChecked ? ATOMIC_PERMISSIONS.UPDATE : 0)\n\t\t\t\t| (isReshareChecked ? ATOMIC_PERMISSIONS.SHARE : 0)\n\t\t\tthis.share.permissions = permissions\n\t\t},\n\t\texpandCustomPermissions() {\n\t\t\tif (!this.advancedSectionAccordionExpanded) {\n\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t}\n\t\t\tthis.toggleCustomPermissions()\n\t\t},\n\t\ttoggleCustomPermissions(selectedPermission) {\n\t\t\tconst isCustomPermissions = this.sharingPermission === 'custom'\n\t\t\tthis.revertSharingPermission = !isCustomPermissions ? selectedPermission : 'custom'\n\t\t\tthis.setCustomPermissions = isCustomPermissions\n\t\t},\n\t\tasync initializeAttributes() {\n\n\t\t\tif (this.isNewShare) {\n\t\t\t\tif (this.isPasswordEnforced && this.isPublicShare) {\n\t\t\t\t\tthis.$set(this.share, 'newPassword', await GeneratePassword(true))\n\t\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t\t}\n\t\t\t\t/* Set default expiration dates if configured */\n\t\t\t\tif (this.isPublicShare && this.config.isDefaultExpireDateEnabled) {\n\t\t\t\t\tthis.share.expireDate = this.config.defaultExpirationDate.toDateString()\n\t\t\t\t} else if (this.isRemoteShare && this.config.isDefaultRemoteExpireDateEnabled) {\n\t\t\t\t\tthis.share.expireDate = this.config.defaultRemoteExpirationDateString.toDateString()\n\t\t\t\t} else if (this.config.isDefaultInternalExpireDateEnabled) {\n\t\t\t\t\tthis.share.expireDate = this.config.defaultInternalExpirationDate.toDateString()\n\t\t\t\t}\n\n\t\t\t\tif (this.isValidShareAttribute(this.share.expireDate)) {\n\t\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t\t}\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If there is an enforced expiry date, then existing shares created before enforcement\n\t\t\t// have no expiry date, hence we set it here.\n\t\t\tif (!this.isValidShareAttribute(this.share.expireDate) && this.isExpiryDateEnforced) {\n\t\t\t\tthis.hasExpirationDate = true\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.isValidShareAttribute(this.share.password)\n\t\t\t\t|| this.isValidShareAttribute(this.share.expireDate)\n\t\t\t\t|| this.isValidShareAttribute(this.share.label)\n\t\t\t) {\n\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t}\n\n\t\t\tif (this.share.note) {\n\t\t\t\tthis.writeNoteToRecipientIsChecked = true\n\t\t\t}\n\n\t\t},\n\t\thandleShareType() {\n\t\t\tif ('shareType' in this.share) {\n\t\t\t\tthis.share.type = this.share.shareType\n\t\t\t} else if (this.share.share_type) {\n\t\t\t\tthis.share.type = this.share.share_type\n\t\t\t}\n\t\t},\n\t\thandleDefaultPermissions() {\n\t\t\tif (this.isNewShare) {\n\t\t\t\tconst defaultPermissions = this.config.defaultPermissions\n\t\t\t\tif (defaultPermissions === BUNDLED_PERMISSIONS.READ_ONLY || defaultPermissions === BUNDLED_PERMISSIONS.ALL) {\n\t\t\t\t\tthis.sharingPermission = defaultPermissions.toString()\n\t\t\t\t} else {\n\t\t\t\t\tthis.sharingPermission = 'custom'\n\t\t\t\t\tthis.share.permissions = defaultPermissions\n\t\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t\t\tthis.setCustomPermissions = true\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Read permission required for share creation\n\t\t\tif (!this.canRemoveReadPermission) {\n\t\t\t\tthis.hasRead = true\n\t\t\t}\n\t\t},\n\t\thandleCustomPermissions() {\n\t\t\tif (!this.isNewShare && (this.hasCustomPermissions || this.share.setCustomPermissions)) {\n\t\t\t\tthis.sharingPermission = 'custom'\n\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t\tthis.setCustomPermissions = true\n\t\t\t} else if (this.share.permissions) {\n\t\t\t\tthis.sharingPermission = this.share.permissions.toString()\n\t\t\t}\n\t\t},\n\t\tinitializePermissions() {\n\t\t\tthis.handleShareType()\n\t\t\tthis.handleDefaultPermissions()\n\t\t\tthis.handleCustomPermissions()\n\t\t},\n\t\tasync saveShare() {\n\t\t\tconst permissionsAndAttributes = ['permissions', 'attributes', 'note', 'expireDate']\n\t\t\tconst publicShareAttributes = ['label', 'password', 'hideDownload']\n\t\t\tif (this.config.allowCustomTokens) {\n\t\t\t\tpublicShareAttributes.push('token')\n\t\t\t}\n\t\t\tif (this.isPublicShare) {\n\t\t\t\tpermissionsAndAttributes.push(...publicShareAttributes)\n\t\t\t}\n\t\t\tconst sharePermissionsSet = parseInt(this.sharingPermission)\n\t\t\tif (this.setCustomPermissions) {\n\t\t\t\tthis.updateAtomicPermissions()\n\t\t\t} else {\n\t\t\t\tthis.share.permissions = sharePermissionsSet\n\t\t\t}\n\n\t\t\tif (!this.isFolder && this.share.permissions === BUNDLED_PERMISSIONS.ALL) {\n\t\t\t\t// It's not possible to create an existing file.\n\t\t\t\tthis.share.permissions = BUNDLED_PERMISSIONS.ALL_FILE\n\t\t\t}\n\t\t\tif (!this.writeNoteToRecipientIsChecked) {\n\t\t\t\tthis.share.note = ''\n\t\t\t}\n\t\t\tif (this.isPasswordProtected) {\n\t\t\t\tif (this.hasUnsavedPassword && this.isValidShareAttribute(this.share.newPassword)) {\n\t\t\t\t\tthis.share.password = this.share.newPassword\n\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\t\t\t\t} else if (this.isPasswordEnforced && this.isNewShare && !this.isValidShareAttribute(this.share.password)) {\n\t\t\t\t\tthis.passwordError = true\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.share.password = ''\n\t\t\t}\n\n\t\t\tif (!this.hasExpirationDate) {\n\t\t\t\tthis.share.expireDate = ''\n\t\t\t}\n\n\t\t\tif (this.isNewShare) {\n\t\t\t\tconst incomingShare = {\n\t\t\t\t\tpermissions: this.share.permissions,\n\t\t\t\t\tshareType: this.share.type,\n\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\tattributes: this.share.attributes,\n\t\t\t\t\tnote: this.share.note,\n\t\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\t}\n\n\t\t\t\tincomingShare.expireDate = this.hasExpirationDate ? this.share.expireDate : ''\n\n\t\t\t\tif (this.isPasswordProtected) {\n\t\t\t\t\tincomingShare.password = this.share.password\n\t\t\t\t}\n\n\t\t\t\tthis.creating = true\n\t\t\t\tconst share = await this.addShare(incomingShare)\n\t\t\t\t// ugly hack to make code work - we need the id to be set but at the same time we need to keep values we want to update\n\t\t\t\tthis.share._share.id = share.id\n\t\t\t\tawait this.queueUpdate(...permissionsAndAttributes)\n\t\t\t\t// Also a ugly hack to update the updated permissions\n\t\t\t\tfor (const prop of permissionsAndAttributes) {\n\t\t\t\t\tif (prop in share && prop in this.share) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tshare[prop] = this.share[prop]\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\tshare._share[prop] = this.share[prop]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.share = share\n\t\t\t\tthis.creating = false\n\t\t\t\tthis.$emit('add:share', this.share)\n\t\t\t} else {\n\t\t\t\t// Let's update after creation as some attrs are only available after creation\n\t\t\t\tthis.$emit('update:share', this.share)\n\t\t\t\temit('update:share', this.share)\n\t\t\t\tthis.queueUpdate(...permissionsAndAttributes)\n\t\t\t}\n\n\t\t\tawait this.getNode()\n\t\t\temit('files:node:updated', this.node)\n\n\t\t\tif (this.$refs.externalLinkActions?.length > 0) {\n\t\t\t\tawait Promise.allSettled(this.$refs.externalLinkActions.map((action) => {\n\t\t\t\t\tif (typeof action.$children.at(0)?.onSave !== 'function') {\n\t\t\t\t\t\treturn Promise.resolve()\n\t\t\t\t\t}\n\t\t\t\t\treturn action.$children.at(0)?.onSave?.()\n\t\t\t\t}))\n\t\t\t}\n\n\t\t\tthis.$emit('close-sharing-details')\n\t\t},\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {Share} share incoming share object\n\t\t */\n\t\tasync addShare(share) {\n\t\t\tlogger.debug('Adding a new share from the input for', { share })\n\t\t\tconst path = this.path\n\t\t\ttry {\n\t\t\t\tconst resultingShare = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: share.shareType,\n\t\t\t\t\tshareWith: share.shareWith,\n\t\t\t\t\tpermissions: share.permissions,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\tattributes: JSON.stringify(share.attributes),\n\t\t\t\t\t...(share.note ? { note: share.note } : {}),\n\t\t\t\t\t...(share.password ? { password: share.password } : {}),\n\t\t\t\t})\n\t\t\t\treturn resultingShare\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Error while adding new share', { error })\n\t\t\t} finally {\n\t\t\t\t// this.loading = false // No loader here yet\n\t\t\t}\n\t\t},\n\t\tasync removeShare() {\n\t\t\tawait this.onDelete()\n\t\t\tawait this.getNode()\n\t\t\temit('files:node:updated', this.node)\n\t\t\tthis.$emit('close-sharing-details')\n\t\t},\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\tif (password === '') {\n\t\t\t\tthis.$delete(this.share, 'newPassword')\n\t\t\t\tthis.passwordError = this.isNewShare && this.isPasswordEnforced\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.passwordError = !this.isValidShareAttribute(password)\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\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\t\tisValidShareAttribute(value) {\n\t\t\tif ([null, undefined].includes(value)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif (!(value.trim().length > 0)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn true\n\t\t},\n\t\tgetShareTypeIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase ShareType.Link:\n\t\t\t\treturn LinkIcon\n\t\t\tcase ShareType.Guest:\n\t\t\t\treturn UserIcon\n\t\t\tcase ShareType.RemoteGroup:\n\t\t\tcase ShareType.Group:\n\t\t\t\treturn GroupIcon\n\t\t\tcase ShareType.Email:\n\t\t\t\treturn EmailIcon\n\t\t\tcase ShareType.Team:\n\t\t\t\treturn CircleIcon\n\t\t\tcase ShareType.Room:\n\t\t\t\treturn ShareIcon\n\t\t\tcase ShareType.Deck:\n\t\t\t\treturn ShareIcon\n\t\t\tcase ShareType.ScienceMesh:\n\t\t\t\treturn ShareIcon\n\t\t\tdefault:\n\t\t\t\treturn null // Or a default icon component if needed\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharingTabDetailsView {\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\tmargin: 0 auto;\n\tposition: relative;\n\theight: 100%;\n\toverflow: hidden;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0.2em;\n\n\t\tspan {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\th1 {\n\t\t\t\tfont-size: 15px;\n\t\t\t\tpadding-inline-start: 0.3em;\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__wrapper {\n\t\tposition: relative;\n\t\toverflow: scroll;\n\t\tflex-shrink: 1;\n\t\tpadding: 4px;\n\t\tpadding-inline-end: 12px;\n\t}\n\n\t&__quick-permissions {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\tmargin: 0 auto;\n\t\tborder-radius: 0;\n\n\t\tdiv {\n\t\t\twidth: 100%;\n\n\t\t\tspan {\n\t\t\t\twidth: 100%;\n\n\t\t\t\tspan:nth-child(1) {\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tpadding: 0.1em;\n\t\t\t\t}\n\n\t\t\t\t:deep(label span) {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-direction: column;\n\t\t\t\t}\n\n\t\t\t\t/* Target component based style in NcCheckboxRadioSwitch slot content*/\n\t\t\t\t:deep(span.checkbox-content__text.checkbox-radio-switch__text) {\n\t\t\t\t\tflex-wrap: wrap;\n\n\t\t\t\t\t.subline {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tflex-basis: 100%;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__advanced-control {\n\t\twidth: 100%;\n\n\t\tbutton {\n\t\t\tmargin-top: 0.5em;\n\t\t}\n\n\t}\n\n\t&__advanced {\n\t\twidth: 100%;\n\t\tmargin-bottom: 0.5em;\n\t\ttext-align: start;\n\t\tpadding-inline-start: 0;\n\n\t\tsection {\n\n\t\t\ttextarea,\n\t\t\tdiv.mx-datepicker {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttextarea {\n\t\t\t\theight: 80px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t The following style is applied out of the component's scope\n\t\t\t to remove padding from the label.checkbox-radio-switch__label,\n\t\t\t which is used to group radio checkbox items. The use of ::v-deep\n\t\t\t ensures that the padding is modified without being affected by\n\t\t\t the component's scoping.\n\t\t\t Without this achieving left alignment for the checkboxes would not\n\t\t\t be possible.\n\t\t\t*/\n\t\t\tspan :deep(label) {\n\t\t\t\tpadding-inline-start: 0 !important;\n\t\t\t\tbackground-color: initial !important;\n\t\t\t\tborder: none !important;\n\t\t\t}\n\n\t\t\tsection.custom-permissions-group {\n\t\t\t\tpadding-inline-start: 1.5em;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__label {\n\t\tpadding-block-end: 6px;\n\t}\n\n\t&__delete {\n\t\t> button:first-child {\n\t\t\tcolor: rgb(223, 7, 7);\n\t\t}\n\t}\n\n\t&__footer {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\talign-items: flex-start;\n\t\tbackground: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));\n\n\t\t.button-group {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t\twidth: 100%;\n\t\t\tmargin-top: 16px;\n\n\t\t\tbutton {\n\t\t\t\tmargin-inline-start: 16px;\n\n\t\t\t\t&:first-child {\n\t\t\t\t\tmargin-inline-start: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { generateOcsUrl } from '@nextcloud/router';\nexport const generateToken = async () => {\n const { data } = await axios.get(generateOcsUrl('/apps/files_sharing/api/v1/token'));\n return data.ocs.data.token;\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=style&index=0&id=b61b0164&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./SharingDetailsTab.vue?vue&type=style&index=0&id=b61b0164&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingDetailsTab.vue?vue&type=template&id=b61b0164&scoped=true\"\nimport script from \"./SharingDetailsTab.vue?vue&type=script&lang=js\"\nexport * from \"./SharingDetailsTab.vue?vue&type=script&lang=js\"\nimport style0 from \"./SharingDetailsTab.vue?vue&type=style&index=0&id=b61b0164&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 \"b61b0164\",\n null\n \n)\n\nexport default component.exports","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"sharingTab\" :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-show=\"!showSharingDetailsView\"\n\t\t\tclass=\"sharingTab__content\">\n\t\t\t<!-- shared with me information -->\n\t\t\t<ul v-if=\"isSharedWithMe\">\n\t\t\t\t<SharingEntrySimple v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t\t<template #avatar>\n\t\t\t\t\t\t<NcAvatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t\t\t\t</template>\n\t\t\t\t</SharingEntrySimple>\n\t\t\t</ul>\n\n\t\t\t<section>\n\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t<h4>{{ t('files_sharing', 'Internal shares') }}</h4>\n\t\t\t\t\t<NcPopover popup-role=\"dialog\">\n\t\t\t\t\t\t<template #trigger>\n\t\t\t\t\t\t\t<NcButton class=\"hint-icon\"\n\t\t\t\t\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Internal shares explanation')\">\n\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t<InfoIcon :size=\"20\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<p class=\"hint-body\">\n\t\t\t\t\t\t\t{{ internalSharesHelpText }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</NcPopover>\n\t\t\t\t</div>\n\t\t\t\t<!-- add new share input -->\n\t\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t\t:shares=\"shares\"\n\t\t\t\t\t:placeholder=\"t('files_sharing', 'Share with accounts and teams')\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t\t<!-- other shares list -->\n\t\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\t\tref=\"shareList\"\n\t\t\t\t\t:shares=\"shares\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t\t<!-- inherited shares -->\n\t\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t\t<!-- internal link copy -->\n\t\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\t\t\t</section>\n\n\t\t\t<section>\n\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t<h4>{{ t('files_sharing', 'External shares') }}</h4>\n\t\t\t\t\t<NcPopover popup-role=\"dialog\">\n\t\t\t\t\t\t<template #trigger>\n\t\t\t\t\t\t\t<NcButton class=\"hint-icon\"\n\t\t\t\t\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'External shares explanation')\">\n\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t<InfoIcon :size=\"20\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<p class=\"hint-body\">\n\t\t\t\t\t\t\t{{ externalSharesHelpText }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</NcPopover>\n\t\t\t\t</div>\n\t\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t\t:is-external=\"true\"\n\t\t\t\t\t:placeholder=\"t('files_sharing', 'Email, federated cloud id')\"\n\t\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t\t:shares=\"shares\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\t\t\t\t<!-- link shares list -->\n\t\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\t\tref=\"linkShareList\"\n\t\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:shares=\"linkShares\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\t\t\t</section>\n\n\t\t\t<section v-if=\"sections.length > 0 && !showSharingDetailsView\">\n\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t<h4>{{ t('files_sharing', 'Additional shares') }}</h4>\n\t\t\t\t\t<NcPopover popup-role=\"dialog\">\n\t\t\t\t\t\t<template #trigger>\n\t\t\t\t\t\t\t<NcButton class=\"hint-icon\"\n\t\t\t\t\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Additional shares explanation')\">\n\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t<InfoIcon :size=\"20\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<p class=\"hint-body\">\n\t\t\t\t\t\t\t{{ additionalSharesHelpText }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</NcPopover>\n\t\t\t\t</div>\n\t\t\t\t<!-- additional entries, use it with cautious -->\n\t\t\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t\t\t:ref=\"'section-' + index\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t\t\t</div>\n\n\t\t\t\t<!-- projects (deprecated as of NC25 (replaced by related_resources) - see instance config \"projects.enabled\" ; ignore this / remove it / move into own section) -->\n\t\t\t\t<div v-if=\"projectsEnabled\"\n\t\t\t\t\tv-show=\"!showSharingDetailsView && fileInfo\"\n\t\t\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t\t\t<CollectionList :id=\"`${fileInfo.id}`\"\n\t\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t\t:name=\"fileInfo.name\" />\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t</div>\n\n\t\t<!-- share details -->\n\t\t<SharingDetailsTab v-if=\"showSharingDetailsView\"\n\t\t\t:file-info=\"shareDetailsData.fileInfo\"\n\t\t\t:share=\"shareDetailsData.share\"\n\t\t\t@close-sharing-details=\"toggleShareDetailsView\"\n\t\t\t@add:share=\"addShare\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { orderBy } from '@nextcloud/files'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { ShareType } from '@nextcloud/sharing'\n\nimport InfoIcon from 'vue-material-design-icons/Information.vue'\nimport NcPopover from '@nextcloud/vue/components/NcPopover'\n\nimport axios from '@nextcloud/axios'\nimport moment from '@nextcloud/moment'\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport NcButton from '@nextcloud/vue/components/NcButton'\n\nimport { shareWithTitle } from '../utils/SharedWithMe.js'\n\nimport Config from '../services/ConfigService.ts'\nimport Share from '../models/Share.ts'\nimport SharingEntryInternal from '../components/SharingEntryInternal.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\nimport SharingInput from '../components/SharingInput.vue'\n\nimport SharingInherited from './SharingInherited.vue'\nimport SharingLinkList from './SharingLinkList.vue'\nimport SharingList from './SharingList.vue'\nimport SharingDetailsTab from './SharingDetailsTab.vue'\n\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tCollectionList,\n\t\tInfoIcon,\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tNcPopover,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t\tSharingDetailsTab,\n\t},\n\tmixins: [ShareDetails],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tdeleteEvent: null,\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\tshowSharingDetailsView: false,\n\t\t\tshareDetailsData: {},\n\t\t\treturnFocusElement: null,\n\n\t\t\tinternalSharesHelpText: t('files_sharing', 'Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access.'),\n\t\t\texternalSharesHelpText: t('files_sharing', 'Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID.'),\n\t\t\tadditionalSharesHelpText: t('files_sharing', 'Shares that are not part of the internal or external shares. This can be shares from apps or other sources.'),\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\tthis.showSharingDetailsView = false\n\t\t\tthis.shareDetailsData = {}\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: moment(expiration * 1000).fromNow(),\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\tconst shares = orderBy(\n\t\t\t\t\tdata.ocs.data.map(share => new Share(share)),\n\t\t\t\t\t[\n\t\t\t\t\t\t// First order by the \"share with\" label\n\t\t\t\t\t\t(share) => share.shareWithDisplayName,\n\t\t\t\t\t\t// Then by the label\n\t\t\t\t\t\t(share) => share.label,\n\t\t\t\t\t\t// And last resort order by createdTime\n\t\t\t\t\t\t(share) => share.createdTime,\n\t\t\t\t\t],\n\t\t\t\t)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === ShareType.Link || share.type === ShareType.Email)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== ShareType.Link && share.type !== ShareType.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 !== getCurrentUser().uid : 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 === ShareType.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\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\t// Get reference for this.linkShares or this.shares\n\t\t\tconst shareList\n\t\t\t\t= share.type === ShareType.Email\n\t\t\t\t\t|| share.type === ShareType.Link\n\t\t\t\t\t? this.linkShares\n\t\t\t\t\t: this.shares\n\t\t\tconst index = shareList.findIndex(item => item.id === share.id)\n\t\t\tif (index !== -1) {\n\t\t\t\tshareList.splice(index, 1)\n\t\t\t}\n\t\t},\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\tlet listComponent = this.$refs.shareList\n\t\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t\t// are managed internally in the SharingLinkList component\n\t\t\t\tif (share.type === ShareType.Email) {\n\t\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t\t}\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\n\t\ttoggleShareDetailsView(eventData) {\n\t\t\tif (!this.showSharingDetailsView) {\n\t\t\t\tconst isAction = Array.from(document.activeElement.classList)\n\t\t\t\t\t.some(className => className.startsWith('action-'))\n\t\t\t\tif (isAction) {\n\t\t\t\t\tconst menuId = document.activeElement.closest('[role=\"menu\"]')?.id\n\t\t\t\t\tthis.returnFocusElement = document.querySelector(`[aria-controls=\"${menuId}\"]`)\n\t\t\t\t} else {\n\t\t\t\t\tthis.returnFocusElement = document.activeElement\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (eventData) {\n\t\t\t\tthis.shareDetailsData = eventData\n\t\t\t}\n\n\t\t\tthis.showSharingDetailsView = !this.showSharingDetailsView\n\n\t\t\tif (!this.showSharingDetailsView) {\n\t\t\t\tthis.$nextTick(() => { // Wait for next tick as the element must be visible to be focused\n\t\t\t\t\tthis.returnFocusElement?.focus()\n\t\t\t\t\tthis.returnFocusElement = null\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\tposition: relative;\n\theight: 100%;\n\n\t&__content {\n\t\tpadding: 0 6px;\n\n\t\tsection {\n\t\t\tpadding-bottom: 16px;\n\n\t\t\t.section-header {\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tmargin-bottom: 2px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tpadding-bottom: 4px;\n\n\t\t\t\th4 {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t}\n\n\t\t\t\t.visually-hidden {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\n\t\t\t\t.hint-icon {\n\t\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t& > section:not(:last-child) {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\n\t}\n\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n\n.hint-body {\n\tmax-width: 300px;\n\tpadding: var(--border-radius-element);\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { ShareType } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareType.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 === ShareType.Team) {\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 === ShareType.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=630c7354&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=630c7354&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=630c7354&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=630c7354&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 \"630c7354\",\n null\n \n)\n\nexport default component.exports","import { o as logger } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator = {};\nvar util = {};\nvar hasRequiredUtil;\nfunction requireUtil() {\n if (hasRequiredUtil) return util;\n hasRequiredUtil = 1;\n (function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n })(util);\n return util;\n}\nvar hasRequiredValidator;\nfunction requireValidator() {\n if (hasRequiredValidator) return validator;\n hasRequiredValidator = 1;\n const util2 = requireUtil();\n const defaultOptions = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n };\n validator.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n };\n function isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n }\n function readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n }\n function readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n }\n const doubleQuote = '\"';\n const singleQuote = \"'\";\n function readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n }\n const validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\n function validateAttributeString(attrStr, options) {\n const matches = util2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n }\n function validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n }\n function validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n }\n function getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n }\n function validateAttrName(attrName) {\n return util2.isName(attrName);\n }\n function validateTagName(tagname) {\n return util2.isName(tagname);\n }\n function getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n }\n function getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n }\n return validator;\n}\nvar OptionsBuilder = {};\nvar hasRequiredOptionsBuilder;\nfunction requireOptionsBuilder() {\n if (hasRequiredOptionsBuilder) return OptionsBuilder;\n hasRequiredOptionsBuilder = 1;\n const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n };\n const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n };\n OptionsBuilder.buildOptions = buildOptions;\n OptionsBuilder.defaultOptions = defaultOptions;\n return OptionsBuilder;\n}\nvar xmlNode;\nvar hasRequiredXmlNode;\nfunction requireXmlNode() {\n if (hasRequiredXmlNode) return xmlNode;\n hasRequiredXmlNode = 1;\n class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n }\n xmlNode = XmlNode;\n return xmlNode;\n}\nvar DocTypeReader;\nvar hasRequiredDocTypeReader;\nfunction requireDocTypeReader() {\n if (hasRequiredDocTypeReader) return DocTypeReader;\n hasRequiredDocTypeReader = 1;\n const util2 = requireUtil();\n function readDocType(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n let entityName, val;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else comment = true;\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n }\n function readEntityExp(xmlData, i2) {\n let entityName = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName += xmlData[i2];\n }\n entityName = entityName.trim();\n if (entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val += xmlData[i2];\n }\n return [entityName, val, i2];\n }\n function isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n }\n function isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n }\n function validateEntityName(name) {\n if (util2.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n }\n DocTypeReader = readDocType;\n return DocTypeReader;\n}\nvar strnum;\nvar hasRequiredStrnum;\nfunction requireStrnum() {\n if (hasRequiredStrnum) return strnum;\n hasRequiredStrnum = 1;\n const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\n const numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n if (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n }\n if (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n }\n const consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n };\n function toNumber(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n }\n function trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n }\n strnum = toNumber;\n return strnum;\n}\nvar ignoreAttributes;\nvar hasRequiredIgnoreAttributes;\nfunction requireIgnoreAttributes() {\n if (hasRequiredIgnoreAttributes) return ignoreAttributes;\n hasRequiredIgnoreAttributes = 1;\n function getIgnoreAttributesFn(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n }\n ignoreAttributes = getIgnoreAttributesFn;\n return ignoreAttributes;\n}\nvar OrderedObjParser_1;\nvar hasRequiredOrderedObjParser;\nfunction requireOrderedObjParser() {\n if (hasRequiredOrderedObjParser) return OrderedObjParser_1;\n hasRequiredOrderedObjParser = 1;\n const util2 = requireUtil();\n const xmlNode2 = requireXmlNode();\n const readDocType = requireDocTypeReader();\n const toNumber = requireStrnum();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n }\n }\n function addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n }\n function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val);\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n }\n function resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n }\n const attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\n function buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util2.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n }\n const parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode2(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode2(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == void 0) val = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode2(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n };\n function addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n }\n const replaceEntitiesValue = function(val) {\n if (this.options.processEntities) {\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n val = val.replace(entity.regx, entity.val);\n }\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n };\n function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n }\n function isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n }\n function tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n }\n function findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n }\n function readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n }\n function readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n }\n function parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === \"string\") {\n const newval = val.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val, options);\n } else {\n if (util2.isExist(val)) {\n return val;\n } else {\n return \"\";\n }\n }\n }\n OrderedObjParser_1 = OrderedObjParser;\n return OrderedObjParser_1;\n}\nvar node2json = {};\nvar hasRequiredNode2json;\nfunction requireNode2json() {\n if (hasRequiredNode2json) return node2json;\n hasRequiredNode2json = 1;\n function prettify(node, options) {\n return compress(node, options);\n }\n function compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n }\n function assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n }\n function isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n }\n node2json.prettify = prettify;\n return node2json;\n}\nvar XMLParser_1;\nvar hasRequiredXMLParser;\nfunction requireXMLParser() {\n if (hasRequiredXMLParser) return XMLParser_1;\n hasRequiredXMLParser = 1;\n const { buildOptions } = requireOptionsBuilder();\n const OrderedObjParser = requireOrderedObjParser();\n const { prettify } = requireNode2json();\n const validator2 = requireValidator();\n class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator2.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n }\n XMLParser_1 = XMLParser;\n return XMLParser_1;\n}\nvar orderedJs2Xml;\nvar hasRequiredOrderedJs2Xml;\nfunction requireOrderedJs2Xml() {\n if (hasRequiredOrderedJs2Xml) return orderedJs2Xml;\n hasRequiredOrderedJs2Xml = 1;\n const EOL = \"\\n\";\n function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n }\n function arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n }\n function attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n }\n function isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n }\n function replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n }\n orderedJs2Xml = toXml;\n return orderedJs2Xml;\n}\nvar json2xml;\nvar hasRequiredJson2xml;\nfunction requireJson2xml() {\n if (hasRequiredJson2xml) return json2xml;\n hasRequiredJson2xml = 1;\n const buildFromOrderedJs = requireOrderedJs2Xml();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n const defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&amp;\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"&apos;\" },\n { regex: new RegExp('\"', \"g\"), val: \"&quot;\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n };\n function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n }\n Builder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n };\n Builder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val += \"\";\n } else if (key[0] === \"?\") {\n val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val };\n };\n Builder.prototype.buildAttrPairStr = function(attrName, val) {\n val = this.options.attributeValueProcessor(attrName, \"\" + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val + '\"';\n };\n function processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n }\n Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val + this.indentate(level) + tagEndExp;\n }\n }\n };\n Builder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`;\n }\n return closeTag;\n };\n Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \"</\" + key + this.tagEndChar;\n }\n }\n };\n Builder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n };\n function indentate(level) {\n return this.options.indentBy.repeat(level);\n }\n function isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n }\n json2xml = Builder;\n return json2xml;\n}\nvar fxp;\nvar hasRequiredFxp;\nfunction requireFxp() {\n if (hasRequiredFxp) return fxp;\n hasRequiredFxp = 1;\n const validator2 = requireValidator();\n const XMLParser = requireXMLParser();\n const XMLBuilder = requireJson2xml();\n fxp = {\n XMLParser,\n XMLValidator: validator2,\n XMLBuilder\n };\n return fxp;\n}\nvar fxpExports = requireFxp();\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxpExports.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxpExports.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n"],"names":["module","exports","commonjsRequire","Error","qrcode","fn","createCommonjsModule","f","r","e","n","t","o","i","u","a","code","p","call","length","require","Promise","prototype","then","getSymbolSize","getRowColCoords","version","posCount","Math","floor","size","intervals","ceil","positions","push","reverse","getPositions","coords","pos","posLength","j","Mode","ALPHA_NUM_CHARS","AlphanumericData","data","this","mode","ALPHANUMERIC","getBitsLength","getLength","write","bitBuffer","value","indexOf","put","BitBuffer","buffer","get","index","bufIndex","num","putBit","getLengthInBits","bit","BufferUtil","BitMatrix","alloc","reservedBit","set","row","col","reserved","xor","isReserved","ByteData","BYTE","from","l","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","L","M","Q","H","getTotalCodewordsCount","isValid","level","defaultValue","string","toLowerCase","fromString","Utils","G15_BCH","getBCHDigit","getEncodedBits","mask","d","EXP_TABLE","LOG_TABLE","x","log","exp","mul","y","KanjiData","KANJI","toSJIS","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","maskPattern","isNaN","parseInt","undefined","getPenaltyN1","points","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","last","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","abs","applyMask","pattern","getBestMask","setupFormatFunc","numPatterns","Object","keys","bestPattern","lowerPenalty","Infinity","penalty","VersionCheck","Regex","NUMERIC","id","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","toString","NumericData","group","substr","remainingNum","GF","p1","p2","coeff","mod","divident","divisor","result","offset","slice","generateECPolynomial","degree","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","isArray","setupFormatInfo","matrix","bits","createData","segments","forEach","dataTotalCodewordsBits","getSymbolTotalCodewords","remainingByte","totalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","Array","ecData","maxDataSize","b","dataSize","encode","max","createCodewords","createSymbol","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","modules","c","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","dark","setupData","bind","create","options","toSJISFunc","setToSJISFunction","Polynomial","Buffer","genPoly","initialize","pad","paddedData","concat","remainder","start","buff","copy","numeric","kanji","byte","replace","RegExp","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","str","test","dijkstra","getStringByteLength","unescape","encodeURIComponent","getSegments","regex","exec","getSegmentsFromString","byteSegs","kanjiSegs","numSegs","alphaNumSegs","isKanjiModeEnabled","sort","s1","s2","map","obj","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","array","reduce","acc","seg","graph","nodes","table","prevNodeIds","nodeGroup","currentNodeIds","node","key","lastCount","prevNodeId","buildGraph","segs","buildNodes","path","find_path","optimizedSegs","curr","prevSeg","toSJISFunction","CODEWORDS_COUNT","digit","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getCapacity","usableBits","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","text","opts","cb","args","arguments","argsNum","isLastArgCb","getContext","resolve","reject","toCanvas","render","toDataURL","renderToDataURL","_","qrData","canvasEl","document","createElement","getCanvasElement","getOptions","getImageWidth","ctx","image","createImageData","qrToImageData","clearRect","width","height","style","clearCanvas","putImageData","type","rendererOpts","quality","getColorAttrib","color","attrib","alpha","hex","toFixed","svgCmd","cmd","qrcodesize","margin","bg","light","moveBy","newRow","lineLength","qrToPath","viewBox","svgTag","hex2rgba","hexCode","split","apply","hexValue","join","g","scale","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","TYPED_ARRAY_SUPPORT","arr","Uint8Array","__proto__","foo","typedArraySupport","K_MAX_LENGTH","arg","allocUnsafe","that","TypeError","ArrayBuffer","byteOffset","byteLength","RangeError","buf","fromArrayLike","fromArrayBuffer","createBuffer","actual","isBuffer","len","checked","val","fromObject","utf8ToBytes","units","codePoint","leadSurrogate","bytes","charCodeAt","isView","Symbol","species","defineProperty","configurable","enumerable","writable","isFinite","remaining","src","dst","blitBuffer","utf8Write","end","newBuf","subarray","sliceLen","target","targetStart","fill","list","_isBuffer","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","output","base64","ieee754","customInspectSymbol","for","SlowBuffer","INSPECT_MAX_BYTES","setPrototypeOf","encodingOrOffset","encoding","isEncoding","isInstance","valueOf","numberIsNaN","toPrimitive","assertSize","mustMatch","loweredCase","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","hexWrite","Number","strLen","parsed","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","kMaxLength","proto","console","error","poolSize","allocUnsafeSlow","compare","swap16","swap32","swap64","toLocaleString","equals","inspect","trim","thisStart","thisEnd","thisCopy","targetCopy","includes","toJSON","_arr","ret","out","hexSliceLookupTable","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","copyWithin","INVALID_BASE64_RE","base64clean","constructor","name","alphabet","i16","single_source_shortest_paths","s","predecessors","costs","closest","v","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","open","PriorityQueue","make","empty","pop","cost","hasOwnProperty","msg","extract_shortest_path_from_predecessor_list","T","queue","sorter","default_sorter","item","shift","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","props","tag","default","$slots","watch","$props","deep","immediate","handler","$el","generate","methods","_this","url","innerHTML","mounted","factory","___CSS_LOADER_EXPORT___","self","ampersandTest","nativeURLSearchParams","URLSearchParams","isSupportObjectConstructor","decodesPlusesCorrectly","isSupportSize","__URLSearchParams__","encodesAmpersandsCorrectly","append","URLSearchParamsPolyfill","iterable","iterator","appendTo","dict","has","getAll","query","propValue","useProxy","Proxy","construct","Function","USPProto","polyfill","toStringTag","callback","thisArg","parseToDict","getOwnPropertyNames","k","values","items","makeIterator","entries","prev","cur","search","match","decode","decodeURIComponent","next","done","pairs","JSON","stringify","prop","window","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","global","freeSelf","Date","now","reWhitespace","reTrimStart","charAt","objectProto","nativeObjectToString","symToStringTag","isOwn","unmasked","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","isBinary","nativeMax","nativeMin","service","http","listCollection","collectionId","renameCollection","collectionName","ocs","getCollectionsByResource","resourceType","resourceId","createCollection","post","response","addResource","removeResource","delete","params","state","collections","mutations","addCollections","addCollection","collection","removeCollection","filter","updateCollection","findIndex","_item","actions","fetchCollectionsByResource","baseResourceType","baseResourceId","addResourceToCollection","resources","normalizeComponent","scriptExports","render3","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","CollectionListItem","components","NcAvatar","NcActions","NcActionButton","detailsOpen","newName","computed","getIcon","resource","iconClass","typeClass","limitedResources","iconUrl","mimetype","OC","MimeType","getIconUrl","toggleDetails","showDetails","hideDetails","openRename","catch","$set","setTimeout","_vm","_c","_self","staticClass","attrs","on","_v","_s","class","rename","$event","preventDefault","directives","rawName","expression","domProps","composing","_e","_l","link","_debouncedSearch","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","cancel","flush","loading","searchCollections","finally","_sfc_main","NcSelect","isActive","Boolean","setup","selectIsOpen","generatingCodes","codes","model","isSelectOpen","find","placeholder","OCP","Collaboration","getTypes","method","title","getLabel","action","trigger","select","selectedOption","id2","setError","showSelect","$refs","focus","hideSelect","isVueComponent","object","_isVue","CollectionList","_m","ref","scopedSlots","_u","option","$$v","Config","_defineProperty","_capabilities","getCapabilities","defaultPermissions","files_sharing","default_permissions","isPublicUploadEnabled","public","upload","federatedShareDocLink","appConfig","core","federatedCloudShareDoc","defaultExpirationDate","isDefaultExpireDateEnabled","defaultExpireDate","setDate","getDate","defaultInternalExpirationDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","defaultRemoteExpirationDateString","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","defaultExpireDateEnabled","isDefaultInternalExpireDateEnforced","defaultInternalExpireDateEnforced","defaultInternalExpireDateEnabled","isDefaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isPublicShareAllowed","enabled","isMailShareAllowed","sharebymail","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","password","enforced","shouldAlwaysShowUnique","sharee","always_show_unique","allowGroupSharing","maxAutocompleteResults","config","minSearchStringLength","passwordPolicy","password_policy","allowCustomTokens","custom_tokens","getLoggerBuilder","setApp","detectUser","build","Share","ocsData","hide_download","mail_send","attributes","parse","warn","_share","share_type","permissions","owner","uid_owner","ownerDisplayName","displayname_owner","shareWith","share_with","shareWithDisplayName","share_with_displayname","shareWithDisplayNameUnique","share_with_displayname_unique","shareWithLink","share_with_link","shareWithAvatar","share_with_avatar","uidFileOwner","uid_file_owner","displaynameFileOwner","displayname_file_owner","createdTime","stime","expireDate","expiration","date","token","note","label","mailSend","hideDownload","_ref","scope","passwordExpirationTime","password_expiration_time","sendPasswordByTalk","send_password_by_talk","itemType","item_type","fileSource","file_source","fileTarget","file_target","fileParent","file_parent","hasReadPermission","PERMISSION_READ","hasCreatePermission","PERMISSION_CREATE","hasDeletePermission","PERMISSION_DELETE","hasUpdatePermission","PERMISSION_UPDATE","hasSharePermission","PERMISSION_SHARE","hasDownloadPermission","some","attribute","isFileRequest","logger","setAttribute","attrUpdate","attr","splice","canEdit","can_edit","canDelete","can_delete","viaFileid","via_fileid","viaPath","via_path","storageId","storage_id","storage","itemSource","item_source","status","required","subtitle","isUnique","ariaExpanded","ariaExpandedValue","_t","SharingEntrySimple","CheckIcon","ClipboardIcon","fileInfo","copied","copySuccess","internalLink","location","protocol","host","generateUrl","copyLinkTooltip","internalLinkSubtitle","copyLink","navigator","clipboard","writeText","showSuccess","shareEntrySimple","actionsComponent","proxy","shareUrl","generateOcsUrl","createShare","shareType","publicUpload","request","axios","share","emit","errorMessage","meta","message","Notification","showTemporary","deleteShare","updateShare","properties","openSharingDetails","shareRequestObject","handlerInput","suggestions","externalShareRequestObject","mapShareRequestToShareObject","shareDetails","$emit","openShareDetailsForCustomSettings","setCustomPermissions","is_no_user","isNoUser","user","displayName","mixins","ShareRequests","ShareDetails","shares","linkShares","reshare","canReshare","isExternal","shareInputId","random","recommendations","ShareSearch","OCA","Sharing","externalResults","results","inputPlaceholder","allowRemoteSharing","isValidQuery","noResultText","getRecommendations","onSelected","asyncFind","debounceGetSuggestions","getSuggestions","query_lookup_default","ShareType","Remote","RemoteGroup","User","Group","Team","Room","Guest","Deck","ScienceMesh","Email","format","perPage","exact","rawExactSuggestions","elem","rawSuggestions","exactSuggestions","filterOutExistingShares","formatForMultiselect","lookupEntry","lookupEnabled","condition","allSuggestions","nameCounts","desc","info","debounce","rawRecommendations","getCurrentUser","uid","sharesObj","shareTypeToIcon","icon","iconTitle","Sciencemesh","subname","server","shareWithDescription","uuid","clear-search-on-blur","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","ALL_FILE","client","getClient","SharesRequests","errors","saving","updateQueue","PQueue","concurrency","reactiveState","hasNote","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isNewShare","isFolder","isPublicShare","Link","isRemoteShare","isShareOwner","isExpiryDateEnforced","hasCustomPermissions","maxExpirationDateEnforced","getNode","async","propfindPayload","getDefaultPropfind","stat","getRootPath","details","resultToNode","fetchNode","checkShare","expirationDate","formatDateToString","UTC","getFullYear","getMonth","toISOString","onExpirationChange","formattedDate","onNoteChange","onNoteSubmit","newNote","$delete","queueUpdate","onDelete","debug","_len","propertyNames","_key","updatedShare","updateSuccessMessage","onSyncError","showError","names","property","propertyEl","focusable","querySelector","debounceQueueUpdate","NcActionLink","NcActionText","SharesMixin","viaFileTargetUrl","fileid","viaFolderName","basename","initiator","folder","SharingEntryInherited","loaded","showInheritedShares","showInheritedSharesIcon","mainTitle","subTitle","toggleTooltip","fullPath","resetState","toggleInheritedShares","fetchInheritedShares","removeShare","stopPropagation","emits","fillColor","_b","$attrs","DropdownIcon","ariaLabel","canViewText","canEditText","fileDropText","customPermissionsText","preSelectedOption","IconEyeOutline","IconPencil","supportsFileDrop","IconFileUpload","IconTune","dropDownPermissionValue","created","subscribe","unmounted","unsubscribe","selectOption","optionLabel","quickShareActions","menuButton","NcButton","NcPopover","NcDateTime","ClockIcon","expiryTime","getTime","timeFormat","dateStyle","timeStyle","is","_g","handlers","verbose","api","ratio","passwordSet","crypto","getRandomValues","ExternalShareAction","NcActionCheckbox","NcActionInput","NcActionSeparator","NcDialog","VueQrcode","Tune","IconCalendarBlank","IconQr","ErrorIcon","LockIcon","CloseIcon","PlusIcon","SharingEntryQuickShareSelect","ShareExpiryTime","shareCreationComplete","defaultExpirationDateEnabled","pending","ExternalLegacyLinkActions","ExternalLinkActions","ExternalShareActions","showQRCode","isEmailShareType","isPasswordProtected","Vue","GeneratePassword","expirationTime","moment","diff","fromNow","isTalkEnabled","appswebroots","spreed","isPasswordProtectedByTalkAvailable","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","hasUnsavedPassword","pendingDataIsMissing","pendingPassword","pendingEnforcedPassword","pendingDefaultExpirationDate","pendingEnforcedExpirationDate","isPendingShare","sharePolicyHasEnforcedProperties","enforcedPropertiesMissing","isPasswordMissing","isExpireDateMissing","newPassword","shareLink","baseURL","getBaseUrl","actionsTooltip","externalLegacyLinkActions","externalLinkActions","advanced","isPasswordPolicyEnabled","canChangeHideDownload","shareAttributes","shareAttribute","shareRequiresReview","shareReviewComplete","onNewLinkShare","shareDefaults","component","pushNewLinkShare","update","newShare","copyButton","onPasswordChange","onPasswordDisable","onPasswordSubmit","onPasswordProtectedByTalkChange","onMenuClose","onExpirationDateToggleUpdate","expirationDateChanged","event","onCancel","SharingEntryLink","minLength","actionIndex","canLinkShare","hasLinkShares","hasShares","addShare","awaitForShare","$nextTick","$children","DotsHorizontalIcon","tooltip","hasStatus","SharingEntry","NcCheckboxRadioSwitch","NcDateTimePickerNative","NcInputField","NcLoadingIcon","NcPasswordField","NcTextArea","CircleIcon","EditIcon","LinkIcon","GroupIcon","ShareIcon","UserIcon","UploadIcon","ViewIcon","MenuDownIcon","MenuUpIcon","Refresh","shareRequestValue","writeNoteToRecipientIsChecked","sharingPermission","revertSharingPermission","passwordError","advancedSectionAccordionExpanded","bundledPermissions","isFirstComponentLoad","creating","initialToken","loadingToken","userName","email","updateAtomicPermissions","isEditChecked","canCreate","isCreateChecked","isDeleteChecked","isReshareChecked","showInGridView","getShareAttribute","setShareAttribute","canDownload","hasRead","isReadChecked","hasExpirationDate","isValidShareAttribute","defaultExpiryDate","isSetDownloadButtonVisible","isPasswordEnforced","isGroupShare","isUserShare","allowsFileDrop","hasFileDropPermissions","shareButtonText","resharingIsPossible","canSetEdit","sharePermissions","canSetCreate","canSetDelete","canSetReshare","canSetDownload","canRemoveReadPermission","customPermissionsList","translatedPermissions","permission","hasPermissions","initialPermissionSet","permissionsToCheck","toLocaleLowerCase","getLanguage","advancedControlExpandedValue","errorPasswordLabel","passwordHint","isChecked","beforeMount","initializePermissions","initializeAttributes","quickPermissions","fallback","generateNewToken","generateToken","expandCustomPermissions","toggleCustomPermissions","selectedPermission","isCustomPermissions","toDateString","handleShareType","handleDefaultPermissions","handleCustomPermissions","saveShare","permissionsAndAttributes","publicShareAttributes","sharePermissionsSet","incomingShare","allSettled","at","onSave","getShareTypeIcon","EmailIcon","refInFor","InfoIcon","SharingEntryInternal","SharingInherited","SharingInput","SharingLinkList","SharingList","SharingDetailsTab","deleteEvent","expirationInterval","sharedWithMe","sections","ShareTabSections","getSections","projectsEnabled","loadState","showSharingDetailsView","shareDetailsData","returnFocusElement","internalSharesHelpText","externalSharesHelpText","additionalSharesHelpText","isSharedWithMe","getShares","fetchShares","reshares","fetchSharedWithMe","shared_with_me","all","processSharedWithMe","processShares","clearInterval","updateExpirationSubtitle","unix","relativetime","orderBy","_ref2","escape","circle","conversation","shareWithTitle","setInterval","shareOwnerId","shareOwner","unshift","shareList","listComponent","linkShareList","toggleShareDetailsView","eventData","activeElement","classList","className","startsWith","menuId","emptyContentWithSections","section","humanList","humanListBinary","formatFileSize","skipSmallSizes","binaryPrefixes","base1000","order","readableFormat","relativeSize","parseFloat","identifiers2","orders","sorting","collator","Intl","Collator","usage","a2","b2","identifier","sortNodes","sortingOptions","sortingMode","sortingOrder","sortFavoritesFirst","favorite","sortFoldersFirst","basename2","displayname","hasRequiredUtil","hasRequiredValidator","validator","util","requireUtil","nameStartChar","nameRegexp","regexName","isExist","isEmptyObject","merge","arrayMode","i2","getValue","isName","getAllMatches","matches","allmatches","startIndex","lastIndex","requireValidator","util2","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","tagname","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","assign","tags","tagFound","reachedRoot","err","tagStartPos","closingTag","tagName","substring","readAttributeStr","attrStr","attrStrStart","validateAttributeString","line","tagClosed","otg","openPos","afterAmp","validateAmpersand","t2","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","re2","validateNumberAmpersand","count","lineNumber","lines","hasRequiredOptionsBuilder","xmlNode","hasRequiredXmlNode","DocTypeReader","hasRequiredDocTypeReader","strnum","hasRequiredStrnum","ignoreAttributes","hasRequiredIgnoreAttributes","OrderedObjParser_1","hasRequiredOrderedObjParser","OptionsBuilder","requireIgnoreAttributes","ignoreAttributes2","hasRequiredNode2json","XMLParser_1","hasRequiredXMLParser","orderedJs2Xml","hasRequiredOrderedJs2Xml","json2xml","hasRequiredJson2xml","fxp","hasRequiredFxp","debug_1","hasRequiredDebug","constants","hasRequiredConstants","node2json","requireNode2json","compress","jPath","compressedObj","tagObj","propName","newJpath","textNodeName","isLeaf","isLeafTag","assignAttributes","alwaysCreateTextNode","attrMap","jpath","atrrName","propCount","prettify","requireXMLParser","buildOptions","preserveOrder","attributeNamePrefix","attributesGroupName","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","requireOptionsBuilder","OrderedObjParser","xmlNode2","child","addChild","readDocType","readEntityExp","entityName","isEntity","isElement","isAttlist","isNotation","validateEntityName","entities","hasBody","comment","regx","requireDocTypeReader","toNumber","hexRegex","numRegex","consider","decimalPoint","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","requireStrnum","getIgnoreAttributesFn","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","requireOrderedObjParser","validator2","validationOption","orderedObjParser","orderedResult","addEntity","requireOrderedJs2Xml","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attrVal","suppressBooleanAttributes","textValue","jArray","requireDebug","process","env","NODE_DEBUG","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","XMLParser","XMLBuilder","buildFromOrderedJs","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","ajPath","j2x","buildTextValNode","buildObjectNode","repeat","jObj","arrayNodeName","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","Ks","closeTag","tagEndExp","piClosingChar","requireJson2xml","XMLValidator","requireFxp","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","requireSemver","safeRe","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","includePrerelease","m2","LOOSE","FULL","raw","major","minor","patch","prerelease","compareMain","comparePre","compareBuild","release","identifierBase","base","throwErrors","er","requireParse","requireValid","requireMajor"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/4542-4542.js.map.license b/dist/4542-4542.js.map.license
deleted file mode 120000
index 2bbb284fa0e..00000000000
--- a/dist/4542-4542.js.map.license
+++ /dev/null
@@ -1 +0,0 @@
-4542-4542.js.license \ No newline at end of file
diff --git a/dist/4672-4672.js b/dist/4672-4672.js
new file mode 100644
index 00000000000..d771a8811bf
--- /dev/null
+++ b/dist/4672-4672.js
@@ -0,0 +1,2 @@
+(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[4672],{17816:function(e){e.exports=function(){"use strict";function e(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}var t=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(t,i){var r;r=function(){return function t(i,r,n){function s(o,l){if(!r[o]){if(!i[o]){if(!l&&e)return e();if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var h=r[o]={exports:{}};i[o][0].call(h.exports,(function(e){return s(i[o][1][e]||e)}),h,h.exports,t,i,r,n)}return r[o].exports}for(var a=e,o=0;o<n.length;o++)s(n[o]);return s}({1:[function(e,t,i){t.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},{}],2:[function(e,t,i){var r=e("./utils").getSymbolSize;i.getRowColCoords=function(e){if(1===e)return[];for(var t=Math.floor(e/7)+2,i=r(e),n=145===i?26:2*Math.ceil((i-13)/(2*t-2)),s=[i-7],a=1;a<t-1;a++)s[a]=s[a-1]-n;return s.push(6),s.reverse()},i.getPositions=function(e){for(var t=[],r=i.getRowColCoords(e),n=r.length,s=0;s<n;s++)for(var a=0;a<n;a++)0===s&&0===a||0===s&&a===n-1||s===n-1&&0===a||t.push([r[s],r[a]]);return t}},{"./utils":21}],3:[function(e,t,i){var r=e("./mode"),n=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function s(e){this.mode=r.ALPHANUMERIC,this.data=e}s.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(e){var t;for(t=0;t+2<=this.data.length;t+=2){var i=45*n.indexOf(this.data[t]);i+=n.indexOf(this.data[t+1]),e.put(i,11)}this.data.length%2&&e.put(n.indexOf(this.data[t]),6)},t.exports=s},{"./mode":14}],4:[function(e,t,i){function r(){this.buffer=[],this.length=0}r.prototype={get:function(e){var t=Math.floor(e/8);return 1==(this.buffer[t]>>>7-e%8&1)},put:function(e,t){for(var i=0;i<t;i++)this.putBit(1==(e>>>t-i-1&1))},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=r},{}],5:[function(e,t,i){var r=e("../utils/buffer");function n(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=r.alloc(e*e),this.reservedBit=r.alloc(e*e)}n.prototype.set=function(e,t,i,r){var n=e*this.size+t;this.data[n]=i,r&&(this.reservedBit[n]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,i){this.data[e*this.size+t]^=i},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n},{"../utils/buffer":28}],6:[function(e,t,i){var r=e("../utils/buffer"),n=e("./mode");function s(e){this.mode=n.BYTE,this.data=r.from(e)}s.getBitsLength=function(e){return 8*e},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(e){for(var t=0,i=this.data.length;t<i;t++)e.put(this.data[t],8)},t.exports=s},{"../utils/buffer":28,"./mode":14}],7:[function(e,t,i){var r=e("./error-correction-level"),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],s=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];i.getBlocksCount=function(e,t){switch(t){case r.L:return n[4*(e-1)+0];case r.M:return n[4*(e-1)+1];case r.Q:return n[4*(e-1)+2];case r.H:return n[4*(e-1)+3];default:return}},i.getTotalCodewordsCount=function(e,t){switch(t){case r.L:return s[4*(e-1)+0];case r.M:return s[4*(e-1)+1];case r.Q:return s[4*(e-1)+2];case r.H:return s[4*(e-1)+3];default:return}}},{"./error-correction-level":8}],8:[function(e,t,i){i.L={bit:1},i.M={bit:0},i.Q={bit:3},i.H={bit:2},i.isValid=function(e){return e&&void 0!==e.bit&&e.bit>=0&&e.bit<4},i.from=function(e,t){if(i.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw new Error("Param is not a string");switch(e.toLowerCase()){case"l":case"low":return i.L;case"m":case"medium":return i.M;case"q":case"quartile":return i.Q;case"h":case"high":return i.H;default:throw new Error("Unknown EC Level: "+e)}}(e)}catch(e){return t}}},{}],9:[function(e,t,i){var r=e("./utils").getSymbolSize;i.getPositions=function(e){var t=r(e);return[[0,0],[t-7,0],[0,t-7]]}},{"./utils":21}],10:[function(e,t,i){var r=e("./utils"),n=r.getBCHDigit(1335);i.getEncodedBits=function(e,t){for(var i=e.bit<<3|t,s=i<<10;r.getBCHDigit(s)-n>=0;)s^=1335<<r.getBCHDigit(s)-n;return 21522^(i<<10|s)}},{"./utils":21}],11:[function(e,t,i){var r=e("../utils/buffer"),n=r.alloc(512),s=r.alloc(256);!function(){for(var e=1,t=0;t<255;t++)n[t]=e,s[e]=t,256&(e<<=1)&&(e^=285);for(t=255;t<512;t++)n[t]=n[t-255]}(),i.log=function(e){if(e<1)throw new Error("log("+e+")");return s[e]},i.exp=function(e){return n[e]},i.mul=function(e,t){return 0===e||0===t?0:n[s[e]+s[t]]}},{"../utils/buffer":28}],12:[function(e,t,i){var r=e("./mode"),n=e("./utils");function s(e){this.mode=r.KANJI,this.data=e}s.getBitsLength=function(e){return 13*e},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(e){var t;for(t=0;t<this.data.length;t++){var i=n.toSJIS(this.data[t]);if(i>=33088&&i<=40956)i-=33088;else{if(!(i>=57408&&i<=60351))throw new Error("Invalid SJIS character: "+this.data[t]+"\nMake sure your charset is UTF-8");i-=49472}i=192*(i>>>8&255)+(255&i),e.put(i,13)}},t.exports=s},{"./mode":14,"./utils":21}],13:[function(e,t,i){i.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var r=3,n=3,s=40,a=10;function o(e,t,r){switch(e){case i.Patterns.PATTERN000:return(t+r)%2==0;case i.Patterns.PATTERN001:return t%2==0;case i.Patterns.PATTERN010:return r%3==0;case i.Patterns.PATTERN011:return(t+r)%3==0;case i.Patterns.PATTERN100:return(Math.floor(t/2)+Math.floor(r/3))%2==0;case i.Patterns.PATTERN101:return t*r%2+t*r%3==0;case i.Patterns.PATTERN110:return(t*r%2+t*r%3)%2==0;case i.Patterns.PATTERN111:return(t*r%3+(t+r)%2)%2==0;default:throw new Error("bad maskPattern:"+e)}}i.isValid=function(e){return null!=e&&""!==e&&!isNaN(e)&&e>=0&&e<=7},i.from=function(e){return i.isValid(e)?parseInt(e,10):void 0},i.getPenaltyN1=function(e){for(var t=e.size,i=0,n=0,s=0,a=null,o=null,l=0;l<t;l++){n=s=0,a=o=null;for(var c=0;c<t;c++){var h=e.get(l,c);h===a?n++:(n>=5&&(i+=r+(n-5)),a=h,n=1),(h=e.get(c,l))===o?s++:(s>=5&&(i+=r+(s-5)),o=h,s=1)}n>=5&&(i+=r+(n-5)),s>=5&&(i+=r+(s-5))}return i},i.getPenaltyN2=function(e){for(var t=e.size,i=0,r=0;r<t-1;r++)for(var s=0;s<t-1;s++){var a=e.get(r,s)+e.get(r,s+1)+e.get(r+1,s)+e.get(r+1,s+1);4!==a&&0!==a||i++}return i*n},i.getPenaltyN3=function(e){for(var t=e.size,i=0,r=0,n=0,a=0;a<t;a++){r=n=0;for(var o=0;o<t;o++)r=r<<1&2047|e.get(a,o),o>=10&&(1488===r||93===r)&&i++,n=n<<1&2047|e.get(o,a),o>=10&&(1488===n||93===n)&&i++}return i*s},i.getPenaltyN4=function(e){for(var t=0,i=e.data.length,r=0;r<i;r++)t+=e.data[r];return Math.abs(Math.ceil(100*t/i/5)-10)*a},i.applyMask=function(e,t){for(var i=t.size,r=0;r<i;r++)for(var n=0;n<i;n++)t.isReserved(n,r)||t.xor(n,r,o(e,n,r))},i.getBestMask=function(e,t){for(var r=Object.keys(i.Patterns).length,n=0,s=1/0,a=0;a<r;a++){t(a),i.applyMask(a,e);var o=i.getPenaltyN1(e)+i.getPenaltyN2(e)+i.getPenaltyN3(e)+i.getPenaltyN4(e);i.applyMask(a,e),o<s&&(s=o,n=a)}return n}},{}],14:[function(e,t,i){var r=e("./version-check"),n=e("./regex");i.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},i.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},i.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},i.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},i.MIXED={bit:-1},i.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!r.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]},i.getBestModeForData=function(e){return n.testNumeric(e)?i.NUMERIC:n.testAlphanumeric(e)?i.ALPHANUMERIC:n.testKanji(e)?i.KANJI:i.BYTE},i.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")},i.isValid=function(e){return e&&e.bit&&e.ccBits},i.from=function(e,t){if(i.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw new Error("Param is not a string");switch(e.toLowerCase()){case"numeric":return i.NUMERIC;case"alphanumeric":return i.ALPHANUMERIC;case"kanji":return i.KANJI;case"byte":return i.BYTE;default:throw new Error("Unknown mode: "+e)}}(e)}catch(e){return t}}},{"./regex":19,"./version-check":22}],15:[function(e,t,i){var r=e("./mode");function n(e){this.mode=r.NUMERIC,this.data=e.toString()}n.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(e){var t,i,r;for(t=0;t+3<=this.data.length;t+=3)i=this.data.substr(t,3),r=parseInt(i,10),e.put(r,10);var n=this.data.length-t;n>0&&(i=this.data.substr(t),r=parseInt(i,10),e.put(r,3*n+1))},t.exports=n},{"./mode":14}],16:[function(e,t,i){var r=e("../utils/buffer"),n=e("./galois-field");i.mul=function(e,t){for(var i=r.alloc(e.length+t.length-1),s=0;s<e.length;s++)for(var a=0;a<t.length;a++)i[s+a]^=n.mul(e[s],t[a]);return i},i.mod=function(e,t){for(var i=r.from(e);i.length-t.length>=0;){for(var s=i[0],a=0;a<t.length;a++)i[a]^=n.mul(t[a],s);for(var o=0;o<i.length&&0===i[o];)o++;i=i.slice(o)}return i},i.generateECPolynomial=function(e){for(var t=r.from([1]),s=0;s<e;s++)t=i.mul(t,[1,n.exp(s)]);return t}},{"../utils/buffer":28,"./galois-field":11}],17:[function(e,t,i){var r=e("../utils/buffer"),n=e("./utils"),s=e("./error-correction-level"),a=e("./bit-buffer"),o=e("./bit-matrix"),l=e("./alignment-pattern"),c=e("./finder-pattern"),h=e("./mask-pattern"),u=e("./error-correction-code"),d=e("./reed-solomon-encoder"),p=e("./version"),f=e("./format-info"),g=e("./mode"),A=e("./segments"),m=e("isarray");function v(e,t,i){var r,n,s=e.size,a=f.getEncodedBits(t,i);for(r=0;r<15;r++)n=1==(a>>r&1),r<6?e.set(r,8,n,!0):r<8?e.set(r+1,8,n,!0):e.set(s-15+r,8,n,!0),r<8?e.set(8,s-r-1,n,!0):r<9?e.set(8,15-r-1+1,n,!0):e.set(8,15-r-1,n,!0);e.set(s-8,8,1,!0)}function y(e,t,i){var s=new a;i.forEach((function(t){s.put(t.mode.bit,4),s.put(t.getLength(),g.getCharCountIndicator(t.mode,e)),t.write(s)}));var o=8*(n.getSymbolTotalCodewords(e)-u.getTotalCodewordsCount(e,t));for(s.getLengthInBits()+4<=o&&s.put(0,4);s.getLengthInBits()%8!=0;)s.putBit(0);for(var l=(o-s.getLengthInBits())/8,c=0;c<l;c++)s.put(c%2?17:236,8);return function(e,t,i){for(var s=n.getSymbolTotalCodewords(t),a=s-u.getTotalCodewordsCount(t,i),o=u.getBlocksCount(t,i),l=o-s%o,c=Math.floor(s/o),h=Math.floor(a/o),p=h+1,f=c-h,g=new d(f),A=0,m=new Array(o),v=new Array(o),y=0,C=r.from(e.buffer),w=0;w<o;w++){var b=w<l?h:p;m[w]=C.slice(A,A+b),v[w]=g.encode(m[w]),A+=b,y=Math.max(y,b)}var E,_,x=r.alloc(s),S=0;for(E=0;E<y;E++)for(_=0;_<o;_++)E<m[_].length&&(x[S++]=m[_][E]);for(E=0;E<f;E++)for(_=0;_<o;_++)x[S++]=v[_][E];return x}(s,e,t)}function C(e,t,i,r){var s;if(m(e))s=A.fromArray(e);else{if("string"!=typeof e)throw new Error("Invalid data");var a=t;if(!a){var u=A.rawSplit(e);a=p.getBestVersionForData(u,i)}s=A.fromString(e,a||40)}var d=p.getBestVersionForData(s,i);if(!d)throw new Error("The amount of data is too big to be stored in a QR Code");if(t){if(t<d)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+d+".\n")}else t=d;var f=y(t,i,s),g=n.getSymbolSize(t),C=new o(g);return function(e,t){for(var i=e.size,r=c.getPositions(t),n=0;n<r.length;n++)for(var s=r[n][0],a=r[n][1],o=-1;o<=7;o++)if(!(s+o<=-1||i<=s+o))for(var l=-1;l<=7;l++)a+l<=-1||i<=a+l||(o>=0&&o<=6&&(0===l||6===l)||l>=0&&l<=6&&(0===o||6===o)||o>=2&&o<=4&&l>=2&&l<=4?e.set(s+o,a+l,!0,!0):e.set(s+o,a+l,!1,!0))}(C,t),function(e){for(var t=e.size,i=8;i<t-8;i++){var r=i%2==0;e.set(i,6,r,!0),e.set(6,i,r,!0)}}(C),function(e,t){for(var i=l.getPositions(t),r=0;r<i.length;r++)for(var n=i[r][0],s=i[r][1],a=-2;a<=2;a++)for(var o=-2;o<=2;o++)-2===a||2===a||-2===o||2===o||0===a&&0===o?e.set(n+a,s+o,!0,!0):e.set(n+a,s+o,!1,!0)}(C,t),v(C,i,0),t>=7&&function(e,t){for(var i,r,n,s=e.size,a=p.getEncodedBits(t),o=0;o<18;o++)i=Math.floor(o/3),r=o%3+s-8-3,n=1==(a>>o&1),e.set(i,r,n,!0),e.set(r,i,n,!0)}(C,t),function(e,t){for(var i=e.size,r=-1,n=i-1,s=7,a=0,o=i-1;o>0;o-=2)for(6===o&&o--;;){for(var l=0;l<2;l++)if(!e.isReserved(n,o-l)){var c=!1;a<t.length&&(c=1==(t[a]>>>s&1)),e.set(n,o-l,c),-1==--s&&(a++,s=7)}if((n+=r)<0||i<=n){n-=r,r=-r;break}}}(C,f),isNaN(r)&&(r=h.getBestMask(C,v.bind(null,C,i))),h.applyMask(r,C),v(C,i,r),{modules:C,version:t,errorCorrectionLevel:i,maskPattern:r,segments:s}}i.create=function(e,t){if(void 0===e||""===e)throw new Error("No input text");var i,r,a=s.M;return void 0!==t&&(a=s.from(t.errorCorrectionLevel,s.M),i=p.from(t.version),r=h.from(t.maskPattern),t.toSJISFunc&&n.setToSJISFunction(t.toSJISFunc)),C(e,i,a,r)}},{"../utils/buffer":28,"./alignment-pattern":2,"./bit-buffer":4,"./bit-matrix":5,"./error-correction-code":7,"./error-correction-level":8,"./finder-pattern":9,"./format-info":10,"./mask-pattern":13,"./mode":14,"./reed-solomon-encoder":18,"./segments":20,"./utils":21,"./version":23,isarray:33}],18:[function(e,t,i){var r=e("../utils/buffer"),n=e("./polynomial"),s=e("buffer").Buffer;function a(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}a.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},a.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");var t=r.alloc(this.degree),i=s.concat([e,t],e.length+this.degree),a=n.mod(i,this.genPoly),o=this.degree-a.length;if(o>0){var l=r.alloc(this.degree);return a.copy(l,o),l}return a},t.exports=a},{"../utils/buffer":28,"./polynomial":16,buffer:30}],19:[function(e,t,i){var r="[0-9]+",n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+",s="(?:(?![A-Z0-9 $%*+\\-./:]|"+(n=n.replace(/u/g,"\\u"))+")(?:.|[\r\n]))+";i.KANJI=new RegExp(n,"g"),i.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),i.BYTE=new RegExp(s,"g"),i.NUMERIC=new RegExp(r,"g"),i.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");var a=new RegExp("^"+n+"$"),o=new RegExp("^"+r+"$"),l=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");i.testKanji=function(e){return a.test(e)},i.testNumeric=function(e){return o.test(e)},i.testAlphanumeric=function(e){return l.test(e)}},{}],20:[function(e,t,i){var r=e("./mode"),n=e("./numeric-data"),s=e("./alphanumeric-data"),a=e("./byte-data"),o=e("./kanji-data"),l=e("./regex"),c=e("./utils"),h=e("dijkstrajs");function u(e){return unescape(encodeURIComponent(e)).length}function d(e,t,i){for(var r,n=[];null!==(r=e.exec(i));)n.push({data:r[0],index:r.index,mode:t,length:r[0].length});return n}function p(e){var t,i,n=d(l.NUMERIC,r.NUMERIC,e),s=d(l.ALPHANUMERIC,r.ALPHANUMERIC,e);return c.isKanjiModeEnabled()?(t=d(l.BYTE,r.BYTE,e),i=d(l.KANJI,r.KANJI,e)):(t=d(l.BYTE_KANJI,r.BYTE,e),i=[]),n.concat(s,t,i).sort((function(e,t){return e.index-t.index})).map((function(e){return{data:e.data,mode:e.mode,length:e.length}}))}function f(e,t){switch(t){case r.NUMERIC:return n.getBitsLength(e);case r.ALPHANUMERIC:return s.getBitsLength(e);case r.KANJI:return o.getBitsLength(e);case r.BYTE:return a.getBitsLength(e)}}function g(e,t){var i,l=r.getBestModeForData(e);if((i=r.from(t,l))!==r.BYTE&&i.bit<l.bit)throw new Error('"'+e+'" cannot be encoded with mode '+r.toString(i)+".\n Suggested mode is: "+r.toString(l));switch(i!==r.KANJI||c.isKanjiModeEnabled()||(i=r.BYTE),i){case r.NUMERIC:return new n(e);case r.ALPHANUMERIC:return new s(e);case r.KANJI:return new o(e);case r.BYTE:return new a(e)}}i.fromArray=function(e){return e.reduce((function(e,t){return"string"==typeof t?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e}),[])},i.fromString=function(e,t){for(var n=function(e,t){for(var i={},n={start:{}},s=["start"],a=0;a<e.length;a++){for(var o=e[a],l=[],c=0;c<o.length;c++){var h=o[c],u=""+a+c;l.push(u),i[u]={node:h,lastCount:0},n[u]={};for(var d=0;d<s.length;d++){var p=s[d];i[p]&&i[p].node.mode===h.mode?(n[p][u]=f(i[p].lastCount+h.length,h.mode)-f(i[p].lastCount,h.mode),i[p].lastCount+=h.length):(i[p]&&(i[p].lastCount=h.length),n[p][u]=f(h.length,h.mode)+4+r.getCharCountIndicator(h.mode,t))}}s=l}for(d=0;d<s.length;d++)n[s[d]].end=0;return{map:n,table:i}}(function(e){for(var t=[],i=0;i<e.length;i++){var n=e[i];switch(n.mode){case r.NUMERIC:t.push([n,{data:n.data,mode:r.ALPHANUMERIC,length:n.length},{data:n.data,mode:r.BYTE,length:n.length}]);break;case r.ALPHANUMERIC:t.push([n,{data:n.data,mode:r.BYTE,length:n.length}]);break;case r.KANJI:t.push([n,{data:n.data,mode:r.BYTE,length:u(n.data)}]);break;case r.BYTE:t.push([{data:n.data,mode:r.BYTE,length:u(n.data)}])}}return t}(p(e,c.isKanjiModeEnabled())),t),s=h.find_path(n.map,"start","end"),a=[],o=1;o<s.length-1;o++)a.push(n.table[s[o]].node);return i.fromArray(a.reduce((function(e,t){var i=e.length-1>=0?e[e.length-1]:null;return i&&i.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)}),[]))},i.rawSplit=function(e){return i.fromArray(p(e,c.isKanjiModeEnabled()))}},{"./alphanumeric-data":3,"./byte-data":6,"./kanji-data":12,"./mode":14,"./numeric-data":15,"./regex":19,"./utils":21,dijkstrajs:31}],21:[function(e,t,i){var r,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];i.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return 4*e+17},i.getSymbolTotalCodewords=function(e){return n[e]},i.getBCHDigit=function(e){for(var t=0;0!==e;)t++,e>>>=1;return t},i.setToSJISFunction=function(e){if("function"!=typeof e)throw new Error('"toSJISFunc" is not a valid function.');r=e},i.isKanjiModeEnabled=function(){return void 0!==r},i.toSJIS=function(e){return r(e)}},{}],22:[function(e,t,i){i.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}},{}],23:[function(e,t,i){var r=e("./utils"),n=e("./error-correction-code"),s=e("./error-correction-level"),a=e("./mode"),o=e("./version-check"),l=e("isarray"),c=r.getBCHDigit(7973);function h(e,t){return a.getCharCountIndicator(e,t)+4}function u(e,t){var i=0;return e.forEach((function(e){var r=h(e.mode,t);i+=r+e.getBitsLength()})),i}i.from=function(e,t){return o.isValid(e)?parseInt(e,10):t},i.getCapacity=function(e,t,i){if(!o.isValid(e))throw new Error("Invalid QR Code version");void 0===i&&(i=a.BYTE);var s=8*(r.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,t));if(i===a.MIXED)return s;var l=s-h(i,e);switch(i){case a.NUMERIC:return Math.floor(l/10*3);case a.ALPHANUMERIC:return Math.floor(l/11*2);case a.KANJI:return Math.floor(l/13);case a.BYTE:default:return Math.floor(l/8)}},i.getBestVersionForData=function(e,t){var r,n=s.from(t,s.M);if(l(e)){if(e.length>1)return function(e,t){for(var r=1;r<=40;r++)if(u(e,r)<=i.getCapacity(r,t,a.MIXED))return r}(e,n);if(0===e.length)return 1;r=e[0]}else r=e;return function(e,t,r){for(var n=1;n<=40;n++)if(t<=i.getCapacity(n,r,e))return n}(r.mode,r.getLength(),n)},i.getEncodedBits=function(e){if(!o.isValid(e)||e<7)throw new Error("Invalid QR Code version");for(var t=e<<12;r.getBCHDigit(t)-c>=0;)t^=7973<<r.getBCHDigit(t)-c;return e<<12|t}},{"./error-correction-code":7,"./error-correction-level":8,"./mode":14,"./utils":21,"./version-check":22,isarray:33}],24:[function(e,t,i){var r=e("./can-promise"),n=e("./core/qrcode"),s=e("./renderer/canvas"),a=e("./renderer/svg-tag.js");function o(e,t,i,s,a){var o=[].slice.call(arguments,1),l=o.length,c="function"==typeof o[l-1];if(!c&&!r())throw new Error("Callback required as last argument");if(!c){if(l<1)throw new Error("Too few arguments provided");return 1===l?(i=t,t=s=void 0):2!==l||t.getContext||(s=i,i=t,t=void 0),new Promise((function(r,a){try{var o=n.create(i,s);r(e(o,t,s))}catch(e){a(e)}}))}if(l<2)throw new Error("Too few arguments provided");2===l?(a=i,i=t,t=s=void 0):3===l&&(t.getContext&&void 0===a?(a=s,s=void 0):(a=s,s=i,i=t,t=void 0));try{var h=n.create(i,s);a(null,e(h,t,s))}catch(e){a(e)}}i.create=n.create,i.toCanvas=o.bind(null,s.render),i.toDataURL=o.bind(null,s.renderToDataURL),i.toString=o.bind(null,(function(e,t,i){return a.render(e,i)}))},{"./can-promise":1,"./core/qrcode":17,"./renderer/canvas":25,"./renderer/svg-tag.js":26}],25:[function(e,t,i){var r=e("./utils");i.render=function(e,t,i){var n=i,s=t;void 0!==n||t&&t.getContext||(n=t,t=void 0),t||(s=function(){try{return document.createElement("canvas")}catch(e){throw new Error("You need to specify a canvas element")}}()),n=r.getOptions(n);var a=r.getImageWidth(e.modules.size,n),o=s.getContext("2d"),l=o.createImageData(a,a);return r.qrToImageData(l.data,e,n),function(e,t,i){e.clearRect(0,0,t.width,t.height),t.style||(t.style={}),t.height=i,t.width=i,t.style.height=i+"px",t.style.width=i+"px"}(o,s,a),o.putImageData(l,0,0),s},i.renderToDataURL=function(e,t,r){var n=r;void 0!==n||t&&t.getContext||(n=t,t=void 0),n||(n={});var s=i.render(e,t,n),a=n.type||"image/png",o=n.rendererOpts||{};return s.toDataURL(a,o.quality)}},{"./utils":27}],26:[function(e,t,i){var r=e("./utils");function n(e,t){var i=e.a/255,r=t+'="'+e.hex+'"';return i<1?r+" "+t+'-opacity="'+i.toFixed(2).slice(1)+'"':r}function s(e,t,i){var r=e+t;return void 0!==i&&(r+=" "+i),r}i.render=function(e,t,i){var a=r.getOptions(t),o=e.modules.size,l=e.modules.data,c=o+2*a.margin,h=a.color.light.a?"<path "+n(a.color.light,"fill")+' d="M0 0h'+c+"v"+c+'H0z"/>':"",u="<path "+n(a.color.dark,"stroke")+' d="'+function(e,t,i){for(var r="",n=0,a=!1,o=0,l=0;l<e.length;l++){var c=Math.floor(l%t),h=Math.floor(l/t);c||a||(a=!0),e[l]?(o++,l>0&&c>0&&e[l-1]||(r+=a?s("M",c+i,.5+h+i):s("m",n,0),n=0,a=!1),c+1<t&&e[l+1]||(r+=s("h",o),o=0)):n++}return r}(l,o,a.margin)+'"/>',d='viewBox="0 0 '+c+" "+c+'"',p='<svg xmlns="http://www.w3.org/2000/svg" '+(a.width?'width="'+a.width+'" height="'+a.width+'" ':"")+d+' shape-rendering="crispEdges">'+h+u+"</svg>\n";return"function"==typeof i&&i(null,p),p}},{"./utils":27}],27:[function(e,t,i){function r(e){if("number"==typeof e&&(e=e.toString()),"string"!=typeof e)throw new Error("Color should be defined as hex string");var t=e.slice().replace("#","").split("");if(t.length<3||5===t.length||t.length>8)throw new Error("Invalid hex color: "+e);3!==t.length&&4!==t.length||(t=Array.prototype.concat.apply([],t.map((function(e){return[e,e]})))),6===t.length&&t.push("F","F");var i=parseInt(t.join(""),16);return{r:i>>24&255,g:i>>16&255,b:i>>8&255,a:255&i,hex:"#"+t.slice(0,6).join("")}}i.getOptions=function(e){e||(e={}),e.color||(e.color={});var t=void 0===e.margin||null===e.margin||e.margin<0?4:e.margin,i=e.width&&e.width>=21?e.width:void 0,n=e.scale||4;return{width:i,scale:i?4:n,margin:t,color:{dark:r(e.color.dark||"#000000ff"),light:r(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}},i.getScale=function(e,t){return t.width&&t.width>=e+2*t.margin?t.width/(e+2*t.margin):t.scale},i.getImageWidth=function(e,t){var r=i.getScale(e,t);return Math.floor((e+2*t.margin)*r)},i.qrToImageData=function(e,t,r){for(var n=t.modules.size,s=t.modules.data,a=i.getScale(n,r),o=Math.floor((n+2*r.margin)*a),l=r.margin*a,c=[r.color.light,r.color.dark],h=0;h<o;h++)for(var u=0;u<o;u++){var d=4*(h*o+u),p=r.color.light;h>=l&&u>=l&&h<o-l&&u<o-l&&(p=c[s[Math.floor((h-l)/a)*n+Math.floor((u-l)/a)]?1:0]),e[d++]=p.r,e[d++]=p.g,e[d++]=p.b,e[d]=p.a}}},{}],28:[function(e,t,i){var r=e("isarray");s.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}();var n=s.TYPED_ARRAY_SUPPORT?2147483647:1073741823;function s(e,t,i){return s.TYPED_ARRAY_SUPPORT||this instanceof s?"number"==typeof e?l(this,e):function(e,t,i,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,i,r){if(i<0||t.byteLength<i)throw new RangeError("'offset' is out of bounds");if(t.byteLength<i+(r||0))throw new RangeError("'length' is out of bounds");var n;return n=void 0===i&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,i):new Uint8Array(t,i,r),s.TYPED_ARRAY_SUPPORT?n.__proto__=s.prototype:n=c(e,n),n}(e,t,i,r):"string"==typeof t?function(e,t){var i=0|u(t),r=o(e,i),n=r.write(t);return n!==i&&(r=r.slice(0,n)),r}(e,t):function(e,t){if(s.isBuffer(t)){var i=0|a(t.length),r=o(e,i);return 0===r.length||t.copy(r,0,0,i),r}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(n=t.length)!=n?o(e,0):c(e,t);if("Buffer"===t.type&&Array.isArray(t.data))return c(e,t.data)}var n;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}(this,e,t,i):new s(e,t,i)}function a(e){if(e>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|e}function o(e,t){var i;return s.TYPED_ARRAY_SUPPORT?(i=new Uint8Array(t)).__proto__=s.prototype:(null===(i=e)&&(i=new s(t)),i.length=t),i}function l(e,t){var i=o(e,t<0?0:0|a(t));if(!s.TYPED_ARRAY_SUPPORT)for(var r=0;r<t;++r)i[r]=0;return i}function c(e,t){for(var i=t.length<0?0:0|a(t.length),r=o(e,i),n=0;n<i;n+=1)r[n]=255&t[n];return r}function h(e,t){var i;t=t||1/0;for(var r=e.length,n=null,s=[],a=0;a<r;++a){if((i=e.charCodeAt(a))>55295&&i<57344){if(!n){if(i>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&s.push(239,191,189);continue}n=i;continue}if(i<56320){(t-=3)>-1&&s.push(239,191,189),n=i;continue}i=65536+(n-55296<<10|i-56320)}else n&&(t-=3)>-1&&s.push(239,191,189);if(n=null,i<128){if((t-=1)<0)break;s.push(i)}else if(i<2048){if((t-=2)<0)break;s.push(i>>6|192,63&i|128)}else if(i<65536){if((t-=3)<0)break;s.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return s}function u(e){return s.isBuffer(e)?e.length:"undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer)?e.byteLength:("string"!=typeof e&&(e=""+e),0===e.length?0:h(e).length)}s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1})),s.prototype.write=function(e,t,i){void 0===t||void 0===i&&"string"==typeof t?(i=this.length,t=0):isFinite(t)&&(t|=0,isFinite(i)?i|=0:i=void 0);var r=this.length-t;if((void 0===i||i>r)&&(i=r),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");return function(e,t,i,r){return function(e,t,i,r){for(var n=0;n<r&&!(n+i>=t.length||n>=e.length);++n)t[n+i]=e[n];return n}(h(t,e.length-i),e,i,r)}(this,e,t,i)},s.prototype.slice=function(e,t){var i,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),s.TYPED_ARRAY_SUPPORT)(i=this.subarray(e,t)).__proto__=s.prototype;else{var n=t-e;i=new s(n,void 0);for(var a=0;a<n;++a)i[a]=this[a+e]}return i},s.prototype.copy=function(e,t,i,r){if(i||(i=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<i&&(r=i),r===i)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-i&&(r=e.length-t+i);var n,a=r-i;if(this===e&&i<t&&t<r)for(n=a-1;n>=0;--n)e[n+t]=this[n+i];else if(a<1e3||!s.TYPED_ARRAY_SUPPORT)for(n=0;n<a;++n)e[n+t]=this[n+i];else Uint8Array.prototype.set.call(e,this.subarray(i,i+a),t);return a},s.prototype.fill=function(e,t,i){if("string"==typeof e){if("string"==typeof t?(t=0,i=this.length):"string"==typeof i&&(i=this.length),1===e.length){var r=e.charCodeAt(0);r<256&&(e=r)}}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<i)throw new RangeError("Out of range index");if(i<=t)return this;var n;if(t>>>=0,i=void 0===i?this.length:i>>>0,e||(e=0),"number"==typeof e)for(n=t;n<i;++n)this[n]=e;else{var a=s.isBuffer(e)?e:new s(e),o=a.length;for(n=0;n<i-t;++n)this[n+t]=a[n%o]}return this},s.concat=function(e,t){if(!r(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o(null,0);var i;if(void 0===t)for(t=0,i=0;i<e.length;++i)t+=e[i].length;var n=l(null,t),a=0;for(i=0;i<e.length;++i){var c=e[i];if(!s.isBuffer(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(n,a),a+=c.length}return n},s.byteLength=u,s.prototype._isBuffer=!0,s.isBuffer=function(e){return!(null==e||!e._isBuffer)},t.exports.alloc=function(e){var t=new s(e);return t.fill(0),t},t.exports.from=function(e){return new s(e)}},{isarray:33}],29:[function(e,t,i){i.byteLength=function(e){var t=l(e),i=t[0],r=t[1];return 3*(i+r)/4-r},i.toByteArray=function(e){var t,i,r=l(e),a=r[0],o=r[1],c=new s(function(e,t,i){return 3*(t+i)/4-i}(0,a,o)),h=0,u=o>0?a-4:a;for(i=0;i<u;i+=4)t=n[e.charCodeAt(i)]<<18|n[e.charCodeAt(i+1)]<<12|n[e.charCodeAt(i+2)]<<6|n[e.charCodeAt(i+3)],c[h++]=t>>16&255,c[h++]=t>>8&255,c[h++]=255&t;return 2===o&&(t=n[e.charCodeAt(i)]<<2|n[e.charCodeAt(i+1)]>>4,c[h++]=255&t),1===o&&(t=n[e.charCodeAt(i)]<<10|n[e.charCodeAt(i+1)]<<4|n[e.charCodeAt(i+2)]>>2,c[h++]=t>>8&255,c[h++]=255&t),c},i.fromByteArray=function(e){for(var t,i=e.length,n=i%3,s=[],a=16383,o=0,l=i-n;o<l;o+=a)s.push(c(e,o,o+a>l?l:o+a));return 1===n?(t=e[i-1],s.push(r[t>>2]+r[t<<4&63]+"==")):2===n&&(t=(e[i-2]<<8)+e[i-1],s.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),s.join("")};for(var r=[],n=[],s="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)r[o]=a[o],n[a.charCodeAt(o)]=o;function l(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=e.indexOf("=");return-1===i&&(i=t),[i,i===t?0:4-i%4]}function c(e,t,i){for(var n,s=[],a=t;a<i;a+=3)n=(e[a]<<16&16711680)+(e[a+1]<<8&65280)+(255&e[a+2]),s.push(r[(o=n)>>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);var o;return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},{}],30:[function(e,t,i){var r=e("base64-js"),n=e("ieee754"),s="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;i.Buffer=l,i.SlowBuffer=function(e){return+e!=e&&(e=0),l.alloc(+e)},i.INSPECT_MAX_BYTES=50;var a=2147483647;function o(e){if(e>a)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,i){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return c(e,t,i)}function c(e,t,i){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var i=0|f(e,t),r=o(i),n=r.write(e,t);return n!==i&&(r=r.slice(0,n)),r}(e,t);if(ArrayBuffer.isView(e))return d(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(V(e,ArrayBuffer)||e&&V(e.buffer,ArrayBuffer))return function(e,t,i){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(i||0))throw new RangeError('"length" is outside of buffer bounds');var r;return r=void 0===t&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,t):new Uint8Array(e,t,i),Object.setPrototypeOf(r,l.prototype),r}(e,t,i);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return l.from(r,t,i);var n=function(e){if(l.isBuffer(e)){var t=0|p(e.length),i=o(t);return 0===i.length||e.copy(i,0,0,t),i}return void 0!==e.length?"number"!=typeof e.length||j(e.length)?o(0):d(e):"Buffer"===e.type&&Array.isArray(e.data)?d(e.data):void 0}(e);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,i);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function h(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return h(e),o(e<0?0:0|p(e))}function d(e){for(var t=e.length<0?0:0|p(e.length),i=o(t),r=0;r<t;r+=1)i[r]=255&e[r];return i}function p(e){if(e>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return 0|e}function f(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||V(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var i=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===i)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return $(e).length;default:if(n)return r?-1:U(e).length;t=(""+t).toLowerCase(),n=!0}}function g(e,t,i){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if((i>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return N(this,t,i);case"utf8":case"utf-8":return S(this,t,i);case"ascii":return k(this,t,i);case"latin1":case"binary":return T(this,t,i);case"base64":return x(this,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,t,i);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function A(e,t,i){var r=e[t];e[t]=e[i],e[i]=r}function m(e,t,i,r,n){if(0===e.length)return-1;if("string"==typeof i?(r=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),j(i=+i)&&(i=n?0:e.length-1),i<0&&(i=e.length+i),i>=e.length){if(n)return-1;i=e.length-1}else if(i<0){if(!n)return-1;i=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:v(e,t,i,r,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,i):Uint8Array.prototype.lastIndexOf.call(e,t,i):v(e,[t],i,r,n);throw new TypeError("val must be string, number or Buffer")}function v(e,t,i,r,n){var s,a=1,o=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,o/=2,l/=2,i/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(n){var h=-1;for(s=i;s<o;s++)if(c(e,s)===c(t,-1===h?0:s-h)){if(-1===h&&(h=s),s-h+1===l)return h*a}else-1!==h&&(s-=s-h),h=-1}else for(i+l>o&&(i=o-l),s=i;s>=0;s--){for(var u=!0,d=0;d<l;d++)if(c(e,s+d)!==c(t,d)){u=!1;break}if(u)return s}return-1}function y(e,t,i,r){i=Number(i)||0;var n=e.length-i;r?(r=Number(r))>n&&(r=n):r=n;var s=t.length;r>s/2&&(r=s/2);for(var a=0;a<r;++a){var o=parseInt(t.substr(2*a,2),16);if(j(o))return a;e[i+a]=o}return a}function C(e,t,i,r){return F(U(t,e.length-i),e,i,r)}function w(e,t,i,r){return F(function(e){for(var t=[],i=0;i<e.length;++i)t.push(255&e.charCodeAt(i));return t}(t),e,i,r)}function b(e,t,i,r){return w(e,t,i,r)}function E(e,t,i,r){return F($(t),e,i,r)}function _(e,t,i,r){return F(function(e,t){for(var i,r,n,s=[],a=0;a<e.length&&!((t-=2)<0);++a)r=(i=e.charCodeAt(a))>>8,n=i%256,s.push(n),s.push(r);return s}(t,e.length-i),e,i,r)}function x(e,t,i){return 0===t&&i===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,i))}function S(e,t,i){i=Math.min(e.length,i);for(var r=[],n=t;n<i;){var s,a,o,l,c=e[n],h=null,u=c>239?4:c>223?3:c>191?2:1;if(n+u<=i)switch(u){case 1:c<128&&(h=c);break;case 2:128==(192&(s=e[n+1]))&&(l=(31&c)<<6|63&s)>127&&(h=l);break;case 3:s=e[n+1],a=e[n+2],128==(192&s)&&128==(192&a)&&(l=(15&c)<<12|(63&s)<<6|63&a)>2047&&(l<55296||l>57343)&&(h=l);break;case 4:s=e[n+1],a=e[n+2],o=e[n+3],128==(192&s)&&128==(192&a)&&128==(192&o)&&(l=(15&c)<<18|(63&s)<<12|(63&a)<<6|63&o)>65535&&l<1114112&&(h=l)}null===h?(h=65533,u=1):h>65535&&(h-=65536,r.push(h>>>10&1023|55296),h=56320|1023&h),r.push(h),n+=u}return function(e){var t=e.length;if(t<=I)return String.fromCharCode.apply(String,e);for(var i="",r=0;r<t;)i+=String.fromCharCode.apply(String,e.slice(r,r+=I));return i}(r)}i.kMaxLength=a,l.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),l.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(l.prototype,"parent",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.buffer}}),Object.defineProperty(l.prototype,"offset",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&l[Symbol.species]===l&&Object.defineProperty(l,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),l.poolSize=8192,l.from=function(e,t,i){return c(e,t,i)},Object.setPrototypeOf(l.prototype,Uint8Array.prototype),Object.setPrototypeOf(l,Uint8Array),l.alloc=function(e,t,i){return function(e,t,i){return h(e),e<=0?o(e):void 0!==t?"string"==typeof i?o(e).fill(t,i):o(e).fill(t):o(e)}(e,t,i)},l.allocUnsafe=function(e){return u(e)},l.allocUnsafeSlow=function(e){return u(e)},l.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==l.prototype},l.compare=function(e,t){if(V(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),V(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var i=e.length,r=t.length,n=0,s=Math.min(i,r);n<s;++n)if(e[n]!==t[n]){i=e[n],r=t[n];break}return i<r?-1:r<i?1:0},l.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return l.alloc(0);var i;if(void 0===t)for(t=0,i=0;i<e.length;++i)t+=e[i].length;var r=l.allocUnsafe(t),n=0;for(i=0;i<e.length;++i){var s=e[i];if(V(s,Uint8Array)&&(s=l.from(s)),!l.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(r,n),n+=s.length}return r},l.byteLength=f,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)A(this,t,t+1);return this},l.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)A(this,t,t+3),A(this,t+1,t+2);return this},l.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)A(this,t,t+7),A(this,t+1,t+6),A(this,t+2,t+5),A(this,t+3,t+4);return this},l.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?S(this,0,e):g.apply(this,arguments)},l.prototype.toLocaleString=l.prototype.toString,l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",t=i.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},s&&(l.prototype[s]=l.prototype.inspect),l.prototype.compare=function(e,t,i,r,n){if(V(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===i&&(i=e?e.length:0),void 0===r&&(r=0),void 0===n&&(n=this.length),t<0||i>e.length||r<0||n>this.length)throw new RangeError("out of range index");if(r>=n&&t>=i)return 0;if(r>=n)return-1;if(t>=i)return 1;if(this===e)return 0;for(var s=(n>>>=0)-(r>>>=0),a=(i>>>=0)-(t>>>=0),o=Math.min(s,a),c=this.slice(r,n),h=e.slice(t,i),u=0;u<o;++u)if(c[u]!==h[u]){s=c[u],a=h[u];break}return s<a?-1:a<s?1:0},l.prototype.includes=function(e,t,i){return-1!==this.indexOf(e,t,i)},l.prototype.indexOf=function(e,t,i){return m(this,e,t,i,!0)},l.prototype.lastIndexOf=function(e,t,i){return m(this,e,t,i,!1)},l.prototype.write=function(e,t,i,r){if(void 0===t)r="utf8",i=this.length,t=0;else if(void 0===i&&"string"==typeof t)r=t,i=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(i)?(i>>>=0,void 0===r&&(r="utf8")):(r=i,i=void 0)}var n=this.length-t;if((void 0===i||i>n)&&(i=n),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var s=!1;;)switch(r){case"hex":return y(this,e,t,i);case"utf8":case"utf-8":return C(this,e,t,i);case"ascii":return w(this,e,t,i);case"latin1":case"binary":return b(this,e,t,i);case"base64":return E(this,e,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,e,t,i);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function k(e,t,i){var r="";i=Math.min(e.length,i);for(var n=t;n<i;++n)r+=String.fromCharCode(127&e[n]);return r}function T(e,t,i){var r="";i=Math.min(e.length,i);for(var n=t;n<i;++n)r+=String.fromCharCode(e[n]);return r}function N(e,t,i){var r=e.length;(!t||t<0)&&(t=0),(!i||i<0||i>r)&&(i=r);for(var n="",s=t;s<i;++s)n+=H[e[s]];return n}function D(e,t,i){for(var r=e.slice(t,i),n="",s=0;s<r.length;s+=2)n+=String.fromCharCode(r[s]+256*r[s+1]);return n}function P(e,t,i){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>i)throw new RangeError("Trying to access beyond buffer length")}function R(e,t,i,r,n,s){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||t<s)throw new RangeError('"value" argument is out of bounds');if(i+r>e.length)throw new RangeError("Index out of range")}function B(e,t,i,r,n,s){if(i+r>e.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function L(e,t,i,r,s){return t=+t,i>>>=0,s||B(e,0,i,4),n.write(e,t,i,r,23,4),i+4}function O(e,t,i,r,s){return t=+t,i>>>=0,s||B(e,0,i,8),n.write(e,t,i,r,52,8),i+8}l.prototype.slice=function(e,t){var i=this.length;(e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),t<e&&(t=e);var r=this.subarray(e,t);return Object.setPrototypeOf(r,l.prototype),r},l.prototype.readUIntLE=function(e,t,i){e>>>=0,t>>>=0,i||P(e,t,this.length);for(var r=this[e],n=1,s=0;++s<t&&(n*=256);)r+=this[e+s]*n;return r},l.prototype.readUIntBE=function(e,t,i){e>>>=0,t>>>=0,i||P(e,t,this.length);for(var r=this[e+--t],n=1;t>0&&(n*=256);)r+=this[e+--t]*n;return r},l.prototype.readUInt8=function(e,t){return e>>>=0,t||P(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||P(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||P(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||P(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||P(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,i){e>>>=0,t>>>=0,i||P(e,t,this.length);for(var r=this[e],n=1,s=0;++s<t&&(n*=256);)r+=this[e+s]*n;return r>=(n*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,i){e>>>=0,t>>>=0,i||P(e,t,this.length);for(var r=t,n=1,s=this[e+--r];r>0&&(n*=256);)s+=this[e+--r]*n;return s>=(n*=128)&&(s-=Math.pow(2,8*t)),s},l.prototype.readInt8=function(e,t){return e>>>=0,t||P(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||P(e,2,this.length);var i=this[e]|this[e+1]<<8;return 32768&i?4294901760|i:i},l.prototype.readInt16BE=function(e,t){e>>>=0,t||P(e,2,this.length);var i=this[e+1]|this[e]<<8;return 32768&i?4294901760|i:i},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||P(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||P(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||P(e,4,this.length),n.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||P(e,4,this.length),n.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||P(e,8,this.length),n.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||P(e,8,this.length),n.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,i,r){e=+e,t>>>=0,i>>>=0,r||R(this,e,t,i,Math.pow(2,8*i)-1,0);var n=1,s=0;for(this[t]=255&e;++s<i&&(n*=256);)this[t+s]=e/n&255;return t+i},l.prototype.writeUIntBE=function(e,t,i,r){e=+e,t>>>=0,i>>>=0,r||R(this,e,t,i,Math.pow(2,8*i)-1,0);var n=i-1,s=1;for(this[t+n]=255&e;--n>=0&&(s*=256);)this[t+n]=e/s&255;return t+i},l.prototype.writeUInt8=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUInt16BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUInt32LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUInt32BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,i,r){if(e=+e,t>>>=0,!r){var n=Math.pow(2,8*i-1);R(this,e,t,i,n-1,-n)}var s=0,a=1,o=0;for(this[t]=255&e;++s<i&&(a*=256);)e<0&&0===o&&0!==this[t+s-1]&&(o=1),this[t+s]=(e/a|0)-o&255;return t+i},l.prototype.writeIntBE=function(e,t,i,r){if(e=+e,t>>>=0,!r){var n=Math.pow(2,8*i-1);R(this,e,t,i,n-1,-n)}var s=i-1,a=1,o=0;for(this[t+s]=255&e;--s>=0&&(a*=256);)e<0&&0===o&&0!==this[t+s+1]&&(o=1),this[t+s]=(e/a|0)-o&255;return t+i},l.prototype.writeInt8=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,i){return L(this,e,t,!0,i)},l.prototype.writeFloatBE=function(e,t,i){return L(this,e,t,!1,i)},l.prototype.writeDoubleLE=function(e,t,i){return O(this,e,t,!0,i)},l.prototype.writeDoubleBE=function(e,t,i){return O(this,e,t,!1,i)},l.prototype.copy=function(e,t,i,r){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(i||(i=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<i&&(r=i),r===i)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-i&&(r=e.length-t+i);var n=r-i;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,i,r);else if(this===e&&i<t&&t<r)for(var s=n-1;s>=0;--s)e[s+t]=this[s+i];else Uint8Array.prototype.set.call(e,this.subarray(i,r),t);return n},l.prototype.fill=function(e,t,i,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,i=this.length):"string"==typeof i&&(r=i,i=this.length),void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!l.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===e.length){var n=e.charCodeAt(0);("utf8"===r&&n<128||"latin1"===r)&&(e=n)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<i)throw new RangeError("Out of range index");if(i<=t)return this;var s;if(t>>>=0,i=void 0===i?this.length:i>>>0,e||(e=0),"number"==typeof e)for(s=t;s<i;++s)this[s]=e;else{var a=l.isBuffer(e)?e:l.from(e,r),o=a.length;if(0===o)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(s=0;s<i-t;++s)this[s+t]=a[s%o]}return this};var M=/[^+/0-9A-Za-z-_]/g;function U(e,t){var i;t=t||1/0;for(var r=e.length,n=null,s=[],a=0;a<r;++a){if((i=e.charCodeAt(a))>55295&&i<57344){if(!n){if(i>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&s.push(239,191,189);continue}n=i;continue}if(i<56320){(t-=3)>-1&&s.push(239,191,189),n=i;continue}i=65536+(n-55296<<10|i-56320)}else n&&(t-=3)>-1&&s.push(239,191,189);if(n=null,i<128){if((t-=1)<0)break;s.push(i)}else if(i<2048){if((t-=2)<0)break;s.push(i>>6|192,63&i|128)}else if(i<65536){if((t-=3)<0)break;s.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return s}function $(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function F(e,t,i,r){for(var n=0;n<r&&!(n+i>=t.length||n>=e.length);++n)t[n+i]=e[n];return n}function V(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function j(e){return e!=e}var H=function(){for(var e="0123456789abcdef",t=new Array(256),i=0;i<16;++i)for(var r=16*i,n=0;n<16;++n)t[r+n]=e[i]+e[n];return t}()},{"base64-js":29,ieee754:32}],31:[function(e,t,i){var r={single_source_shortest_paths:function(e,t,i){var n={},s={};s[t]=0;var a,o,l,c,h,u,d,p=r.PriorityQueue.make();for(p.push(t,0);!p.empty();)for(l in o=(a=p.pop()).value,c=a.cost,h=e[o]||{})h.hasOwnProperty(l)&&(u=c+h[l],d=s[l],(void 0===s[l]||d>u)&&(s[l]=u,p.push(l,u),n[l]=o));if(void 0!==i&&void 0===s[i]){var f=["Could not find a path from ",t," to ",i,"."].join("");throw new Error(f)}return n},extract_shortest_path_from_predecessor_list:function(e,t){for(var i=[],r=t;r;)i.push(r),e[r],r=e[r];return i.reverse(),i},find_path:function(e,t,i){var n=r.single_source_shortest_paths(e,t,i);return r.extract_shortest_path_from_predecessor_list(n,i)},PriorityQueue:{make:function(e){var t,i=r.PriorityQueue,n={};for(t in e=e||{},i)i.hasOwnProperty(t)&&(n[t]=i[t]);return n.queue=[],n.sorter=e.sorter||i.default_sorter,n},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var i={value:e,cost:t};this.queue.push(i),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};void 0!==t&&(t.exports=r)},{}],32:[function(e,t,i){i.read=function(e,t,i,r,n){var s,a,o=8*n-r-1,l=(1<<o)-1,c=l>>1,h=-7,u=i?n-1:0,d=i?-1:1,p=e[t+u];for(u+=d,s=p&(1<<-h)-1,p>>=-h,h+=o;h>0;s=256*s+e[t+u],u+=d,h-=8);for(a=s&(1<<-h)-1,s>>=-h,h+=r;h>0;a=256*a+e[t+u],u+=d,h-=8);if(0===s)s=1-c;else{if(s===l)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),s-=c}return(p?-1:1)*a*Math.pow(2,s-r)},i.write=function(e,t,i,r,n,s){var a,o,l,c=8*s-n-1,h=(1<<c)-1,u=h>>1,d=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:s-1,f=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,a=h):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+u>=1?d/l:d*Math.pow(2,1-u))*l>=2&&(a++,l/=2),a+u>=h?(o=0,a=h):a+u>=1?(o=(t*l-1)*Math.pow(2,n),a+=u):(o=t*Math.pow(2,u-1)*Math.pow(2,n),a=0));n>=8;e[i+p]=255&o,p+=f,o/=256,n-=8);for(a=a<<n|o,c+=n;c>0;e[i+p]=255&a,p+=f,a/=256,c-=8);e[i+p-f]|=128*g}},{}],33:[function(e,t,i){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}]},{},[24])(24)},t.exports=r()}));return{name:"qrcode",props:{value:null,options:Object,tag:{type:String,default:"canvas"}},render:function(e){return e(this.tag,this.$slots.default)},watch:{$props:{deep:!0,immediate:!0,handler:function(){this.$el&&this.generate()}}},methods:{generate:function(){var e=this,i=this.options,r=this.tag,n=String(this.value);"canvas"===r?t.toCanvas(this.$el,n,i,(function(e){if(e)throw e})):"img"===r?t.toDataURL(n,i,(function(t,i){if(t)throw t;e.$el.src=i})):t.toString(n,i,(function(t,i){if(t)throw t;e.$el.innerHTML=i}))}},mounted:function(){this.generate()}}}()},97380:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".fade-enter-active[data-v-42733c12], .fade-leave-active[data-v-42733c12] {\n transition: opacity 0.3s ease;\n}\n.fade-enter[data-v-42733c12], .fade-leave-to[data-v-42733c12] {\n opacity: 0;\n}\n.linked-icons[data-v-42733c12] {\n display: flex;\n}\n.linked-icons img[data-v-42733c12] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: 0.7;\n}\n.linked-icons img[data-v-42733c12]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-42733c12] {\n display: none;\n}\n.popovermenu.open[data-v-42733c12] {\n display: block;\n}\nli.collection-list-item[data-v-42733c12] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-42733c12] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-42733c12], li.collection-list-item .collection-item-name[data-v-42733c12] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-42733c12] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-42733c12] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-42733c12] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12] {\n display: flex;\n margin-left: 44px;\n border-radius: 3px;\n cursor: pointer;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-42733c12] {\n flex-grow: 1;\n padding: 3px;\n max-width: calc(100% - 30px);\n display: flex;\n}\nli.collection-list-item .resource-list-details span[data-v-42733c12] {\n display: inline-block;\n vertical-align: top;\n margin-right: 10px;\n}\nli.collection-list-item .resource-list-details span.resource-name[data-v-42733c12] {\n text-overflow: ellipsis;\n overflow: hidden;\n position: relative;\n vertical-align: top;\n white-space: nowrap;\n flex-grow: 1;\n padding: 4px;\n}\nli.collection-list-item .resource-list-details img[data-v-42733c12] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12] {\n opacity: 0.7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:hover, li.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-42733c12] {\n animation: shake-42733c12 0.6s 1 linear;\n}\n@keyframes shake-42733c12 {\n0% {\n transform: translate(15px);\n}\n20% {\n transform: translate(-15px);\n}\n40% {\n transform: translate(7px);\n}\n60% {\n transform: translate(-7px);\n}\n80% {\n transform: translate(3px);\n}\n100% {\n transform: translate(0px);\n}\n}.collection-list *[data-v-8ebb2593] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-8ebb2593] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-8ebb2593] {\n margin-top: auto;\n}\n#collection-select-container[data-v-8ebb2593] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-8ebb2593] {\n display: block;\n padding: 16px;\n opacity: 0.7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-8ebb2593]:hover {\n opacity: 1;\n}\np.hint[data-v-8ebb2593] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-8ebb2593] {\n width: 32px;\n height: 32px;\n margin: 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n margin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects[data-v-8ebb2593] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-8ebb2593] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-8ebb2593] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-8ebb2593] {\n padding: 4px;\n}\n.fade-enter-active[data-v-8ebb2593], .fade-leave-active[data-v-8ebb2593] {\n transition: opacity 0.5s;\n}\n.fade-enter[data-v-8ebb2593], .fade-leave-to[data-v-8ebb2593] {\n opacity: 0;\n}","",{version:3,sources:["webpack://./node_modules/nextcloud-vue-collections/dist/assets/index-CJAYjuyf.css"],names:[],mappings:"AAAA;EACE,6BAA6B;AAC/B;AACA;EACE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,aAAa;EACb,YAAY;EACZ,cAAc;EACd,4BAA4B;EAC5B,2BAA2B;EAC3B,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;AAChB;AACA;EACE,eAAe;EACf,YAAY;EACZ,eAAe;EACf,2BAA2B;AAC7B;AACA;EACE,eAAe;AACjB;AACA;EACE,eAAe;EACf,YAAY;EACZ,aAAa;AACf;AACA;EACE,iBAAiB;AACnB;AACA;EACE,eAAe;EACf,6CAA6C;AAC/C;AACA;EACE,YAAY;AACd;AACA;EACE,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,aAAa;EACb,iBAAiB;EACjB,kBAAkB;EAClB,eAAe;AACjB;AACA;EACE,8CAA8C;AAChD;AACA;EACE,YAAY;EACZ,YAAY;EACZ,4BAA4B;EAC5B,aAAa;AACf;AACA;EACE,qBAAqB;EACrB,mBAAmB;EACnB,kBAAkB;AACpB;AACA;EACE,uBAAuB;EACvB,gBAAgB;EAChB,kBAAkB;EAClB,mBAAmB;EACnB,mBAAmB;EACnB,YAAY;EACZ,YAAY;AACd;AACA;EACE,WAAW;EACX,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,uCAAuC;AACzC;AACA;AACA;IACI,0BAA0B;AAC9B;AACA;IACI,2BAA2B;AAC/B;AACA;IACI,yBAAyB;AAC7B;AACA;IACI,0BAA0B;AAC9B;AACA;IACI,yBAAyB;AAC7B;AACA;IACI,yBAAyB;AAC7B;AACA,CAAC;EACC,sBAAsB;AACxB;AACA;EACE,aAAa;EACb,kBAAkB;EAClB,SAAS;AACX;AACA;EACE,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,sBAAsB;AACxB;AACA;EACE,cAAc;EACd,aAAa;EACb,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,UAAU;AACZ;AACA;EACE,UAAU;EACV,iBAAiB;EACjB,gBAAgB;EAChB,oCAAoC;EACpC,mBAAmB;AACrB;AACA;EACE,WAAW;EACX,YAAY;EACZ,SAAS;EACT,YAAY;EACZ,8CAA8C;EAC9C,gBAAgB;AAClB;;AAEA,qCAAqC;AACrC;EACE,cAAc;EACd,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,2DAA2D;AAC7D;AACA;EACE,YAAY;AACd;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,UAAU;AACZ",sourcesContent:[".fade-enter-active[data-v-42733c12], .fade-leave-active[data-v-42733c12] {\n transition: opacity 0.3s ease;\n}\n.fade-enter[data-v-42733c12], .fade-leave-to[data-v-42733c12] {\n opacity: 0;\n}\n.linked-icons[data-v-42733c12] {\n display: flex;\n}\n.linked-icons img[data-v-42733c12] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: 0.7;\n}\n.linked-icons img[data-v-42733c12]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-42733c12] {\n display: none;\n}\n.popovermenu.open[data-v-42733c12] {\n display: block;\n}\nli.collection-list-item[data-v-42733c12] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-42733c12] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-42733c12], li.collection-list-item .collection-item-name[data-v-42733c12] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-42733c12] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-42733c12] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-42733c12] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12] {\n display: flex;\n margin-left: 44px;\n border-radius: 3px;\n cursor: pointer;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-42733c12] {\n flex-grow: 1;\n padding: 3px;\n max-width: calc(100% - 30px);\n display: flex;\n}\nli.collection-list-item .resource-list-details span[data-v-42733c12] {\n display: inline-block;\n vertical-align: top;\n margin-right: 10px;\n}\nli.collection-list-item .resource-list-details span.resource-name[data-v-42733c12] {\n text-overflow: ellipsis;\n overflow: hidden;\n position: relative;\n vertical-align: top;\n white-space: nowrap;\n flex-grow: 1;\n padding: 4px;\n}\nli.collection-list-item .resource-list-details img[data-v-42733c12] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12] {\n opacity: 0.7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:hover, li.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-42733c12] {\n animation: shake-42733c12 0.6s 1 linear;\n}\n@keyframes shake-42733c12 {\n0% {\n transform: translate(15px);\n}\n20% {\n transform: translate(-15px);\n}\n40% {\n transform: translate(7px);\n}\n60% {\n transform: translate(-7px);\n}\n80% {\n transform: translate(3px);\n}\n100% {\n transform: translate(0px);\n}\n}.collection-list *[data-v-8ebb2593] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-8ebb2593] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-8ebb2593] {\n margin-top: auto;\n}\n#collection-select-container[data-v-8ebb2593] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-8ebb2593] {\n display: block;\n padding: 16px;\n opacity: 0.7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-8ebb2593]:hover {\n opacity: 1;\n}\np.hint[data-v-8ebb2593] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-8ebb2593] {\n width: 32px;\n height: 32px;\n margin: 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n margin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects[data-v-8ebb2593] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-8ebb2593] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-8ebb2593] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-8ebb2593] {\n padding: 4px;\n}\n.fade-enter-active[data-v-8ebb2593], .fade-leave-active[data-v-8ebb2593] {\n transition: opacity 0.5s;\n}\n.fade-enter[data-v-8ebb2593], .fade-leave-to[data-v-8ebb2593] {\n opacity: 0;\n}"],sourceRoot:""}]);const o=a},38310:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".share-expiry-time[data-v-66d8c844]{display:inline-flex;align-items:center;justify-content:center}.share-expiry-time .hint-icon[data-v-66d8c844]{padding:0;margin:0;width:24px;height:24px}.hint-heading[data-v-66d8c844]{text-align:center;font-size:1rem;margin-top:8px;padding-bottom:8px;margin-bottom:0;border-bottom:1px solid var(--color-border)}.hint-body[data-v-66d8c844]{padding:var(--border-radius-element);max-width:300px}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/ShareExpiryTime.vue"],names:[],mappings:"AACA,oCACI,mBAAA,CACA,kBAAA,CACA,sBAAA,CAEA,+CACI,SAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CAIR,+BACI,iBAAA,CACA,cAAA,CACA,cAAA,CACA,kBAAA,CACA,eAAA,CACA,2CAAA,CAGJ,4BACI,oCAAA,CACA,eAAA",sourceRoot:""}]);const o=a},70162:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry[data-v-2dbd45b5]{display:flex;align-items:center;height:44px}.sharing-entry__summary[data-v-2dbd45b5]{padding:8px;padding-inline-start:10px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;flex:1 0;min-width:0}.sharing-entry__summary__desc[data-v-2dbd45b5]{display:inline-block;padding-bottom:0;line-height:1.2em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sharing-entry__summary__desc p[data-v-2dbd45b5],.sharing-entry__summary__desc small[data-v-2dbd45b5]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-2dbd45b5]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,yCACC,WAAA,CACA,yBAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,sBAAA,CACA,QAAA,CACA,WAAA,CAEA,+CACC,oBAAA,CACA,gBAAA,CACA,iBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,sGAEC,mCAAA,CAGD,sDACC,mCAAA",sourceRoot:""}]);const o=a},59879:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry[data-v-fe8ed59e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-fe8ed59e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;padding-inline-start:10px;line-height:1.2em}.sharing-entry__desc p[data-v-fe8ed59e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-fe8ed59e]{margin-inline-start: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,yBAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,wBAAA",sourceRoot:""}]);const o=a},38779:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry__internal .avatar-external[data-v-57874406]{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-57874406]{opacity:1;color:var(--color-success)}","",{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,CACA,0BAAA",sourceRoot:""}]);const o=a},58356:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry[data-v-43291a73]{display:flex;align-items:center;min-height:44px}.sharing-entry__summary[data-v-43291a73]{padding:8px;padding-inline-start:10px;display:flex;justify-content:space-between;flex:1 0;min-width:0}.sharing-entry__desc[data-v-43291a73]{display:flex;flex-direction:column;line-height:1.2em}.sharing-entry__desc p[data-v-43291a73]{color:var(--color-text-maxcontrast)}.sharing-entry__desc__title[data-v-43291a73]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__actions[data-v-43291a73]{display:flex;align-items:center;margin-inline-start:auto}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-43291a73]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-43291a73] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-43291a73]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-43291a73]{width:44px;height:44px;margin:0;padding:14px;margin-inline-start:auto}.sharing-entry .action-item~.action-item[data-v-43291a73],.sharing-entry .action-item~.sharing-entry__loading[data-v-43291a73]{margin-inline-start:0}.sharing-entry .icon-checkmark-color[data-v-43291a73]{opacity:1;color:var(--color-success)}.qr-code-dialog[data-v-43291a73]{display:flex;width:100%;justify-content:center}.qr-code-dialog__img[data-v-43291a73]{width:100%;height:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAEA,yCACC,WAAA,CACA,yBAAA,CACA,YAAA,CACA,6BAAA,CACA,QAAA,CACA,WAAA,CAGA,sCACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,wCACC,mCAAA,CAGD,6CACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIF,yCACC,YAAA,CACA,kBAAA,CACA,wBAAA,CAID,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,wBAAA,CAOA,+HAEC,qBAAA,CAIF,sDACC,SAAA,CACA,0BAAA,CAKF,iCACC,YAAA,CACA,UAAA,CACA,sBAAA,CAEA,sCACC,UAAA,CACA,WAAA",sourceRoot:""}]);const o=a},88522:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".share-select[data-v-2aa230f1]{display:block}.share-select[data-v-2aa230f1] .action-item__menutoggle{color:var(--color-primary-element) !important;font-size:12.5px !important;height:auto !important;min-height:auto !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__text{font-weight:normal !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__icon{height:24px !important;min-height:24px !important;width:24px !important;min-width:24px !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__wrapper{flex-direction:row-reverse !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue"],names:[],mappings:"AACA,+BACC,aAAA,CAIA,wDACC,6CAAA,CACA,2BAAA,CACA,sBAAA,CACA,0BAAA,CAEA,0EACC,6BAAA,CAGD,0EACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAGD,6EAEC,qCAAA",sourceRoot:""}]);const o=a},43570:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry[data-v-44339fa4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-44339fa4]{padding:8px;padding-inline-start:10px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-44339fa4]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-44339fa4]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-44339fa4]{margin-inline-start: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,yBAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,mCAAA",sourceRoot:""}]);const o=a},36196:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.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 .avatardiv__initials-wrapper{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,wEACC,YAAA",sourceRoot:""}]);const o=a},32932:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharingTabDetailsView[data-v-53f964d4]{display:flex;flex-direction:column;width:100%;margin:0 auto;position:relative;height:100%;overflow:hidden}.sharingTabDetailsView__header[data-v-53f964d4]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-53f964d4]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-53f964d4]{font-size:15px;padding-inline-start:.3em}.sharingTabDetailsView__wrapper[data-v-53f964d4]{position:relative;overflow:scroll;flex-shrink:1;padding:4px;padding-inline-end:12px}.sharingTabDetailsView__quick-permissions[data-v-53f964d4]{display:flex;justify-content:center;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-53f964d4]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-53f964d4]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-53f964d4]:nth-child(1){align-items:center;justify-content:center;padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-53f964d4] label span{display:flex;flex-direction:column}.sharingTabDetailsView__quick-permissions div span[data-v-53f964d4] span.checkbox-content__text.checkbox-radio-switch__text{flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-53f964d4] span.checkbox-content__text.checkbox-radio-switch__text .subline{display:block;flex-basis:100%}.sharingTabDetailsView__advanced-control[data-v-53f964d4]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-53f964d4]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-53f964d4]{width:100%;margin-bottom:.5em;text-align:start;padding-inline-start:0}.sharingTabDetailsView__advanced section textarea[data-v-53f964d4],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-53f964d4]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-53f964d4]{height:80px;margin:0}.sharingTabDetailsView__advanced section span[data-v-53f964d4] label{padding-inline-start:0 !important;background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-53f964d4]{padding-inline-start:1.5em}.sharingTabDetailsView__label[data-v-53f964d4]{padding-block-end:6px}.sharingTabDetailsView__delete>button[data-v-53f964d4]:first-child{color:#df0707}.sharingTabDetailsView__footer[data-v-53f964d4]{width:100%;display:flex;position:sticky;bottom:0;flex-direction:column;justify-content:space-between;align-items:flex-start;background:linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background))}.sharingTabDetailsView__footer .button-group[data-v-53f964d4]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-53f964d4]{margin-inline-start:16px}.sharingTabDetailsView__footer .button-group button[data-v-53f964d4]:first-child{margin-inline-start:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingDetailsTab.vue"],names:[],mappings:"AACA,wCACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,aAAA,CACA,iBAAA,CACA,WAAA,CACA,eAAA,CAEA,gDACC,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,WAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,wDACC,cAAA,CACA,yBAAA,CAMH,iDACC,iBAAA,CACA,eAAA,CACA,aAAA,CACA,WAAA,CACA,uBAAA,CAGD,2DACC,YAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,YAAA,CAGD,+EACC,YAAA,CACA,qBAAA,CAID,4HACC,cAAA,CAEA,qIACC,aAAA,CACA,eAAA,CAQL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,gBAAA,CACA,sBAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CACA,QAAA,CAYD,qEACC,iCAAA,CACA,mCAAA,CACA,sBAAA,CAGD,2FACC,0BAAA,CAKH,+CACC,qBAAA,CAIA,mEACC,aAAA,CAIF,gDACC,UAAA,CACA,YAAA,CACA,eAAA,CACA,QAAA,CACA,qBAAA,CACA,6BAAA,CACA,sBAAA,CACA,2FAAA,CAEA,8DACC,YAAA,CACA,6BAAA,CACA,UAAA,CACA,eAAA,CAEA,qEACC,wBAAA,CAEA,iFACC,qBAAA",sourceRoot:""}]);const o=a},56467:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".sharing-entry__inherited .avatar-shared[data-v-a6cc72e6]{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",sourceRoot:""}]);const o=a},53114:(e,t,i)=>{"use strict";i.d(t,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([e.id,".emptyContentWithSections[data-v-630c7354]{margin:1rem auto}.sharingTab[data-v-630c7354]{position:relative;height:100%}.sharingTab__content[data-v-630c7354]{padding:0 6px}.sharingTab__content section[data-v-630c7354]{padding-bottom:16px}.sharingTab__content section .section-header[data-v-630c7354]{margin-top:2px;margin-bottom:2px;display:flex;align-items:center;padding-bottom:4px}.sharingTab__content section .section-header h4[data-v-630c7354]{margin:0;font-size:16px}.sharingTab__content section .section-header .visually-hidden[data-v-630c7354]{display:none}.sharingTab__content section .section-header .hint-icon[data-v-630c7354]{color:var(--color-primary-element)}.sharingTab__content>section[data-v-630c7354]:not(:last-child){border-bottom:2px solid var(--color-border)}.sharingTab__additionalContent[data-v-630c7354]{margin:44px 0}.hint-body[data-v-630c7354]{max-width:300px;padding:var(--border-radius-element)}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AACA,2CACC,gBAAA,CAGD,6BACC,iBAAA,CACA,WAAA,CAEA,sCACC,aAAA,CAEA,8CACC,mBAAA,CAEA,8DACC,cAAA,CACA,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,iEACC,QAAA,CACA,cAAA,CAGD,+EACC,YAAA,CAGD,yEACC,kCAAA,CAOH,+DACC,2CAAA,CAKF,gDACC,aAAA,CAIF,4BACC,eAAA,CACA,oCAAA",sourceRoot:""}]);const o=a},48318:function(e,t,i){!function(e){"use strict";var t,i=function(){try{if(e.URLSearchParams&&"bar"===new e.URLSearchParams("foo=bar").get("foo"))return e.URLSearchParams}catch(e){}return null}(),r=i&&"a=1"===new i({a:1}).toString(),n=i&&"+"===new i("s=%2B").get("s"),s=i&&"size"in i.prototype,a="__URLSearchParams__",o=!i||((t=new i).append("s"," &"),"s=+%26"===t.toString()),l=p.prototype,c=!(!e.Symbol||!e.Symbol.iterator);if(!(i&&r&&n&&o&&s)){l.append=function(e,t){v(this[a],e,t)},l.delete=function(e){delete this[a][e]},l.get=function(e){var t=this[a];return this.has(e)?t[e][0]:null},l.getAll=function(e){var t=this[a];return this.has(e)?t[e].slice(0):[]},l.has=function(e){return C(this[a],e)},l.set=function(e,t){this[a][e]=[""+t]},l.toString=function(){var e,t,i,r,n=this[a],s=[];for(t in n)for(i=f(t),e=0,r=n[t];e<r.length;e++)s.push(i+"="+f(r[e]));return s.join("&")};var h,u=e.Proxy&&i&&(!n||!o||!r||!s);u?(h=new Proxy(i,{construct:function(e,t){return new e(new p(t[0]).toString())}})).toString=Function.prototype.toString.bind(p):h=p,Object.defineProperty(e,"URLSearchParams",{value:h});var d=e.URLSearchParams.prototype;d.polyfill=!0,!u&&e.Symbol&&(d[e.Symbol.toStringTag]="URLSearchParams"),"forEach"in d||(d.forEach=function(e,t){var i=m(this.toString());Object.getOwnPropertyNames(i).forEach((function(r){i[r].forEach((function(i){e.call(t,i,r,this)}),this)}),this)}),"sort"in d||(d.sort=function(){var e,t,i,r=m(this.toString()),n=[];for(e in r)n.push(e);for(n.sort(),t=0;t<n.length;t++)this.delete(n[t]);for(t=0;t<n.length;t++){var s=n[t],a=r[s];for(i=0;i<a.length;i++)this.append(s,a[i])}}),"keys"in d||(d.keys=function(){var e=[];return this.forEach((function(t,i){e.push(i)})),A(e)}),"values"in d||(d.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),A(e)}),"entries"in d||(d.entries=function(){var e=[];return this.forEach((function(t,i){e.push([i,t])})),A(e)}),c&&(d[e.Symbol.iterator]=d[e.Symbol.iterator]||d.entries),"size"in d||Object.defineProperty(d,"size",{get:function(){var e=m(this.toString());if(d===this)throw new TypeError("Illegal invocation at URLSearchParams.invokeGetter");return Object.keys(e).reduce((function(t,i){return t+e[i].length}),0)}})}function p(e){((e=e||"")instanceof URLSearchParams||e instanceof p)&&(e=e.toString()),this[a]=m(e)}function f(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'\(\)~]|%20|%00/g,(function(e){return t[e]}))}function g(e){return e.replace(/[ +]/g,"%20").replace(/(%[a-f0-9]{2})+/gi,(function(e){return decodeURIComponent(e)}))}function A(t){var i={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return c&&(i[e.Symbol.iterator]=function(){return i}),i}function m(e){var t={};if("object"==typeof e)if(y(e))for(var i=0;i<e.length;i++){var r=e[i];if(!y(r)||2!==r.length)throw new TypeError("Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements");v(t,r[0],r[1])}else for(var n in e)e.hasOwnProperty(n)&&v(t,n,e[n]);else{0===e.indexOf("?")&&(e=e.slice(1));for(var s=e.split("&"),a=0;a<s.length;a++){var o=s[a],l=o.indexOf("=");-1<l?v(t,g(o.slice(0,l)),g(o.slice(l+1))):o&&v(t,g(o),"")}}return t}function v(e,t,i){var r="string"==typeof i?i:null!=i&&"function"==typeof i.toString?i.toString():JSON.stringify(i);C(e,t)?e[t].push(r):e[t]=[r]}function y(e){return!!e&&"[object Array]"===Object.prototype.toString.call(e)}function C(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(void 0!==i.g?i.g:"undefined"!=typeof window?window:this)},51366:(e,i,r)=>{"use strict";r.r(i),r.d(i,{default:()=>Bi});var n=r(21777),s=r(35810),a=r(32981),o=r(63814),l=r(85072),c=r.n(l),h=r(97825),u=r.n(h),d=r(77659),p=r.n(d),f=r(55056),g=r.n(f),A=r(10540),m=r.n(A),v=r(41113),y=r.n(v),C=r(97380),w={};w.styleTagTransform=y(),w.setAttributes=g(),w.insert=p().bind(null,"head"),w.domAPI=u(),w.insertStyleElement=m(),c()(C.A,w),C.A&&C.A.locals&&C.A.locals;var b=r(53334),E=r(41944),_=r(67607);const x=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},S="object"==typeof global&&global&&global.Object===Object&&global;var I="object"==typeof self&&self&&self.Object===Object&&self;const k=S||I||Function("return this")(),T=function(){return k.Date.now()};var N=/\s/;var D=/^\s+/;const P=function(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&N.test(e.charAt(t)););return t}(e)+1).replace(D,""):e},R=k.Symbol;var B=Object.prototype,L=B.hasOwnProperty,O=B.toString,M=R?R.toStringTag:void 0;var U=Object.prototype.toString;var $=R?R.toStringTag:void 0;const F=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":$&&$ in Object(e)?function(e){var t=L.call(e,M),i=e[M];try{e[M]=void 0;var r=!0}catch(e){}var n=O.call(e);return r&&(t?e[M]=i:delete e[M]),n}(e):function(e){return U.call(e)}(e)};var V=/^[-+]0x[0-9a-f]+$/i,j=/^0b[01]+$/i,H=/^0o[0-7]+$/i,z=parseInt;const q=function(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return null!=e&&"object"==typeof e}(e)&&"[object Symbol]"==F(e)}(e))return NaN;if(x(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=x(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=P(e);var i=j.test(e);return i||H.test(e)?z(e.slice(2),i?2:8):V.test(e)?NaN:+e};var G=Math.max,Y=Math.min;var W=r(24764),X=r(57505),Q=r(85471),Z=r(65043);const K=new class{constructor(){this.http=Z.Ay}listCollection(e){return this.http.get((0,o.KT)("collaboration/resources/collections/{collectionId}",{collectionId:e}))}renameCollection(e,t){return this.http.put((0,o.KT)("collaboration/resources/collections/{collectionId}",{collectionId:e}),{collectionName:t}).then((e=>e.data.ocs.data))}getCollectionsByResource(e,t){return this.http.get((0,o.KT)("collaboration/resources/{resourceType}/{resourceId}",{resourceType:e,resourceId:t})).then((e=>e.data.ocs.data))}createCollection(e,t,i){return this.http.post((0,o.KT)("collaboration/resources/{resourceType}/{resourceId}",{resourceType:e,resourceId:t}),{name:i}).then((e=>e.data.ocs.data))}addResource(e,t,i){return i=""+i,this.http.post((0,o.KT)("collaboration/resources/collections/{collectionId}",{collectionId:e}),{resourceType:t,resourceId:i}).then((e=>e.data.ocs.data))}removeResource(e,t,i){return this.http.delete((0,o.KT)("collaboration/resources/collections/{collectionId}",{collectionId:e}),{params:{resourceType:t,resourceId:i}}).then((e=>e.data.ocs.data))}search(e){return this.http.get((0,o.KT)("collaboration/resources/collections/search/{query}",{query:e})).then((e=>e.data.ocs.data))}},J=(0,Q.Kh)({collections:[]}),ee={addCollections(e){(0,Q.hZ)(J,"collections",e)},addCollection(e){J.collections.push(e)},removeCollection(e){(0,Q.hZ)(J,"collections",J.collections.filter((t=>t.id!==e)))},updateCollection(e){const t=J.collections.findIndex((t=>t.id===e.id));-1!==t?(0,Q.hZ)(J.collections,t,e):J.collections.push(e)}},te={fetchCollectionsByResource:({resourceType:e,resourceId:t})=>K.getCollectionsByResource(e,t).then((e=>(ee.addCollections(e),e))),createCollection:({baseResourceType:e,baseResourceId:t,resourceType:i,resourceId:r,name:n})=>K.createCollection(e,t,n).then((e=>{ee.addCollection(e),te.addResourceToCollection({collectionId:e.id,resourceType:i,resourceId:r})})),renameCollection:({collectionId:e,name:t})=>K.renameCollection(e,t).then((e=>(ee.updateCollection(e),e))),addResourceToCollection:({collectionId:e,resourceType:t,resourceId:i})=>K.addResource(e,t,i).then((e=>(ee.updateCollection(e),e))),removeResource:({collectionId:e,resourceType:t,resourceId:i})=>K.removeResource(e,t,i).then((e=>{e.resources.length>0?ee.updateCollection(e):ee.removeCollection(e)})),search:e=>K.search(e)};function ie(e,t,i,r,n,s,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),r&&(c.functional=!0),s&&(c._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):n&&(l=o?function(){n.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:n),l)if(c.functional){c._injectStyles=l;var h=c.render;c.render=function(e,t){return l.call(t),h(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:e,options:c}}const re=ie({name:"CollectionListItem",components:{NcAvatar:E.A,NcActions:W.A,NcActionButton:X.A},props:{collection:{type:Object,default:null}},data:()=>({detailsOpen:!1,newName:null,error:{}}),computed:{getIcon:()=>e=>[e.iconClass],typeClass:()=>e=>"resource-type-"+e.type,limitedResources:()=>e=>e.resources?e.resources.slice(0,2):[],iconUrl:()=>e=>e.mimetype?OC.MimeType.getIconUrl(e.mimetype):e.iconUrl?e.iconUrl:""},methods:{t:b.t,toggleDetails(){this.detailsOpen=!this.detailsOpen},showDetails(){this.detailsOpen=!0},hideDetails(){this.detailsOpen=!1},removeResource(e,t){te.removeResource({collectionId:e.id,resourceType:t.type,resourceId:t.id})},openRename(){this.newName=this.collection.name},renameCollection(){""!==this.newName?te.renameCollection({collectionId:this.collection.id,name:this.newName}).then((e=>{this.newName=null})).catch((e=>{this.$set(this.error,"rename",(0,b.t)("core","Failed to rename the project")),console.error(e),setTimeout((()=>{(0,Q.hZ)(this.error,"rename",null)}),3e3)})):this.newName=null}}},(function(){var e=this,t=e._self._c;return t("li",{staticClass:"collection-list-item"},[t("NcAvatar",{staticClass:"collection-avatar",attrs:{"display-name":e.collection.name,"allow-placeholder":""}}),null===e.newName?t("span",{staticClass:"collection-item-name",attrs:{title:""},on:{click:e.showDetails}},[e._v(e._s(e.collection.name))]):t("form",{class:{shouldshake:e.error.rename},on:{submit:function(t){return t.preventDefault(),e.renameCollection.apply(null,arguments)}}},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.newName,expression:"newName"}],attrs:{type:"text",autocomplete:"off",autocapitalize:"off"},domProps:{value:e.newName},on:{input:function(t){t.target.composing||(e.newName=t.target.value)}}}),t("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]),e.detailsOpen||null!==e.newName?e._e():t("div",{staticClass:"linked-icons"},e._l(e.limitedResources(e.collection),(function(i){return t("a",{key:i.type+"|"+i.id,class:e.typeClass(i),attrs:{title:i.name,href:i.link}},[t("img",{attrs:{src:e.iconUrl(i)}})])})),0),null===e.newName?t("span",{staticClass:"sharingOptionsGroup"},[t("NcActions",[t("NcActionButton",{attrs:{icon:"icon-info"},on:{click:function(t){return t.preventDefault(),e.toggleDetails.apply(null,arguments)}}},[e._v(" "+e._s(e.detailsOpen?e.t("core","Hide details"):e.t("core","Show details"))+" ")]),t("NcActionButton",{attrs:{icon:"icon-rename"},on:{click:function(t){return t.preventDefault(),e.openRename.apply(null,arguments)}}},[e._v(" "+e._s(e.t("core","Rename project"))+" ")])],1)],1):e._e(),t("transition",{attrs:{name:"fade"}},[e.error.rename?t("div",{staticClass:"error"},[e._v(" "+e._s(e.error.rename)+" ")]):e._e()]),t("transition",{attrs:{name:"fade"}},[e.detailsOpen?t("ul",{staticClass:"resource-list-details"},e._l(e.collection.resources,(function(i){return t("li",{key:i.type+"|"+i.id,class:e.typeClass(i)},[t("a",{attrs:{href:i.link}},[t("img",{attrs:{src:e.iconUrl(i)}}),t("span",{staticClass:"resource-name"},[e._v(e._s(i.name||""))])]),t("span",{staticClass:"icon-close",on:{click:function(t){return e.removeResource(e.collection,i)}}})])})),0):e._e()])],1)}),[],!1,null,"42733c12",null,null).exports,ne=function(e,t,i){var r,n,s,a,o,l,c=0,h=!1,u=!1,d=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function p(t){var i=r,s=n;return r=n=void 0,c=t,a=e.apply(s,i)}function f(e){var i=e-l;return void 0===l||i>=t||i<0||u&&e-c>=s}function g(){var e=T();if(f(e))return A(e);o=setTimeout(g,function(e){var i=t-(e-l);return u?Y(i,s-(e-c)):i}(e))}function A(e){return o=void 0,d&&r?p(e):(r=n=void 0,a)}function m(){var e=T(),i=f(e);if(r=arguments,n=this,l=e,i){if(void 0===o)return function(e){return c=e,o=setTimeout(g,t),h?p(e):a}(l);if(u)return clearTimeout(o),o=setTimeout(g,t),p(l)}return void 0===o&&(o=setTimeout(g,t)),a}return t=q(t)||0,x(i)&&(h=!!i.leading,s=(u="maxWait"in i)?G(q(i.maxWait)||0,t):s,d="trailing"in i?!!i.trailing:d),m.cancel=function(){void 0!==o&&clearTimeout(o),c=0,r=l=n=o=void 0},m.flush=function(){return void 0===o?a:A(T())},m}((function(e,t){""!==e&&(t(!0),te.search(e).then((e=>{this.searchCollections=e})).catch((e=>{console.error("Failed to search for collections",e)})).finally((()=>{t(!1)})))}),500,{}),se={name:"CollectionList",components:{CollectionListItem:re,NcAvatar:E.A,NcSelect:_.A},props:{type:{type:String,default:null},id:{type:String,default:null},name:{type:String,default:""},isActive:{type:Boolean,default:!0}},setup:()=>({state:J}),data:()=>({selectIsOpen:!1,generatingCodes:!1,codes:void 0,value:null,model:{},searchCollections:[],error:null,isSelectOpen:!1}),computed:{collections(){return this.state.collections.filter((e=>void 0!==e.resources.find((e=>e&&e.id===""+this.id&&e.type===this.type))))},placeholder(){return this.isSelectOpen?(0,b.t)("core","Type to search for existing projects"):(0,b.t)("core","Add to a project")},options(){const e=[];window.OCP.Collaboration.getTypes().sort().forEach((t=>{e.push({method:0,type:t,title:window.OCP.Collaboration.getLabel(t),class:window.OCP.Collaboration.getIcon(t),action:()=>window.OCP.Collaboration.trigger(t)})}));for(const t in this.searchCollections)-1===this.collections.findIndex((e=>e.id===this.searchCollections[t].id))&&e.push({method:1,title:this.searchCollections[t].name,collectionId:this.searchCollections[t].id});return e}},watch:{type(){this.isActive&&te.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},id(){this.isActive&&te.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},isActive(e){e&&te.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})}},mounted(){te.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},methods:{t:b.t,select(e,t){0===e.method&&e.action().then((t=>{te.createCollection({baseResourceType:this.type,baseResourceId:this.id,resourceType:e.type,resourceId:t,name:this.name}).catch((e=>{this.setError((0,b.t)("core","Failed to create a project"),e)}))})).catch((e=>{console.error("No resource selected",e)})),1===e.method&&te.addResourceToCollection({collectionId:e.collectionId,resourceType:this.type,resourceId:this.id}).catch((e=>{this.setError((0,b.t)("core","Failed to add the item to the project"),e)}))},search(e,t){ne.bind(this)(e,t)},showSelect(){this.selectIsOpen=!0,this.$refs.select.$el.focus()},hideSelect(){this.selectIsOpen=!1},isVueComponent:e=>e._isVue,setError(e,t){console.error(e,t),this.error=e,setTimeout((()=>{this.error=null}),5e3)}}},ae=ie(se,(function(){var e=this,t=e._self._c;return e.collections&&e.type&&e.id?t("ul",{staticClass:"collection-list",attrs:{id:"collection-list"}},[t("li",{on:{click:e.showSelect}},[e._m(0),t("div",{attrs:{id:"collection-select-container"}},[t("NcSelect",{ref:"select",attrs:{"aria-label-combobox":e.t("core","Add to a project"),options:e.options,placeholder:e.placeholder,label:"title",limit:5},on:{close:function(t){e.isSelectOpen=!1},open:function(t){e.isSelectOpen=!0},"option:selected":e.select,search:e.search},scopedSlots:e._u([{key:"selected-option",fn:function(i){return[t("span",{staticClass:"option__desc"},[t("span",{staticClass:"option__title"},[e._v(e._s(i.title))])])]}},{key:"option",fn:function(i){return[t("span",{staticClass:"option__wrapper"},[i.class?t("span",{staticClass:"avatar",class:i.class}):2!==i.method?t("NcAvatar",{attrs:{"allow-placeholder":"","display-name":i.title}}):e._e(),t("span",{staticClass:"option__title"},[e._v(e._s(i.title))])],1)]}}],null,!1,2397208459),model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[t("p",{staticClass:"hint"},[e._v(" "+e._s(e.t("core","Connect items to a project to make them easier to find"))+" ")])])],1)]),t("transition",{attrs:{name:"fade"}},[e.error?t("li",{staticClass:"error"},[e._v(" "+e._s(e.error)+" ")]):e._e()]),e._l(e.collections,(function(e){return t("CollectionListItem",{key:e.id,attrs:{collection:e}})}))],2):e._e()}),[function(){var e=this._self._c;return e("div",{staticClass:"avatar"},[e("span",{staticClass:"icon-projects"})])}],!1,null,"8ebb2593",null,null).exports;var oe=r(77905),le=r(83241),ce=r(30912),he=r(19231),ue=r(97012),de=r(87485);class pe{constructor(){(function(e,t,i){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i})(this,"_capabilities",void 0),this._capabilities=(0,de.F)()}get defaultPermissions(){return this._capabilities.files_sharing?.default_permissions}get isPublicUploadEnabled(){return!0===this._capabilities.files_sharing?.public?.upload}get federatedShareDocLink(){return window.OC.appConfig.core.federatedCloudShareDoc}get defaultExpirationDate(){return this.isDefaultExpireDateEnabled&&null!==this.defaultExpireDate?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}get defaultInternalExpirationDate(){return this.isDefaultInternalExpireDateEnabled&&null!==this.defaultInternalExpireDate?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}get defaultRemoteExpirationDateString(){return this.isDefaultRemoteExpireDateEnabled&&null!==this.defaultRemoteExpireDate?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}get enforcePasswordForPublicLink(){return!0===window.OC.appConfig.core.enforcePasswordForPublicLink}get enableLinkPasswordByDefault(){return!0===window.OC.appConfig.core.enableLinkPasswordByDefault}get isDefaultExpireDateEnforced(){return!0===window.OC.appConfig.core.defaultExpireDateEnforced}get isDefaultExpireDateEnabled(){return!0===window.OC.appConfig.core.defaultExpireDateEnabled}get isDefaultInternalExpireDateEnforced(){return!0===window.OC.appConfig.core.defaultInternalExpireDateEnforced}get isDefaultInternalExpireDateEnabled(){return!0===window.OC.appConfig.core.defaultInternalExpireDateEnabled}get isDefaultRemoteExpireDateEnforced(){return!0===window.OC.appConfig.core.defaultRemoteExpireDateEnforced}get isDefaultRemoteExpireDateEnabled(){return!0===window.OC.appConfig.core.defaultRemoteExpireDateEnabled}get isRemoteShareAllowed(){return!0===window.OC.appConfig.core.remoteShareAllowed}get isPublicShareAllowed(){return!0===this._capabilities?.files_sharing?.public?.enabled}get isMailShareAllowed(){return!0===this._capabilities?.files_sharing?.sharebymail?.enabled&&!0===this.isPublicShareAllowed}get defaultExpireDate(){return window.OC.appConfig.core.defaultExpireDate}get defaultInternalExpireDate(){return window.OC.appConfig.core.defaultInternalExpireDate}get defaultRemoteExpireDate(){return window.OC.appConfig.core.defaultRemoteExpireDate}get isResharingAllowed(){return!0===window.OC.appConfig.core.resharingAllowed}get isPasswordForMailSharesRequired(){return!0===this._capabilities.files_sharing?.sharebymail?.password?.enforced}get shouldAlwaysShowUnique(){return!0===this._capabilities.files_sharing?.sharee?.always_show_unique}get allowGroupSharing(){return!0===window.OC.appConfig.core.allowGroupSharing}get maxAutocompleteResults(){return parseInt(window.OC.config["sharing.maxAutocompleteResults"],10)||25}get minSearchStringLength(){return parseInt(window.OC.config["sharing.minSearchStringLength"],10)||0}get passwordPolicy(){return this._capabilities?.password_policy||{}}get allowCustomTokens(){return this._capabilities?.files_sharing?.public?.custom_tokens}}var fe=r(35947);const ge=(0,fe.YK)().setApp("files_sharing").detectUser().build();class Ae{constructor(e){if(function(e,t,i){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i}(this,"_share",void 0),e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),"string"==typeof e.id&&(e.id=Number.parseInt(e.id)),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,e.attributes&&"string"==typeof e.attributes)try{e.attributes=JSON.parse(e.attributes)}catch(t){console.warn("Could not parse share attributes returned by server",e.attributes)}e.attributes=e.attributes??[],this._share=e}get state(){return this._share}get id(){return this._share.id}get type(){return this._share.share_type}get permissions(){return this._share.permissions}get attributes(){return this._share.attributes||[]}set permissions(e){this._share.permissions=e}get owner(){return this._share.uid_owner}get ownerDisplayName(){return this._share.displayname_owner}get shareWith(){return this._share.share_with}get shareWithDisplayName(){return this._share.share_with_displayname||this._share.share_with}get shareWithDisplayNameUnique(){return this._share.share_with_displayname_unique||this._share.share_with}get shareWithLink(){return this._share.share_with_link}get shareWithAvatar(){return this._share.share_with_avatar}get uidFileOwner(){return this._share.uid_file_owner}get displaynameFileOwner(){return this._share.displayname_file_owner||this._share.uid_file_owner}get createdTime(){return this._share.stime}get expireDate(){return this._share.expiration}set expireDate(e){this._share.expiration=e}get token(){return this._share.token}set token(e){this._share.token=e}get note(){return this._share.note}set note(e){this._share.note=e}get label(){return this._share.label??""}set label(e){this._share.label=e}get mailSend(){return!0===this._share.mail_send}get hideDownload(){return!0===this._share.hide_download||void 0!==this.attributes.find?.((e=>{let{scope:t,key:i,value:r}=e;return"permissions"===t&&"download"===i&&!r}))}set hideDownload(e){this._share.hide_download=!0===e}get password(){return this._share.password}set password(e){this._share.password=e}get passwordExpirationTime(){return this._share.password_expiration_time}set passwordExpirationTime(e){this._share.password_expiration_time=e}get sendPasswordByTalk(){return this._share.send_password_by_talk}set sendPasswordByTalk(e){this._share.send_password_by_talk=e}get path(){return this._share.path}get itemType(){return this._share.item_type}get mimetype(){return this._share.mimetype}get fileSource(){return this._share.file_source}get fileTarget(){return this._share.file_target}get fileParent(){return this._share.file_parent}get hasReadPermission(){return!!(this.permissions&window.OC.PERMISSION_READ)}get hasCreatePermission(){return!!(this.permissions&window.OC.PERMISSION_CREATE)}get hasDeletePermission(){return!!(this.permissions&window.OC.PERMISSION_DELETE)}get hasUpdatePermission(){return!!(this.permissions&window.OC.PERMISSION_UPDATE)}get hasSharePermission(){return!!(this.permissions&window.OC.PERMISSION_SHARE)}get hasDownloadPermission(){return this.attributes.some((e=>"permissions"===e.scope&&"download"===e.key&&!1===e.value))}get isFileRequest(){return function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"[]";const t=e=>"fileRequest"===e.scope&&"enabled"===e.key&&!0===e.value;try{return JSON.parse(e).some(t)}catch(e){return ge.error("Error while parsing share attributes",{error:e}),!1}}(JSON.stringify(this.attributes))}set hasDownloadPermission(e){this.setAttribute("permissions","download",!!e)}setAttribute(e,t,i){const r={scope:e,key:t,value:i};for(const e in this._share.attributes){const t=this._share.attributes[e];if(t.scope===r.scope&&t.key===r.key)return void this._share.attributes.splice(e,1,r)}this._share.attributes.push(r)}get canEdit(){return!0===this._share.can_edit}get canDelete(){return!0===this._share.can_delete}get viaFileid(){return this._share.via_fileid}get viaPath(){return this._share.via_path}get parent(){return this._share.parent}get storageId(){return this._share.storage_id}get storage(){return this._share.storage}get itemSource(){return this._share.item_source}get status(){return this._share.status}}var me=r(85168),ve=r(54373),ye=r(31773);const Ce={name:"SharingEntrySimple",components:{NcActions:W.A},props:{title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}};var we=r(43570),be={};be.styleTagTransform=y(),be.setAttributes=g(),be.insert=p().bind(null,"head"),be.domAPI=u(),be.insertStyleElement=m(),c()(we.A,be),we.A&&we.A.locals&&we.A.locals;var Ee=r(14486);const _e=(0,Ee.A)(Ce,(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,"44339fa4",null).exports,xe={name:"SharingEntryInternal",components:{NcActionButton:X.A,SharingEntrySimple:_e,CheckIcon:ve.A,ClipboardIcon:ye.A},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({copied:!1,copySuccess:!1}),computed:{internalLink(){return window.location.protocol+"//"+window.location.host+(0,o.Jv)("/f/")+this.fileInfo.id},copyLinkTooltip(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy internal link to clipboard")},internalLinkSubtitle(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for people with access to this folder"):t("files_sharing","Only works for people with access to this file")}},methods:{async copyLink(){try{await navigator.clipboard.writeText(this.internalLink),(0,me.Te)(t("files_sharing","Link copied")),this.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,console.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}}}};var Se=r(38779),Ie={};Ie.styleTagTransform=y(),Ie.setAttributes=g(),Ie.insert=p().bind(null,"head"),Ie.domAPI=u(),Ie.insertStyleElement=m(),c()(Se.A,Ie),Se.A&&Se.A.locals&&Se.A.locals;const ke=(0,Ee.A)(xe,(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("NcActionButton",{attrs:{title:e.copyLinkTooltip,"aria-label":e.copyLinkTooltip},on:{click:e.copyLink},scopedSlots:e._u([{key:"icon",fn:function(){return[e.copied&&e.copySuccess?t("CheckIcon",{staticClass:"icon-checkmark-color",attrs:{size:20}}):t("ClipboardIcon",{attrs:{size:20}})]},proxy:!0}])})],1)],1)}),[],!1,null,"57874406",null).exports;var Te=r(17334),Ne=r.n(Te),De=(r(48318),r(61338));const Pe=(0,o.KT)("apps/files_sharing/api/v1/shares"),Re={methods:{async createShare(e){let{path:i,permissions:r,shareType:n,shareWith:s,publicUpload:a,password:o,sendPasswordByTalk:l,expireDate:c,label:h,note:u,attributes:d}=e;try{const e=await Z.Ay.post(Pe,{path:i,permissions:r,shareType:n,shareWith:s,publicUpload:a,password:o,sendPasswordByTalk:l,expireDate:c,label:h,note:u,attributes:d});if(!e?.data?.ocs)throw e;const t=new Ae(e.data.ocs.data);return(0,De.Ic)("files_sharing:share:created",{share:t}),t}catch(e){console.error("Error while creating share",e);const i=e?.response?.data?.ocs?.meta?.message;throw(0,me.Qg)(i?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:i}):t("files_sharing","Error creating the share"),{type:"error"}),e}},async deleteShare(e){try{const t=await Z.Ay.delete(Pe+`/${e}`);if(!t?.data?.ocs)throw t;return(0,De.Ic)("files_sharing:share:deleted",{id:e}),!0}catch(e){console.error("Error while deleting share",e);const i=e?.response?.data?.ocs?.meta?.message;throw OC.Notification.showTemporary(i?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:i}):t("files_sharing","Error deleting the share"),{type:"error"}),e}},async updateShare(e,i){try{const t=await Z.Ay.put(Pe+`/${e}`,i);if((0,De.Ic)("files_sharing:share:updated",{id:e}),t?.data?.ocs)return t.data.ocs.data;throw t}catch(e){if(console.error("Error while updating share",e),400!==e.response.status){const i=e?.response?.data?.ocs?.meta?.message;OC.Notification.showTemporary(i?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:i}):t("files_sharing","Error updating the share"),{type:"error"})}const i=e.response.data.ocs.meta.message;throw new Error(i)}}}},Be={methods:{async openSharingDetails(e){let t={};if(e.handler){const i={};this.suggestions&&(i.suggestions=this.suggestions,i.fileInfo=this.fileInfo,i.query=this.query);const r=await e.handler(i);t=this.mapShareRequestToShareObject(r)}else t=this.mapShareRequestToShareObject(e);const i={fileInfo:this.fileInfo,share:t};this.$emit("open-sharing-details",i)},openShareDetailsForCustomSettings(e){e.setCustomPermissions=!0,this.openSharingDetails(e)},mapShareRequestToShareObject(e){if(e.id)return e;const t={attributes:[{value:!0,key:"download",scope:"permissions"}],hideDownload:!1,share_type:e.shareType,share_with:e.shareWith,is_no_user:e.isNoUser,user:e.shareWith,share_with_displayname:e.displayName,subtitle:e.subtitle,permissions:e.permissions??(new pe).defaultPermissions,expiration:""};return new Ae(t)}}},Le={name:"SharingInput",components:{NcSelect:_.A},mixins:[Re,Be],props:{shares:{type:Array,default:()=>[],required:!0},linkShares:{type:Array,default:()=>[],required:!0},fileInfo:{type:Object,default:()=>{},required:!0},reshare:{type:Ae,default:null},canReshare:{type:Boolean,required:!0},isExternal:{type:Boolean,default:!1},placeholder:{type:String,default:""}},setup:()=>({shareInputId:`share-input-${Math.random().toString(36).slice(2,7)}`}),data:()=>({config:new pe,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[],value:null}),computed:{externalResults(){return this.ShareSearch.results},inputPlaceholder(){const e=this.config.isRemoteShareAllowed;return this.canReshare?this.placeholder?this.placeholder:e?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted(){this.isExternal||this.getRecommendations()},methods:{onSelected(e){this.value=null,this.openSharingDetails(e)},async asyncFind(e){this.query=e.trim(),this.isValidQuery&&(this.loading=!0,await this.debounceGetSuggestions(e))},async getSuggestions(e){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.loading=!0,!0===(0,de.F)().files_sharing.sharee.query_lookup_default&&(i=!0);let r=[];this.isExternal?(r.push(oe.I.Remote),r.push(oe.I.RemoteGroup)):r=r.concat([oe.I.User,oe.I.Group,oe.I.Team,oe.I.Room,oe.I.Guest,oe.I.Deck,oe.I.ScienceMesh]),!0===(0,de.F)().files_sharing.public.enabled&&this.isExternal&&r.push(oe.I.Email);let n=null;try{n=await Z.Ay.get((0,o.KT)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===this.fileInfo.type?"folder":"file",search:e,lookup:i,perPage:this.config.maxAutocompleteResults,shareType:r}})}catch(e){return void console.error("Error fetching suggestions",e)}const s=n.data.ocs.data,a=n.data.ocs.data.exact;s.exact=[];const l=Object.values(a).reduce(((e,t)=>e.concat(t)),[]),c=Object.values(s).reduce(((e,t)=>e.concat(t)),[]),h=this.filterOutExistingShares(l).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),u=this.filterOutExistingShares(c).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),d=[];s.lookupEnabled&&!i&&d.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0});const p=this.externalResults.filter((e=>!e.condition||e.condition(this))),f=h.concat(u).concat(p).concat(d),g=f.reduce(((e,t)=>t.displayName?(e[t.displayName]||(e[t.displayName]=0),e[t.displayName]++,e):e),{});this.suggestions=f.map((e=>g[e.displayName]>1&&!e.desc?{...e,desc:e.shareWithDisplayNameUnique}:e)),this.loading=!1,console.info("suggestions",this.suggestions)},debounceGetSuggestions:Ne()((function(){this.getSuggestions(...arguments)}),300),async getRecommendations(){this.loading=!0;let e=null;try{e=await Z.Ay.get((0,o.KT)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:this.fileInfo.type}})}catch(e){return void console.error("Error fetching recommendations",e)}const t=this.externalResults.filter((e=>!e.condition||e.condition(this))),i=Object.values(e.data.ocs.data.exact).reduce(((e,t)=>e.concat(t)),[]);this.recommendations=this.filterOutExistingShares(i).map((e=>this.formatForMultiselect(e))).concat(t),this.loading=!1,console.info("recommendations",this.recommendations)},filterOutExistingShares(e){return e.reduce(((e,t)=>{if("object"!=typeof t)return e;try{if(t.value.shareType===oe.I.User){if(t.value.shareWith===(0,n.HW)().uid)return e;if(this.reshare&&t.value.shareWith===this.reshare.owner)return e}if(t.value.shareType===oe.I.Email){if(-1!==this.linkShares.map((e=>e.shareWith)).indexOf(t.value.shareWith.trim()))return e}else{const i=this.shares.reduce(((e,t)=>(e[t.shareWith]=t.type,e)),{}),r=t.value.shareWith.trim();if(r in i&&i[r]===t.value.shareType)return e}e.push(t)}catch{return e}return e}),[])},shareTypeToIcon(e){switch(e){case oe.I.Guest:return{icon:"icon-user",iconTitle:t("files_sharing","Guest")};case oe.I.RemoteGroup:case oe.I.Group:return{icon:"icon-group",iconTitle:t("files_sharing","Group")};case oe.I.Email:return{icon:"icon-mail",iconTitle:t("files_sharing","Email")};case oe.I.Team:return{icon:"icon-teams",iconTitle:t("files_sharing","Team")};case oe.I.Room:return{icon:"icon-room",iconTitle:t("files_sharing","Talk conversation")};case oe.I.Deck:return{icon:"icon-deck",iconTitle:t("files_sharing","Deck board")};case oe.I.Sciencemesh:return{icon:"icon-sciencemesh",iconTitle:t("files_sharing","ScienceMesh")};default:return{}}},formatForMultiselect(e){let i;return i=e.value.shareType===oe.I.User&&this.config.shouldAlwaysShowUnique?e.shareWithDisplayNameUnique??"":e.value.shareType!==oe.I.Remote&&e.value.shareType!==oe.I.RemoteGroup||!e.value.server?e.value.shareType===oe.I.Email?e.value.shareWith:e.shareWithDescription??"":t("files_sharing","on {server}",{server:e.value.server}),{shareWith:e.value.shareWith,shareType:e.value.shareType,user:e.uuid||e.value.shareWith,isNoUser:e.value.shareType!==oe.I.User,displayName:e.name||e.label,subname:i,shareWithDisplayNameUnique:e.shareWithDisplayNameUnique||"",...this.shareTypeToIcon(e.value.shareType)}}}};var Oe=r(36196),Me={};Me.styleTagTransform=y(),Me.setAttributes=g(),Me.insert=p().bind(null,"head"),Me.domAPI=u(),Me.insertStyleElement=m(),c()(Oe.A,Me),Oe.A&&Oe.A.locals&&Oe.A.locals;const Ue=(0,Ee.A)(Le,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharing-search"},[t("label",{staticClass:"hidden-visually",attrs:{for:e.shareInputId}},[e._v("\n\t\t"+e._s(e.isExternal?e.t("files_sharing","Enter external recipients"):e.t("files_sharing","Search for internal recipients"))+"\n\t")]),e._v(" "),t("NcSelect",{ref:"select",staticClass:"sharing-search__input",attrs:{"input-id":e.shareInputId,disabled:!e.canReshare,loading:e.loading,filterable:!1,placeholder:e.inputPlaceholder,"clear-search-on-blur":()=>!1,"user-select":!0,options:e.options,"label-outside":!0},on:{search:e.asyncFind,"option:selected":e.onSelected},scopedSlots:e._u([{key:"no-options",fn:function(t){let{search:i}=t;return[e._v("\n\t\t\t"+e._s(i?e.noResultText:e.placeholder)+"\n\t\t")]}}]),model:{value:e.value,callback:function(t){e.value=t},expression:"value"}})],1)}),[],!1,null,null,null).exports;var $e=r(71225),Fe=r(74479),Ve=r(71418),je=r(49264);const He={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},ze={READ_ONLY:He.READ,UPLOAD_AND_UPDATE:He.READ|He.UPDATE|He.CREATE|He.DELETE,FILE_DROP:He.CREATE,ALL:He.UPDATE|He.CREATE|He.READ|He.DELETE|He.SHARE,ALL_FILE:He.UPDATE|He.READ|He.SHARE};var qe=r(77815);const Ge=(0,qe.KU)(),Ye={mixins:[Re],props:{fileInfo:{type:Object,default:()=>{},required:!0},share:{type:Ae,default:null},isUnique:{type:Boolean,default:!0}},data(){return{config:new pe,node:null,ShareType:oe.I,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new je.A({concurrency:1}),reactiveState:this.share?.state}},computed:{path(){return(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/")},hasNote:{get(){return""!==this.share.note},set(e){this.share.note=e?null:""}},dateTomorrow:()=>new Date((new Date).setDate((new Date).getDate()+1)),lang(){const 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"}},isNewShare(){return!this.share.id},isFolder(){return"dir"===this.fileInfo.type},isPublicShare(){const e=this.share.shareType??this.share.type;return[oe.I.Link,oe.I.Email].includes(e)},isRemoteShare(){return this.share.type===oe.I.RemoteGroup||this.share.type===oe.I.Remote},isShareOwner(){return this.share&&this.share.owner===(0,n.HW)().uid},isExpiryDateEnforced(){return this.isPublicShare?this.config.isDefaultExpireDateEnforced:this.isRemoteShare?this.config.isDefaultRemoteExpireDateEnforced:this.config.isDefaultInternalExpireDateEnforced},hasCustomPermissions(){return![ze.ALL,ze.READ_ONLY,ze.FILE_DROP].includes(this.share.permissions)},maxExpirationDateEnforced(){return this.isExpiryDateEnforced?this.isPublicShare?this.config.defaultExpirationDate:this.isRemoteShare?this.config.defaultRemoteExpirationDateString:this.config.defaultInternalExpirationDate:null}},methods:{async getNode(){const e={path:this.path};try{this.node=await(async e=>{const t=(0,qe.aN)(),i=await Ge.stat(`${(0,qe.ei)()}${e}`,{details:!0,data:t});return(0,qe.pO)(i.data)})(e.path),ge.info("Fetched node:",{node:this.node})}catch(e){ge.error("Error:",e)}},checkShare:e=>(!e.password||"string"==typeof e.password&&""!==e.password.trim())&&!(e.expirationDate&&!e.expirationDate.isValid()),formatDateToString:e=>new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())).toISOString().split("T")[0],onExpirationChange(e){const t=e?this.formatDateToString(new Date(e)):"";this.share.expireDate=t},onNoteChange(e){this.$set(this.share,"newNote",e.trim())},onNoteSubmit(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},async onDelete(){try{this.loading=!0,this.open=!1,await this.deleteShare(this.share.id),console.debug("Share deleted",this.share.id);const e="file"===this.share.itemType?t("files_sharing",'File "{path}" has been unshared',{path:this.share.path}):t("files_sharing",'Folder "{path}" has been unshared',{path:this.share.path});(0,me.Te)(e),this.$emit("remove:share",this.share),await this.getNode(),(0,De.Ic)("files:node:updated",this.node)}catch(e){this.open=!0}finally{this.loading=!1}},queueUpdate(){for(var e=arguments.length,i=new Array(e),r=0;r<e;r++)i[r]=arguments[r];if(0!==i.length){if(this.share.id){const e={};return i.forEach((t=>{null===this.share[t]||void 0===this.share[t]?e[t]="":"object"==typeof this.share[t]?e[t]=JSON.stringify(this.share[t]):e[t]=this.share[t].toString()})),this.updateQueue.add((async()=>{this.saving=!0,this.errors={};try{const t=await this.updateShare(this.share.id,e);i.indexOf("password")>=0&&(this.$delete(this.share,"newPassword"),this.share.passwordExpirationTime=t.password_expiration_time),this.$delete(this.errors,i[0]),(0,me.Te)(this.updateSuccessMessage(i))}catch(e){ge.error("Could not update share",{error:e,share:this.share,propertyNames:i});const{message:r}=e;r&&""!==r?(this.onSyncError(i[0],r),(0,me.Qg)(r)):(0,me.Qg)(t("files_sharing","Could not update share"))}finally{this.saving=!1}}))}console.debug("Updated local share",this.share)}},updateSuccessMessage(e){if(1!==e.length)return t("files_sharing","Share saved");switch(e[0]){case"expireDate":return t("files_sharing","Share expiry date saved");case"hideDownload":return t("files_sharing","Share hide-download state saved");case"label":return t("files_sharing","Share label saved");case"note":return t("files_sharing","Share note for recipient saved");case"password":return t("files_sharing","Share password saved");case"permissions":return t("files_sharing","Share permissions saved");default:return t("files_sharing","Share saved")}},onSyncError(e,t){switch(this.open=!0,e){case"password":case"pending":case"expireDate":case"label":case"note":{this.$set(this.errors,e,t);let i=this.$refs[e];if(i){i.$el&&(i=i.$el);const e=i.querySelector(".focusable");e&&e.focus()}break}case"sendPasswordByTalk":this.$set(this.errors,e,t),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:Ne()((function(e){this.queueUpdate(e)}),500)}},We={name:"SharingEntryInherited",components:{NcActionButton:X.A,NcActionLink:Fe.A,NcActionText:Ve.A,NcAvatar:E.A,SharingEntrySimple:_e},mixins:[Ye],props:{share:{type:Ae,required:!0}},computed:{viaFileTargetUrl(){return(0,o.Jv)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName(){return(0,$e.P8)(this.share.viaPath)}}};var Xe=r(59879),Qe={};Qe.styleTagTransform=y(),Qe.setAttributes=g(),Qe.insert=p().bind(null,"head"),Qe.domAPI=u(),Qe.insertStyleElement=m(),c()(Xe.A,Qe),Xe.A&&Xe.A.locals&&Xe.A.locals;const Ze=(0,Ee.A)(We,(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,"fe8ed59e",null).exports,Ke={name:"SharingInherited",components:{NcActionButton:X.A,SharingEntryInherited:Ze,SharingEntrySimple:_e},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}),computed:{showInheritedSharesIcon(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:()=>t("files_sharing","Others with access"),subTitle(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other accounts with access found"):""},toggleTooltip(){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(){return`${this.fileInfo.path}/${this.fileInfo.name}`.replace("//","/")}},watch:{fileInfo(){this.resetState()}},methods:{toggleInheritedShares(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},async fetchInheritedShares(){this.loading=!0;try{const e=(0,o.KT)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:this.fullPath}),t=await Z.Ay.get(e);this.shares=t.data.ocs.data.map((e=>new Ae(e))).sort(((e,t)=>t.createdTime-e.createdTime)),console.info(this.shares),this.loaded=!0}catch(e){OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"})}finally{this.loading=!1}},resetState(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}};var Je=r(56467),et={};et.styleTagTransform=y(),et.setAttributes=g(),et.insert=p().bind(null,"head"),et.domAPI=u(),et.insertStyleElement=m(),c()(Je.A,et),Je.A&&Je.A.locals&&Je.A.locals;const tt=(0,Ee.A)(Ke,(function(){var e=this,t=e._self._c;return e.shares.length?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}],null,!1,1184892072)},[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(i){return t("SharingEntryInherited",{key:i.id,attrs:{"file-info":e.fileInfo,share:i},on:{"remove:share":e.removeShare}})}))],2):e._e()}),[],!1,null,"a6cc72e6",null).exports;var it=r(17816),rt=r.n(it),nt=r(97691),st=r(44131),at=r(15502),ot=r(94219);const lt={name:"TuneIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ct=(0,Ee.A)(lt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon tune-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,ht={name:"CalendarBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ut=(0,Ee.A)(ht,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon calendar-blank-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,dt={name:"QrcodeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pt=(0,Ee.A)(dt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon qrcode-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,ft={name:"ExclamationIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},gt=(0,Ee.A)(ft,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon exclamation-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M 11,4L 13,4L 13,15L 11,15L 11,4 Z M 13,18L 13,20L 11,20L 11,18L 13,18 Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,At={name:"LockIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mt=(0,Ee.A)(At,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon lock-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,vt={name:"CheckBoldIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},yt=(0,Ee.A)(vt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon check-bold-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var Ct=r(66001),wt=r(96078);const bt={name:"TriangleSmallDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Et=(0,Ee.A)(bt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon triangle-small-down-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M8 9H16L12 16"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,_t={name:"EyeOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},xt=(0,Ee.A)(_t,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon eye-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var St=r(2413);const It={name:"FileUploadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},kt=(0,Ee.A)(It,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon file-upload-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13.5,16V19H10.5V16H8L12,12L16,16H13.5M13,9V3.5L18.5,9H13Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Tt={name:"SharingEntryQuickShareSelect",components:{DropdownIcon:Et,NcActions:W.A,NcActionButton:X.A},mixins:[Ye,Be],props:{share:{type:Object,required:!0}},emits:["open-sharing-details"],data:()=>({selectedOption:""}),computed:{ariaLabel(){return t("files_sharing",'Quick share options, the current selected is "{selectedOption}"',{selectedOption:this.selectedOption})},canViewText:()=>t("files_sharing","View only"),canEditText:()=>t("files_sharing","Can edit"),fileDropText:()=>t("files_sharing","File request"),customPermissionsText:()=>t("files_sharing","Custom permissions"),preSelectedOption(){return(this.share.permissions&~He.SHARE)===ze.READ_ONLY?this.canViewText:this.share.permissions===ze.ALL||this.share.permissions===ze.ALL_FILE?this.canEditText:(this.share.permissions&~He.SHARE)===ze.FILE_DROP?this.fileDropText:this.customPermissionsText},options(){const e=[{label:this.canViewText,icon:xt},{label:this.canEditText,icon:St.A}];return this.supportsFileDrop&&e.push({label:this.fileDropText,icon:kt}),e.push({label:this.customPermissionsText,icon:ct}),e},supportsFileDrop(){if(this.isFolder&&this.config.isPublicUploadEnabled){const e=this.share.type??this.share.shareType;return[oe.I.Link,oe.I.Email].includes(e)}return!1},dropDownPermissionValue(){switch(this.selectedOption){case this.canEditText:return this.isFolder?ze.ALL:ze.ALL_FILE;case this.fileDropText:return ze.FILE_DROP;case this.customPermissionsText:return"custom";case this.canViewText:default:return ze.READ_ONLY}}},created(){this.selectedOption=this.preSelectedOption},mounted(){(0,De.B1)("update:share",(e=>{e.id===this.share.id&&(this.share.permissions=e.permissions,this.selectedOption=this.preSelectedOption)}))},unmounted(){(0,De.al)("update:share")},methods:{selectOption(e){this.selectedOption=e,e===this.customPermissionsText?this.$emit("open-sharing-details"):(this.share.permissions=this.dropDownPermissionValue,this.queueUpdate("permissions"),this.$refs.quickShareActions.$refs.menuButton.$el.focus())}}},Nt=Tt;var Dt=r(88522),Pt={};Pt.styleTagTransform=y(),Pt.setAttributes=g(),Pt.insert=p().bind(null,"head"),Pt.domAPI=u(),Pt.insertStyleElement=m(),c()(Dt.A,Pt),Dt.A&&Dt.A.locals&&Dt.A.locals;const Rt=(0,Ee.A)(Nt,(function(){var e=this,t=e._self._c;return t("NcActions",{ref:"quickShareActions",staticClass:"share-select",attrs:{"menu-name":e.selectedOption,"aria-label":e.ariaLabel,type:"tertiary-no-background",disabled:!e.share.canEdit,"force-name":""},scopedSlots:e._u([{key:"icon",fn:function(){return[t("DropdownIcon",{attrs:{size:15}})]},proxy:!0}])},[e._v(" "),e._l(e.options,(function(i){return t("NcActionButton",{key:i.label,attrs:{type:"radio","model-value":i.label===e.selectedOption,"close-after-click":""},on:{click:function(t){return e.selectOption(i.label)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t(i.icon,{tag:"component"})]},proxy:!0}],null,!0)},[e._v("\n\t\t"+e._s(i.label)+"\n\t")])}))],2)}),[],!1,null,"2aa230f1",null).exports;var Bt=r(4604);const Lt={name:"ClockIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ot=(0,Ee.A)(Lt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon clock-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Mt={name:"ShareExpiryTime",components:{NcButton:ue.A,NcPopover:ce.N,NcDateTime:Bt.A,ClockIcon:Ot},props:{share:{type:Object,required:!0}},computed:{expiryTime(){return this.share?.expireDate?new Date(this.share.expireDate).getTime():null},timeFormat:()=>({dateStyle:"full",timeStyle:"short"})}};var Ut=r(38310),$t={};$t.styleTagTransform=y(),$t.setAttributes=g(),$t.insert=p().bind(null,"head"),$t.domAPI=u(),$t.insertStyleElement=m(),c()(Ut.A,$t),Ut.A&&Ut.A.locals&&Ut.A.locals;const Ft=(0,Ee.A)(Mt,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"share-expiry-time"},[t("NcPopover",{attrs:{"popup-role":"dialog"},scopedSlots:e._u([{key:"trigger",fn:function(){return[e.expiryTime?t("NcButton",{staticClass:"hint-icon",attrs:{type:"tertiary","aria-label":e.t("files_sharing","Share expiration: ")+new Date(e.expiryTime).toLocaleString()},scopedSlots:e._u([{key:"icon",fn:function(){return[t("ClockIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,3754271979)}):e._e()]},proxy:!0}])},[e._v(" "),t("h3",{staticClass:"hint-heading"},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Share Expiration"))+"\n\t\t")]),e._v(" "),e.expiryTime?t("p",{staticClass:"hint-body"},[t("NcDateTime",{attrs:{timestamp:e.expiryTime,format:e.timeFormat,"relative-time":!1}}),e._v(" ("),t("NcDateTime",{attrs:{timestamp:e.expiryTime}}),e._v(")\n\t\t")],1):e._e()])],1)}),[],!1,null,"66d8c844",null).exports,Vt={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:()=>({})},fileInfo:{type:Object,default:()=>{},required:!0},share:{type:Ae,default:null}},computed:{data(){return this.action.data(this)}}},jt=(0,Ee.A)(Vt,(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,Ht=new pe;async function zt(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(Ht.passwordPolicy.api&&Ht.passwordPolicy.api.generate)try{const t=await Z.Ay.get(Ht.passwordPolicy.api.generate);if(t.data.ocs.data.password)return e&&(0,me.Te)((0,b.Tl)("files_sharing","Password created successfully")),t.data.ocs.data.password}catch(t){console.info("Error generating password from password_policy",t),e&&(0,me.Qg)((0,b.Tl)("files_sharing","Error generating password from password policy"))}const t=new Uint8Array(10),i=52/255;self.crypto.getRandomValues(t);let r="";for(let e=0;e<t.length;e++)r+="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789".charAt(t[e]*i);return r}const qt={name:"SharingEntryLink",components:{ExternalShareAction:jt,NcActions:W.A,NcActionButton:X.A,NcActionCheckbox:nt.N,NcActionInput:st.A,NcActionLink:Fe.A,NcActionText:Ve.A,NcActionSeparator:at.A,NcAvatar:E.A,NcDialog:ot.A,VueQrcode:rt(),Tune:ct,IconCalendarBlank:ut,IconQr:pt,ErrorIcon:gt,LockIcon:mt,CheckIcon:yt,ClipboardIcon:ye.A,CloseIcon:Ct.A,PlusIcon:wt.A,SharingEntryQuickShareSelect:Rt,ShareExpiryTime:Ft},mixins:[Ye,Be],props:{canReshare:{type:Boolean,default:!0},index:{type:Number,default:null}},data:()=>({shareCreationComplete:!1,copySuccess:!0,copied:!1,defaultExpirationDateEnabled:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state,logger:(0,fe.YK)().setApp("files_sharing").detectUser().build(),showQRCode:!1}),computed:{title(){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?this.isFileRequest?t("files_sharing","File request ({label})",{label:this.share.label.trim()}):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&&""!==this.share.shareWith.trim()?this.share.shareWith:this.isFileRequest?t("files_sharing","File request"):t("files_sharing","Mail share");if(null===this.index)return t("files_sharing","Share link")}return this.index>=1?t("files_sharing","Share link ({index})",{index:this.index}):t("files_sharing","Create public link")},subtitle(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(e){Q.Ay.set(this.share,"password",e?await zt(!0):""),Q.Ay.set(this.share,"newPassword",this.share.password)}},passwordExpirationTime(){if(null===this.share.passwordExpirationTime)return null;const e=(0,he.A)(this.share.passwordExpirationTime);return!(e.diff((0,he.A)())<0)&&e.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(e){this.share.sendPasswordByTalk=e}},isEmailShareType(){return!!this.share&&this.share.type===oe.I.Email},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingDataIsMissing(){return this.pendingPassword||this.pendingEnforcedPassword||this.pendingDefaultExpirationDate||this.pendingEnforcedExpirationDate},pendingPassword(){return this.config.enableLinkPasswordByDefault&&this.isPendingShare},pendingEnforcedPassword(){return this.config.enforcePasswordForPublicLink&&this.isPendingShare},pendingEnforcedExpirationDate(){return this.config.isDefaultExpireDateEnforced&&this.isPendingShare},pendingDefaultExpirationDate(){return(this.config.defaultExpirationDate instanceof Date||!isNaN(new Date(this.config.defaultExpirationDate).getTime()))&&this.isPendingShare},isPendingShare(){return!(!this.share||this.share.id)},sharePolicyHasEnforcedProperties(){return this.config.enforcePasswordForPublicLink||this.config.isDefaultExpireDateEnforced},enforcedPropertiesMissing(){if(!this.sharePolicyHasEnforcedProperties)return!1;if(!this.share)return!0;if(this.share.id)return!0;const e=this.config.enforcePasswordForPublicLink&&!this.share.password,t=this.config.isDefaultExpireDateEnforced&&!this.share.expireDate;return e||t},hasUnsavedPassword(){return void 0!==this.share.newPassword},shareLink(){return(0,o.Jv)("/s/{token}",{token:this.share.token},{baseURL:(0,o.$_)()})},actionsTooltip(){return t("files_sharing",'Actions for "{title}"',{title:this.title})},copyLinkTooltip(){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(){return this.ExternalLegacyLinkActions.actions},externalLinkActions(){return this.ExternalShareActions.actions.filter((e=>(e.shareType.includes(oe.I.Link)||e.shareType.includes(oe.I.Email))&&!e.advanced))},isPasswordPolicyEnabled(){return"object"==typeof this.config.passwordPolicy},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((e=>"permissions"===e.scope&&"download"===e.key&&!1===e.value))},isFileRequest(){return this.share.isFileRequest}},mounted(){this.defaultExpirationDateEnabled=this.config.defaultExpirationDate instanceof Date,this.share&&this.isNewShare&&(this.share.expireDate=this.defaultExpirationDateEnabled?this.formatDateToString(this.config.defaultExpirationDate):"")},methods:{shareRequiresReview(e){return!e&&(this.defaultExpirationDateEnabled||this.config.enableLinkPasswordByDefault)},async onNewLinkShare(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.logger.debug("onNewLinkShare called (with this.share)",this.share),this.loading)return;const i={share_type:oe.I.Link};if(this.config.isDefaultExpireDateEnforced&&(i.expiration=this.formatDateToString(this.config.defaultExpirationDate)),this.logger.debug("Missing required properties?",this.enforcedPropertiesMissing),this.sharePolicyHasEnforcedProperties&&this.enforcedPropertiesMissing||this.shareRequiresReview(!0===e)){this.pending=!0,this.shareCreationComplete=!1,this.logger.info("Share policy requires a review or has mandated properties (password, expirationDate)..."),(this.config.enableLinkPasswordByDefault||this.config.enforcePasswordForPublicLink)&&(i.password=await zt(!0));const e=new Ae(i),t=await new Promise((t=>{this.$emit("add:share",e,t)}));this.open=!1,this.pending=!1,t.open=!0}else{if(this.share&&!this.share.id){if(this.checkShare(this.share)){try{this.logger.info("Sending existing share to server",this.share),await this.pushNewLinkShare(this.share,!0),this.shareCreationComplete=!0,this.logger.info("Share created on server",this.share)}catch(e){return this.pending=!1,this.logger.error("Error creating share",e),!1}return!0}return this.open=!0,(0,me.Qg)(t("files_sharing","Error, please enter proper password and/or expiration date")),!1}const e=new Ae(i);await this.pushNewLinkShare(e),this.shareCreationComplete=!0}},async pushNewLinkShare(e,i){try{if(this.loading)return!0;this.loading=!0,this.errors={};const r={path:(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),shareType:oe.I.Link,password:e.password,expireDate:e.expireDate??"",attributes:JSON.stringify(this.fileInfo.shareAttributes)};console.debug("Creating link share with options",r);const n=await this.createShare(r);let s;this.open=!1,this.shareCreationComplete=!0,console.debug("Link share created",n),s=i?await new Promise((e=>{this.$emit("update:share",n,e)})):await new Promise((e=>{this.$emit("add:share",n,e)})),await this.getNode(),(0,De.Ic)("files:node:updated",this.node),this.config.enforcePasswordForPublicLink||s.copyLink(),(0,me.Te)(t("files_sharing","Link share created"))}catch(e){const i=e?.response?.data?.ocs?.meta?.message;if(!i)return(0,me.Qg)(t("files_sharing","Error while creating the share")),void console.error(e);throw i.match(/password/i)?this.onSyncError("password",i):i.match(/date/i)?this.onSyncError("expireDate",i):this.onSyncError("pending",i),e}finally{this.loading=!1,this.shareCreationComplete=!0}},async copyLink(){try{await navigator.clipboard.writeText(this.shareLink),(0,me.Te)(t("files_sharing","Link copied")),this.$refs.copyButton.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,console.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}},onPasswordChange(e){this.$set(this.share,"newPassword",e)},onPasswordDisable(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose(){this.onPasswordSubmit(),this.onNoteSubmit()},onExpirationDateToggleUpdate(e){this.share.expireDate=e?this.formatDateToString(this.config.defaultExpirationDate):""},expirationDateChanged(e){const t=e.target.value;this.onExpirationChange(t),this.defaultExpirationDateEnabled=!!t},onCancel(){this.shareCreationComplete||this.$emit("remove:share",this.share)}}},Gt=qt;var Yt=r(58356),Wt={};Wt.styleTagTransform=y(),Wt.setAttributes=g(),Wt.insert=p().bind(null,"head"),Wt.domAPI=u(),Wt.insertStyleElement=m(),c()(Yt.A,Wt),Yt.A&&Yt.A.locals&&Yt.A.locals;const Xt={name:"SharingLinkList",components:{SharingEntryLink:(0,Ee.A)(Gt,(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__summary"},[t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title",attrs:{title:e.title}},[e._v("\n\t\t\t\t"+e._s(e.title)+"\n\t\t\t")]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t\t"+e._s(e.subtitle)+"\n\t\t\t")]):e._e(),e._v(" "),e.share&&void 0!==e.share.permissions?t("SharingEntryQuickShareSelect",{attrs:{share:e.share,"file-info":e.fileInfo},on:{"open-sharing-details":function(t){return e.openShareDetailsForCustomSettings(e.share)}}}):e._e()],1),e._v(" "),t("div",{staticClass:"sharing-entry__actions"},[e.share&&e.share.expireDate?t("ShareExpiryTime",{attrs:{share:e.share}}):e._e(),e._v(" "),t("div",[e.share&&(!e.isEmailShareType||e.isFileRequest)&&e.share.token?t("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("NcActionButton",{attrs:{"aria-label":e.copyLinkTooltip,title:e.copyLinkTooltip,href:e.shareLink},on:{click:function(t){return t.preventDefault(),e.copyLink.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.copied&&e.copySuccess?t("CheckIcon",{staticClass:"icon-checkmark-color",attrs:{size:20}}):t("ClipboardIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,4269614823)})],1):e._e()],1)],1)]),e._v(" "),!e.pending&&e.pendingDataIsMissing?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.onCancel}},[e.errors.pending?t("NcActionText",{staticClass:"error",scopedSlots:e._u([{key:"icon",fn:function(){return[t("ErrorIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,1966124155)},[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("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.config.enforcePasswordForPublicLink?e.t("files_sharing","Password protection (enforced)"):e.t("files_sharing","Password protection"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingEnforcedPassword||e.share.password?t("NcActionInput",{staticClass:"share-link-password",attrs:{label:e.t("files_sharing","Enter a password"),value:e.share.password,disabled:e.saving,required:e.config.enableLinkPasswordByDefault||e.config.enforcePasswordForPublicLink,minlength:e.isPasswordPolicyEnabled&&e.config.passwordPolicy.minLength,autocomplete:"new-password"},on:{"update:value":function(t){return e.$set(e.share,"password",t)},submit:function(t){return e.onNewLinkShare(!0)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("LockIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2056568168)}):e._e(),e._v(" "),e.pendingDefaultExpirationDate?t("NcActionCheckbox",{staticClass:"share-link-expiration-date-checkbox",attrs:{checked:e.defaultExpirationDateEnabled,disabled:e.pendingEnforcedExpirationDate||e.saving},on:{"update:checked":function(t){e.defaultExpirationDateEnabled=t},"update:model-value":e.onExpirationDateToggleUpdate}},[e._v("\n\t\t\t"+e._s(e.config.isDefaultExpireDateEnforced?e.t("files_sharing","Enable link expiration (enforced)"):e.t("files_sharing","Enable link expiration"))+"\n\t\t")]):e._e(),e._v(" "),(e.pendingDefaultExpirationDate||e.pendingEnforcedExpirationDate)&&e.defaultExpirationDateEnabled?t("NcActionInput",{staticClass:"share-link-expire-date",attrs:{"data-cy-files-sharing-expiration-date-input":"",label:e.pendingEnforcedExpirationDate?e.t("files_sharing","Enter expiration date (enforced)"):e.t("files_sharing","Enter expiration date"),disabled:e.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.maxExpirationDateEnforced},on:{change:function(t){return e.expirationDateChanged(t)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconCalendarBlank",{attrs:{size:20}})]},proxy:!0}],null,!1,3418578971)}):e._e(),e._v(" "),t("NcActionButton",{on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare(!0)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("CheckIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2630571749)},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Create share"))+"\n\t\t")]),e._v(" "),t("NcActionButton",{on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onCancel.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("CloseIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2428343285)},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t")])],1):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("NcActionButton",{attrs:{disabled:e.saving,"close-after-click":!0},on:{click:function(t){return t.preventDefault(),e.openSharingDetails.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Tune",{attrs:{size:20}})]},proxy:!0}],null,!1,1300586850)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Customize link"))+"\n\t\t\t\t")])]:e._e(),e._v(" "),t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(t){t.preventDefault(),e.showQRCode=!0}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconQr",{attrs:{size:20}})]},proxy:!0}],null,!1,1082198240)},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Generate QR code"))+"\n\t\t\t")]),e._v(" "),t("NcActionSeparator"),e._v(" "),e._l(e.externalLinkActions,(function(i){return t("ExternalShareAction",{key:i.id,attrs:{id:i.id,action:i,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),e._l(e.externalLegacyLinkActions,(function(i,r){let{icon:n,url:s,name:a}=i;return t("NcActionLink",{key:r,attrs:{href:s(e.shareLink),icon:n,target:"_blank"}},[e._v("\n\t\t\t\t"+e._s(a)+"\n\t\t\t")])})),e._v(" "),!e.isEmailShareType&&e.canReshare?t("NcActionButton",{staticClass:"new-share-link",on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("PlusIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2953566425)},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Add another link"))+"\n\t\t\t")]):e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("CloseIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2428343285)},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\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),e._v(" "),e.showQRCode?t("NcDialog",{attrs:{size:"normal",open:e.showQRCode,name:e.title,"close-on-click-outside":!0},on:{"update:open":function(t){e.showQRCode=t},close:function(t){e.showQRCode=!1}}},[t("div",{staticClass:"qr-code-dialog"},[t("VueQrcode",{staticClass:"qr-code-dialog__img",attrs:{tag:"img",value:e.shareLink}})],1)]):e._e()],1)}),[],!1,null,"43291a73",null).exports},mixins:[Be],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0},canReshare:{type:Boolean,required:!0}},data:()=>({canLinkShare:(0,de.F)().files_sharing.public.enabled}),computed:{hasLinkShares(){return this.shares.filter((e=>e.type===oe.I.Link)).length>0},hasShares(){return this.shares.length>0}},methods:{t:b.t,addShare(e,t){this.shares.push(e),this.awaitForShare(e,t)},awaitForShare(e,t){this.$nextTick((()=>{const i=this.$children.find((t=>t.share===e));i&&t(i)}))},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}},Qt=(0,Ee.A)(Xt,(function(){var e=this,t=e._self._c;return e.canLinkShare?t("ul",{staticClass:"sharing-link-list",attrs:{"aria-label":e.t("files_sharing","Link shares")}},[!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(i,r){return t("SharingEntryLink",{key:i.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(...arguments)}],"add:share":function(t){return e.addShare(...arguments)},"remove:share":e.removeShare,"open-sharing-details":function(t){return e.openSharingDetails(i)}}})})):e._e()],2):e._e()}),[],!1,null,null,null).exports;var Zt=r(26690);const Kt={name:"SharingEntry",components:{NcButton:ue.A,NcAvatar:E.A,DotsHorizontalIcon:Zt.A,NcSelect:_.A,ShareExpiryTime:Ft,SharingEntryQuickShareSelect:Rt},mixins:[Ye,Be],computed:{title(){let e=this.share.shareWithDisplayName;return this.share.type===oe.I.Group?e+=` (${t("files_sharing","group")})`:this.share.type===oe.I.Room?e+=` (${t("files_sharing","conversation")})`:this.share.type===oe.I.Remote?e+=` (${t("files_sharing","remote")})`:this.share.type===oe.I.RemoteGroup?e+=` (${t("files_sharing","remote group")})`:this.share.type===oe.I.Guest&&(e+=` (${t("files_sharing","guest")})`),!this.isShareOwner&&this.share.ownerDisplayName&&(e+=" "+t("files_sharing","by {initiator}",{initiator:this.share.ownerDisplayName})),e},tooltip(){if(this.share.owner!==this.share.uidFileOwner){const e={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===oe.I.Group?t("files_sharing","Shared with the group {user} by {owner}",e):this.share.type===oe.I.Room?t("files_sharing","Shared with the conversation {user} by {owner}",e):t("files_sharing","Shared with {user} by {owner}",e)}return null},hasStatus(){return this.share.type===oe.I.User&&"object"==typeof this.share.status&&!Array.isArray(this.share.status)}},methods:{onMenuClose(){this.onNoteSubmit()}}};var Jt=r(70162),ei={};ei.styleTagTransform=y(),ei.setAttributes=g(),ei.insert=p().bind(null,"head"),ei.domAPI=u(),ei.insertStyleElement=m(),c()(Jt.A,ei),Jt.A&&Jt.A.locals&&Jt.A.locals;const ti={name:"SharingList",components:{SharingEntry:(0,Ee.A)(Kt,(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.ShareType.User,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}),e._v(" "),t("div",{staticClass:"sharing-entry__summary"},[t(e.share.shareWithLink?"a":"div",{tag:"component",staticClass:"sharing-entry__summary__desc",attrs:{title:e.tooltip,"aria-label":e.tooltip,href:e.share.shareWithLink}},[t("span",[e._v(e._s(e.title)+"\n\t\t\t\t"),e.isUnique?e._e():t("span",{staticClass:"sharing-entry__summary__desc-unique"},[e._v(" ("+e._s(e.share.shareWithDisplayNameUnique)+")")]),e._v(" "),e.hasStatus&&e.share.status.message?t("small",[e._v("("+e._s(e.share.status.message)+")")]):e._e()])]),e._v(" "),t("SharingEntryQuickShareSelect",{attrs:{share:e.share,"file-info":e.fileInfo},on:{"open-sharing-details":function(t){return e.openShareDetailsForCustomSettings(e.share)}}})],1),e._v(" "),e.share&&e.share.expireDate?t("ShareExpiryTime",{attrs:{share:e.share}}):e._e(),e._v(" "),e.share.canEdit?t("NcButton",{staticClass:"sharing-entry__action",attrs:{"data-cy-files-sharing-share-actions":"","aria-label":e.t("files_sharing","Open Sharing Details"),type:"tertiary"},on:{click:function(t){return e.openSharingDetails(e.share)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("DotsHorizontalIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,1700783217)}):e._e()],1)}),[],!1,null,"2dbd45b5",null).exports},mixins:[Be],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0}},setup:()=>({t:b.t}),computed:{hasShares(){return 0===this.shares.length},isUnique(){return e=>[...this.shares].filter((t=>e.type===oe.I.User&&e.shareWithDisplayName===t.shareWithDisplayName)).length<=1}}},ii=(0,Ee.A)(ti,(function(){var e=this,t=e._self._c;return t("ul",{staticClass:"sharing-sharee-list",attrs:{"aria-label":e.t("files_sharing","Shares")}},e._l(e.shares,(function(i){return t("SharingEntry",{key:i.id,attrs:{"file-info":e.fileInfo,share:i,"is-unique":e.isUnique(i)},on:{"open-sharing-details":function(t){return e.openSharingDetails(i)}}})})),1)}),[],!1,null,null,null).exports;var ri=r(32073),ni=r(48046),si=r(16879),ai=r(59892),oi=r(16044),li=r(177);const ci={name:"CircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},hi=(0,Ee.A)(ci,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon circle-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,ui={name:"EmailIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},di=(0,Ee.A)(ui,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon email-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var pi=r(36600),fi=r(43261);const gi={name:"ShareCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ai=(0,Ee.A)(gi,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon share-circle-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M14 16V13C10.39 13 7.81 14.43 6 17C6.72 13.33 8.94 9.73 14 9V6L19 11L14 16Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,mi={name:"AccountCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},vi=(0,Ee.A)(mi,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon account-circle-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.07,18.28C7.5,17.38 10.12,16.5 12,16.5C13.88,16.5 16.5,17.38 16.93,18.28C15.57,19.36 13.86,20 12,20C10.14,20 8.43,19.36 7.07,18.28M18.36,16.83C16.93,15.09 13.46,14.5 12,14.5C10.54,14.5 7.07,15.09 5.64,16.83C4.62,15.5 4,13.82 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,13.82 19.38,15.5 18.36,16.83M12,6C10.06,6 8.5,7.56 8.5,9.5C8.5,11.44 10.06,13 12,13C13.94,13 15.5,11.44 15.5,9.5C15.5,7.56 13.94,6 12,6M12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,yi={name:"EyeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ci=(0,Ee.A)(yi,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon eye-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var wi=r(65422),bi=r(25384),Ei=r(33388);const _i={name:"RefreshIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},xi=(0,Ee.A)(_i,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon refresh-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Si={name:"SharingDetailsTab",components:{NcAvatar:E.A,NcButton:ue.A,NcCheckboxRadioSwitch:ri.A,NcDateTimePickerNative:ni.A,NcInputField:si.A,NcLoadingIcon:ai.A,NcPasswordField:oi.A,NcTextArea:li.A,CloseIcon:Ct.A,CircleIcon:hi,EditIcon:St.A,ExternalShareAction:jt,LinkIcon:pi.A,GroupIcon:fi.A,ShareIcon:Ai,UserIcon:vi,UploadIcon:wi.A,ViewIcon:Ci,MenuDownIcon:bi.A,MenuUpIcon:Ei.A,DotsHorizontalIcon:Zt.A,Refresh:xi},mixins:[Re,Ye],props:{shareRequestValue:{type:Object,required:!1},fileInfo:{type:Object,required:!0},share:{type:Object,required:!0}},data(){return{writeNoteToRecipientIsChecked:!1,sharingPermission:ze.ALL.toString(),revertSharingPermission:ze.ALL.toString(),setCustomPermissions:!1,passwordError:!1,advancedSectionAccordionExpanded:!1,bundledPermissions:ze,isFirstComponentLoad:!0,test:!1,creating:!1,initialToken:this.share.token,loadingToken:!1,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}},computed:{title(){switch(this.share.type){case oe.I.User:return t("files_sharing","Share with {userName}",{userName:this.share.shareWithDisplayName});case oe.I.Email:return t("files_sharing","Share with email {email}",{email:this.share.shareWith});case oe.I.Link:return t("files_sharing","Share link");case oe.I.Group:return t("files_sharing","Share with group");case oe.I.Room:return t("files_sharing","Share in conversation");case oe.I.Remote:{const[e,i]=this.share.shareWith.split("@");return t("files_sharing","Share with {user} on remote server {server}",{user:e,server:i})}case oe.I.RemoteGroup:return t("files_sharing","Share with remote group");case oe.I.Guest:return t("files_sharing","Share with guest");default:return this.share.id?t("files_sharing","Update share"):t("files_sharing","Create share")}},canEdit:{get(){return this.share.hasUpdatePermission},set(e){this.updateAtomicPermissions({isEditChecked:e})}},canCreate:{get(){return this.share.hasCreatePermission},set(e){this.updateAtomicPermissions({isCreateChecked:e})}},canDelete:{get(){return this.share.hasDeletePermission},set(e){this.updateAtomicPermissions({isDeleteChecked:e})}},canReshare:{get(){return this.share.hasSharePermission},set(e){this.updateAtomicPermissions({isReshareChecked:e})}},showInGridView:{get(){return this.getShareAttribute("config","grid_view",!1)},set(e){this.setShareAttribute("config","grid_view",e)}},canDownload:{get(){return this.getShareAttribute("permissions","download",!0)},set(e){this.setShareAttribute("permissions","download",e)}},hasRead:{get(){return this.share.hasReadPermission},set(e){this.updateAtomicPermissions({isReadChecked:e})}},hasExpirationDate:{get(){return this.isValidShareAttribute(this.share.expireDate)},set(e){this.share.expireDate=e?this.formatDateToString(this.defaultExpiryDate):""}},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(e){e?(this.share.password=await zt(!0),this.$set(this.share,"newPassword",this.share.password)):(this.share.password="",this.$delete(this.share,"newPassword"))}},isFolder(){return"dir"===this.fileInfo.type},isSetDownloadButtonVisible(){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)},isPasswordEnforced(){return this.isPublicShare&&this.config.enforcePasswordForPublicLink},defaultExpiryDate(){return(this.isGroupShare||this.isUserShare)&&this.config.isDefaultInternalExpireDateEnabled?new Date(this.config.defaultInternalExpirationDate):this.isRemoteShare&&this.config.isDefaultRemoteExpireDateEnabled?new Date(this.config.defaultRemoteExpireDateEnabled):this.isPublicShare&&this.config.isDefaultExpireDateEnabled?new Date(this.config.defaultExpirationDate):new Date((new Date).setDate((new Date).getDate()+1))},isUserShare(){return this.share.type===oe.I.User},isGroupShare(){return this.share.type===oe.I.Group},allowsFileDrop(){return!(!this.isFolder||!this.config.isPublicUploadEnabled||this.share.type!==oe.I.Link&&this.share.type!==oe.I.Email)},hasFileDropPermissions(){return this.share.permissions===this.bundledPermissions.FILE_DROP},shareButtonText(){return this.isNewShare?t("files_sharing","Save share"):t("files_sharing","Update share")},resharingIsPossible(){return this.config.isResharingAllowed&&this.share.type!==oe.I.Link&&this.share.type!==oe.I.Email},canSetEdit(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canSetDownload(){return this.fileInfo.canDownload()||this.canDownload},canRemoveReadPermission(){return this.allowsFileDrop&&(this.share.type===oe.I.Link||this.share.type===oe.I.Email)},hasUnsavedPassword(){return void 0!==this.share.newPassword},passwordExpirationTime(){if(!this.isValidShareAttribute(this.share.passwordExpirationTime))return null;const e=(0,he.A)(this.share.passwordExpirationTime);return!(e.diff((0,he.A)())<0)&&e.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(e){this.share.sendPasswordByTalk=e}},isEmailShareType(){return!!this.share&&this.share.type===oe.I.Email},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPublicShare||!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword||void 0===OC.appswebroots.spreed)},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((e=>"download"===e.key&&"permissions"===e.scope&&!1===e.value))},customPermissionsList(){const e={[He.READ]:this.t("files_sharing","Read"),[He.CREATE]:this.t("files_sharing","Create"),[He.UPDATE]:this.t("files_sharing","Edit"),[He.SHARE]:this.t("files_sharing","Share"),[He.DELETE]:this.t("files_sharing","Delete")};return[He.READ,He.CREATE,He.UPDATE,...this.resharingIsPossible?[He.SHARE]:[],He.DELETE].filter((e=>{return t=this.share.permissions,i=e,t!==He.NONE&&(t&i)===i;var t,i})).map(((t,i)=>0===i?e[t]:e[t].toLocaleLowerCase((0,b.Z0)()))).join(", ")},advancedControlExpandedValue(){return this.advancedSectionAccordionExpanded?"true":"false"},errorPasswordLabel(){if(this.passwordError)return t("files_sharing","Password field cannot be empty")},passwordHint(){if(!this.isNewShare&&!this.hasUnsavedPassword)return t("files_sharing","Replace current password")},externalLinkActions(){return this.ExternalShareActions.actions.filter((e=>(e.shareType.includes(oe.I.Link)||e.shareType.includes(oe.I.Email))&&e.advanced))}},watch:{setCustomPermissions(e){this.sharingPermission=e?"custom":this.revertSharingPermission}},beforeMount(){this.initializePermissions(),this.initializeAttributes(),ge.debug("Share object received",{share:this.share}),ge.debug("Configuration object received",{config:this.config})},mounted(){this.$refs.quickPermissions?.querySelector("input:checked")?.focus()},methods:{setShareAttribute(e,t,i){this.share.attributes||this.$set(this.share,"attributes",[]);const r=this.share.attributes.find((i=>i.scope===e||i.key===t));r?r.value=i:this.share.attributes.push({scope:e,key:t,value:i})},getShareAttribute(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;const r=this.share.attributes?.find((i=>i.scope===e&&i.key===t));return r?.value??i},async generateNewToken(){if(!this.loadingToken){this.loadingToken=!0;try{this.share.token=await(async()=>{const{data:e}=await Z.Ay.get((0,o.KT)("/apps/files_sharing/api/v1/token"));return e.ocs.data.token})()}catch(e){(0,me.Qg)(t("files_sharing","Failed to generate a new token"))}this.loadingToken=!1}},cancel(){this.share.token=this.initialToken,this.$emit("close-sharing-details")},updateAtomicPermissions(){let{isReadChecked:e=this.hasRead,isEditChecked:t=this.canEdit,isCreateChecked:i=this.canCreate,isDeleteChecked:r=this.canDelete,isReshareChecked:n=this.canReshare}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const s=(e?He.READ:0)|(i?He.CREATE:0)|(r?He.DELETE:0)|(t?He.UPDATE:0)|(n?He.SHARE:0);this.share.permissions=s},expandCustomPermissions(){this.advancedSectionAccordionExpanded||(this.advancedSectionAccordionExpanded=!0),this.toggleCustomPermissions()},toggleCustomPermissions(e){const t="custom"===this.sharingPermission;this.revertSharingPermission=t?"custom":e,this.setCustomPermissions=t},async initializeAttributes(){if(this.isNewShare)return this.isPasswordEnforced&&this.isPublicShare&&(this.$set(this.share,"newPassword",await zt(!0)),this.advancedSectionAccordionExpanded=!0),this.isPublicShare&&this.config.isDefaultExpireDateEnabled?this.share.expireDate=this.config.defaultExpirationDate.toDateString():this.isRemoteShare&&this.config.isDefaultRemoteExpireDateEnabled?this.share.expireDate=this.config.defaultRemoteExpirationDateString.toDateString():this.config.isDefaultInternalExpireDateEnabled&&(this.share.expireDate=this.config.defaultInternalExpirationDate.toDateString()),void(this.isValidShareAttribute(this.share.expireDate)&&(this.advancedSectionAccordionExpanded=!0));!this.isValidShareAttribute(this.share.expireDate)&&this.isExpiryDateEnforced&&(this.hasExpirationDate=!0),(this.isValidShareAttribute(this.share.password)||this.isValidShareAttribute(this.share.expireDate)||this.isValidShareAttribute(this.share.label))&&(this.advancedSectionAccordionExpanded=!0),this.share.note&&(this.writeNoteToRecipientIsChecked=!0)},handleShareType(){"shareType"in this.share?this.share.type=this.share.shareType:this.share.share_type&&(this.share.type=this.share.share_type)},handleDefaultPermissions(){if(this.isNewShare){const e=this.config.defaultPermissions;e===ze.READ_ONLY||e===ze.ALL?this.sharingPermission=e.toString():(this.sharingPermission="custom",this.share.permissions=e,this.advancedSectionAccordionExpanded=!0,this.setCustomPermissions=!0)}this.canRemoveReadPermission||(this.hasRead=!0)},handleCustomPermissions(){this.isNewShare||!this.hasCustomPermissions&&!this.share.setCustomPermissions?this.share.permissions&&(this.sharingPermission=this.share.permissions.toString()):(this.sharingPermission="custom",this.advancedSectionAccordionExpanded=!0,this.setCustomPermissions=!0)},initializePermissions(){this.handleShareType(),this.handleDefaultPermissions(),this.handleCustomPermissions()},async saveShare(){const e=["permissions","attributes","note","expireDate"],t=["label","password","hideDownload"];this.config.allowCustomTokens&&t.push("token"),this.isPublicShare&&e.push(...t);const i=parseInt(this.sharingPermission);if(this.setCustomPermissions?this.updateAtomicPermissions():this.share.permissions=i,this.isFolder||this.share.permissions!==ze.ALL||(this.share.permissions=ze.ALL_FILE),this.writeNoteToRecipientIsChecked||(this.share.note=""),this.isPasswordProtected?this.hasUnsavedPassword&&this.isValidShareAttribute(this.share.newPassword)?(this.share.password=this.share.newPassword,this.$delete(this.share,"newPassword")):this.isPasswordEnforced&&this.isNewShare&&!this.isValidShareAttribute(this.share.password)&&(this.passwordError=!0):this.share.password="",this.hasExpirationDate||(this.share.expireDate=""),this.isNewShare){const t={permissions:this.share.permissions,shareType:this.share.type,shareWith:this.share.shareWith,attributes:this.share.attributes,note:this.share.note,fileInfo:this.fileInfo};let i;t.expireDate=this.hasExpirationDate?this.share.expireDate:"",this.isPasswordProtected&&(t.password=this.share.password);try{this.creating=!0,i=await this.addShare(t)}catch(e){return void(this.creating=!1)}this.share._share.id=i.id,await this.queueUpdate(...e);for(const t of e)if(t in i&&t in this.share)try{i[t]=this.share[t]}catch{i._share[t]=this.share[t]}this.share=i,this.creating=!1,this.$emit("add:share",this.share)}else this.$emit("update:share",this.share),(0,De.Ic)("update:share",this.share),this.queueUpdate(...e);await this.getNode(),(0,De.Ic)("files:node:updated",this.node),this.$refs.externalLinkActions?.length>0&&await Promise.allSettled(this.$refs.externalLinkActions.map((e=>"function"!=typeof e.$children.at(0)?.onSave?Promise.resolve():e.$children.at(0)?.onSave?.()))),this.$emit("close-sharing-details")},async addShare(e){ge.debug("Adding a new share from the input for",{share:e});const t=this.path;try{return await this.createShare({path:t,shareType:e.shareType,shareWith:e.shareWith,permissions:e.permissions,expireDate:e.expireDate,attributes:JSON.stringify(e.attributes),...e.note?{note:e.note}:{},...e.password?{password:e.password}:{}})}catch(e){ge.error("Error while adding new share",{error:e})}},async removeShare(){await this.onDelete(),await this.getNode(),(0,De.Ic)("files:node:updated",this.node),this.$emit("close-sharing-details")},onPasswordChange(e){if(""===e)return this.$delete(this.share,"newPassword"),void(this.passwordError=this.isNewShare&&this.isPasswordEnforced);this.passwordError=!this.isValidShareAttribute(e),this.$set(this.share,"newPassword",e)},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},isValidShareAttribute:e=>![null,void 0].includes(e)&&e.trim().length>0,getShareTypeIcon(e){switch(e){case oe.I.Link:return pi.A;case oe.I.Guest:return vi;case oe.I.RemoteGroup:case oe.I.Group:return fi.A;case oe.I.Email:return di;case oe.I.Team:return hi;case oe.I.Room:case oe.I.Deck:case oe.I.ScienceMesh:return Ai;default:return null}}}};var Ii=r(32932),ki={};ki.styleTagTransform=y(),ki.setAttributes=g(),ki.insert=p().bind(null,"head"),ki.domAPI=u(),ki.insertStyleElement=m(),c()(Ii.A,ki),Ii.A&&Ii.A.locals&&Ii.A.locals;const Ti=(0,Ee.A)(Si,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharingTabDetailsView"},[t("div",{staticClass:"sharingTabDetailsView__header"},[t("span",[e.isUserShare?t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.shareType!==e.ShareType.User,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}):e._e(),e._v(" "),t(e.getShareTypeIcon(e.share.type),{tag:"component",attrs:{size:32}})],1),e._v(" "),t("span",[t("h1",[e._v(e._s(e.title))])])]),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__wrapper"},[t("div",{ref:"quickPermissions",staticClass:"sharingTabDetailsView__quick-permissions"},[t("div",[t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,"data-cy-files-sharing-share-permissions-bundle":"read-only",checked:e.sharingPermission,value:e.bundledPermissions.READ_ONLY.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]},scopedSlots:e._u([{key:"icon",fn:function(){return[t("ViewIcon",{attrs:{size:20}})]},proxy:!0}])},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","View only"))+"\n\t\t\t\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,"data-cy-files-sharing-share-permissions-bundle":"upload-edit",checked:e.sharingPermission,value:e.bundledPermissions.ALL.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]},scopedSlots:e._u([{key:"icon",fn:function(){return[t("EditIcon",{attrs:{size:20}})]},proxy:!0}])},[e.allowsFileDrop?[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Allow upload and editing"))+"\n\t\t\t\t\t")]:[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Allow editing"))+"\n\t\t\t\t\t")]],2),e._v(" "),e.allowsFileDrop?t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-sharing-share-permissions-bundle":"file-drop","button-variant":!0,checked:e.sharingPermission,value:e.bundledPermissions.FILE_DROP.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]},scopedSlots:e._u([{key:"icon",fn:function(){return[t("UploadIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,1083194048)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","File request"))+"\n\t\t\t\t\t"),t("small",{staticClass:"subline"},[e._v(e._s(e.t("files_sharing","Upload only")))])]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,"data-cy-files-sharing-share-permissions-bundle":"custom",checked:e.sharingPermission,value:"custom",name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.expandCustomPermissions]},scopedSlots:e._u([{key:"icon",fn:function(){return[t("DotsHorizontalIcon",{attrs:{size:20}})]},proxy:!0}])},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Custom permissions"))+"\n\t\t\t\t\t"),t("small",{staticClass:"subline"},[e._v(e._s(e.customPermissionsList))])])],1)]),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__advanced-control"},[t("NcButton",{attrs:{id:"advancedSectionAccordionAdvancedControl",type:"tertiary",alignment:"end-reverse","aria-controls":"advancedSectionAccordionAdvanced","aria-expanded":e.advancedControlExpandedValue},on:{click:function(t){e.advancedSectionAccordionExpanded=!e.advancedSectionAccordionExpanded}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.advancedSectionAccordionExpanded?t("MenuUpIcon"):t("MenuDownIcon")]},proxy:!0}])},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Advanced settings"))+"\n\t\t\t\t")])],1),e._v(" "),e.advancedSectionAccordionExpanded?t("div",{staticClass:"sharingTabDetailsView__advanced",attrs:{id:"advancedSectionAccordionAdvanced","aria-labelledby":"advancedSectionAccordionAdvancedControl",role:"region"}},[t("section",[e.isPublicShare?t("NcInputField",{staticClass:"sharingTabDetailsView__label",attrs:{autocomplete:"off",label:e.t("files_sharing","Share label"),value:e.share.label},on:{"update:value":function(t){return e.$set(e.share,"label",t)}}}):e._e(),e._v(" "),e.config.allowCustomTokens&&e.isPublicShare&&!e.isNewShare?t("NcInputField",{attrs:{autocomplete:"off",label:e.t("files_sharing","Share link token"),"helper-text":e.t("files_sharing","Set the public share link token to something easy to remember or generate a new token. It is not recommended to use a guessable token for shares which contain sensitive information."),"show-trailing-button":"","trailing-button-label":e.loadingToken?e.t("files_sharing","Generating…"):e.t("files_sharing","Generate new token"),value:e.share.token},on:{"update:value":function(t){return e.$set(e.share,"token",t)},"trailing-button-click":e.generateNewToken},scopedSlots:e._u([{key:"trailing-button-icon",fn:function(){return[e.loadingToken?t("NcLoadingIcon"):t("Refresh",{attrs:{size:20}})]},proxy:!0}],null,!1,4228062821)}):e._e(),e._v(" "),e.isPublicShare?[t("NcCheckboxRadioSwitch",{attrs:{checked:e.isPasswordProtected,disabled:e.isPasswordEnforced},on:{"update:checked":function(t){e.isPasswordProtected=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Set password"))+"\n\t\t\t\t\t")]),e._v(" "),e.isPasswordProtected?t("NcPasswordField",{attrs:{autocomplete:"new-password",value:e.hasUnsavedPassword?e.share.newPassword:"",error:e.passwordError,"helper-text":e.errorPasswordLabel||e.passwordHint,required:e.isPasswordEnforced&&e.isNewShare,label:e.t("files_sharing","Password")},on:{"update:value":e.onPasswordChange}}):e._e(),e._v(" "),e.isEmailShareType&&e.passwordExpirationTime?t("span",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:e.passwordExpirationTime}))+"\n\t\t\t\t\t")]):e.isEmailShareType&&null!==e.passwordExpirationTime?t("span",{attrs:{icon:"icon-error"}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Password expired"))+"\n\t\t\t\t\t")]):e._e()]:e._e(),e._v(" "),e.canTogglePasswordProtectedByTalkAvailable?t("NcCheckboxRadioSwitch",{attrs:{checked:e.isPasswordProtectedByTalk},on:{"update:checked":[function(t){e.isPasswordProtectedByTalk=t},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("NcCheckboxRadioSwitch",{attrs:{checked:e.hasExpirationDate,disabled:e.isExpiryDateEnforced},on:{"update:checked":function(t){e.hasExpirationDate=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.isExpiryDateEnforced?e.t("files_sharing","Expiration date (enforced)"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcDateTimePickerNative",{attrs:{id:"share-date-picker",value:new Date(e.share.expireDate??e.dateTomorrow),min:e.dateTomorrow,max:e.maxExpirationDateEnforced,"hide-label":"",label:e.t("files_sharing","Expiration date"),placeholder:e.t("files_sharing","Expiration date"),type:"date"},on:{input:e.onExpirationChange}}):e._e(),e._v(" "),e.isPublicShare?t("NcCheckboxRadioSwitch",{attrs:{disabled:e.canChangeHideDownload,checked:e.share.hideDownload},on:{"update:checked":[function(t){return e.$set(e.share,"hideDownload",t)},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")]):t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetDownload,checked:e.canDownload,"data-cy-files-sharing-share-permissions-checkbox":"download"},on:{"update:checked":function(t){e.canDownload=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Allow download and sync"))+"\n\t\t\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.writeNoteToRecipientIsChecked},on:{"update:checked":function(t){e.writeNoteToRecipientIsChecked=t}}},[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.writeNoteToRecipientIsChecked?[t("NcTextArea",{attrs:{label:e.t("files_sharing","Note to recipient"),placeholder:e.t("files_sharing","Enter a note for the share recipient"),value:e.share.note},on:{"update:value":function(t){return e.$set(e.share,"note",t)}}})]:e._e(),e._v(" "),e.isPublicShare&&e.isFolder?t("NcCheckboxRadioSwitch",{attrs:{checked:e.showInGridView},on:{"update:checked":function(t){e.showInGridView=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Show files in grid view"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e._l(e.externalLinkActions,(function(i){return t("ExternalShareAction",{key:i.id,ref:"externalLinkActions",refInFor:!0,attrs:{id:i.id,action:i,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.setCustomPermissions},on:{"update:checked":function(t){e.setCustomPermissions=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Custom permissions"))+"\n\t\t\t\t")]),e._v(" "),e.setCustomPermissions?t("section",{staticClass:"custom-permissions-group"},[t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canRemoveReadPermission,checked:e.hasRead,"data-cy-files-sharing-share-permissions-checkbox":"read"},on:{"update:checked":function(t){e.hasRead=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Read"))+"\n\t\t\t\t\t")]),e._v(" "),e.isFolder?t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetCreate,checked:e.canCreate,"data-cy-files-sharing-share-permissions-checkbox":"create"},on:{"update:checked":function(t){e.canCreate=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Create"))+"\n\t\t\t\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetEdit,checked:e.canEdit,"data-cy-files-sharing-share-permissions-checkbox":"update"},on:{"update:checked":function(t){e.canEdit=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Edit"))+"\n\t\t\t\t\t")]),e._v(" "),e.resharingIsPossible?t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetReshare,checked:e.canReshare,"data-cy-files-sharing-share-permissions-checkbox":"share"},on:{"update:checked":function(t){e.canReshare=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Share"))+"\n\t\t\t\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetDelete,checked:e.canDelete,"data-cy-files-sharing-share-permissions-checkbox":"delete"},on:{"update:checked":function(t){e.canDelete=t}}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Delete"))+"\n\t\t\t\t\t")])],1):e._e(),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__delete"},[e.isNewShare?e._e():t("NcButton",{attrs:{"aria-label":e.t("files_sharing","Delete share"),disabled:!1,readonly:!1,type:"tertiary"},on:{click:function(t){return t.preventDefault(),e.removeShare.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("CloseIcon",{attrs:{size:16}})]},proxy:!0}],null,!1,2746485232)},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Delete share"))+"\n\t\t\t\t\t")])],1)],2)]):e._e()]),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__footer"},[t("div",{staticClass:"button-group"},[t("NcButton",{attrs:{"data-cy-files-sharing-share-editor-action":"cancel"},on:{click:e.cancel}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t\t")]),e._v(" "),t("NcButton",{attrs:{type:"primary","data-cy-files-sharing-share-editor-action":"save",disabled:e.creating},on:{click:e.saveShare},scopedSlots:e._u([e.creating?{key:"icon",fn:function(){return[t("NcLoadingIcon")]},proxy:!0}:null],null,!0)},[e._v("\n\t\t\t\t"+e._s(e.shareButtonText)+"\n\t\t\t\t")])],1)])])}),[],!1,null,"53f964d4",null).exports,Ni={name:"SharingTab",components:{CollectionList:ae,InfoIcon:le.A,NcAvatar:E.A,NcButton:ue.A,NcPopover:ce.N,SharingEntryInternal:ke,SharingEntrySimple:_e,SharingInherited:tt,SharingInput:Ue,SharingLinkList:Qt,SharingList:ii,SharingDetailsTab:Ti},mixins:[Be],data:()=>({config:new pe,deleteEvent:null,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,a.C)("core","projects_enabled",!1),showSharingDetailsView:!1,shareDetailsData:{},returnFocusElement:null,internalSharesHelpText:t("files_sharing","Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access."),externalSharesHelpText:t("files_sharing","Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID."),additionalSharesHelpText:t("files_sharing","Shares that are not part of the internal or external shares. This can be shares from apps or other sources.")}),computed:{isSharedWithMe(){return Object.keys(this.sharedWithMe).length>0},canReshare(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{async update(e){this.fileInfo=e,this.resetState(),this.getShares()},async getShares(){try{this.loading=!0;const e=(0,o.KT)("apps/files_sharing/api/v1/shares"),t="json",i=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),r=Z.Ay.get(e,{params:{format:t,path:i,reshares:!0}}),n=Z.Ay.get(e,{params:{format:t,path:i,shared_with_me:!0}}),[s,a]=await Promise.all([r,n]);this.loading=!1,this.processSharedWithMe(a),this.processShares(s)}catch(e){this.error=e?.response?.data?.ocs?.meta?.message?e.response.data.ocs.meta.message:t("files_sharing","Unable to load the shares list"),this.loading=!1,console.error("Error loading the shares list",e)}},resetState(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[],this.showSharingDetailsView=!1,this.shareDetailsData={}},updateExpirationSubtitle(e){const i=(0,he.A)(e.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:(0,he.A)(1e3*i).fromNow()})),(0,he.A)().unix()>i&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares(e){let{data:t}=e;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){const e=(0,s.My)(t.ocs.data.map((e=>new Ae(e))),[e=>e.shareWithDisplayName,e=>e.label,e=>e.createdTime]);this.linkShares=e.filter((e=>e.type===oe.I.Link||e.type===oe.I.Email)),this.shares=e.filter((e=>e.type!==oe.I.Link&&e.type!==oe.I.Email)),console.debug("Processed",this.linkShares.length,"link share(s)"),console.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe(e){let{data:i}=e;if(i.ocs&&i.ocs.data&&i.ocs.data[0]){const e=new Ae(i),r=function(e){return e.type===oe.I.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===oe.I.Team?t("files_sharing","Shared with you and {circle} by {owner}",{circle:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===oe.I.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})}(e),n=e.ownerDisplayName,s=e.owner;this.sharedWithMe={displayName:n,title:r,user:s},this.reshare=e,e.expireDate&&(0,he.A)(e.expireDate).unix()>(0,he.A)().unix()&&(this.updateExpirationSubtitle(e),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,e))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==(0,n.HW)().uid&&(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(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{};e.type===oe.I.Email?this.linkShares.unshift(e):this.shares.unshift(e),this.awaitForShare(e,t)},removeShare(e){const t=e.type===oe.I.Email||e.type===oe.I.Link?this.linkShares:this.shares,i=t.findIndex((t=>t.id===e.id));-1!==i&&t.splice(i,1)},awaitForShare(e,t){this.$nextTick((()=>{let i=this.$refs.shareList;e.type===oe.I.Email&&(i=this.$refs.linkShareList);const r=i.$children.find((t=>t.share===e));r&&t(r)}))},toggleShareDetailsView(e){if(!this.showSharingDetailsView)if(Array.from(document.activeElement.classList).some((e=>e.startsWith("action-")))){const e=document.activeElement.closest('[role="menu"]')?.id;this.returnFocusElement=document.querySelector(`[aria-controls="${e}"]`)}else this.returnFocusElement=document.activeElement;e&&(this.shareDetailsData=e),this.showSharingDetailsView=!this.showSharingDetailsView,this.showSharingDetailsView||this.$nextTick((()=>{this.returnFocusElement?.focus(),this.returnFocusElement=null}))}}},Di=Ni;var Pi=r(53114),Ri={};Ri.styleTagTransform=y(),Ri.setAttributes=g(),Ri.insert=p().bind(null,"head"),Ri.domAPI=u(),Ri.insertStyleElement=m(),c()(Pi.A,Ri),Pi.A&&Pi.A.locals&&Pi.A.locals;const Bi=(0,Ee.A)(Di,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharingTab",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))])]):e._e(),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:!e.showSharingDetailsView,expression:"!showSharingDetailsView"}],staticClass:"sharingTab__content"},[e.isSharedWithMe?t("ul",[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))],1):e._e(),e._v(" "),t("section",[t("div",{staticClass:"section-header"},[t("h4",[e._v(e._s(e.t("files_sharing","Internal shares")))]),e._v(" "),t("NcPopover",{attrs:{"popup-role":"dialog"},scopedSlots:e._u([{key:"trigger",fn:function(){return[t("NcButton",{staticClass:"hint-icon",attrs:{type:"tertiary-no-background","aria-label":e.t("files_sharing","Internal shares explanation")},scopedSlots:e._u([{key:"icon",fn:function(){return[t("InfoIcon",{attrs:{size:20}})]},proxy:!0}])})]},proxy:!0}])},[e._v(" "),t("p",{staticClass:"hint-body"},[e._v("\n\t\t\t\t\t\t"+e._s(e.internalSharesHelpText)+"\n\t\t\t\t\t")])])],1),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,placeholder:e.t("files_sharing","Share with accounts and teams")},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.loading?e._e():t("SharingList",{ref:"shareList",attrs:{shares:e.shares,"file-info":e.fileInfo},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.canReshare&&!e.loading?t("SharingInherited",{attrs:{"file-info":e.fileInfo}}):e._e(),e._v(" "),t("SharingEntryInternal",{attrs:{"file-info":e.fileInfo}})],1),e._v(" "),t("section",[t("div",{staticClass:"section-header"},[t("h4",[e._v(e._s(e.t("files_sharing","External shares")))]),e._v(" "),t("NcPopover",{attrs:{"popup-role":"dialog"},scopedSlots:e._u([{key:"trigger",fn:function(){return[t("NcButton",{staticClass:"hint-icon",attrs:{type:"tertiary-no-background","aria-label":e.t("files_sharing","External shares explanation")},scopedSlots:e._u([{key:"icon",fn:function(){return[t("InfoIcon",{attrs:{size:20}})]},proxy:!0}])})]},proxy:!0}])},[e._v(" "),t("p",{staticClass:"hint-body"},[e._v("\n\t\t\t\t\t\t"+e._s(e.externalSharesHelpText)+"\n\t\t\t\t\t")])])],1),e._v(" "),e.loading?e._e():t("SharingInput",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,"link-shares":e.linkShares,"is-external":!0,placeholder:e.t("files_sharing","Email, federated cloud id"),reshare:e.reshare,shares:e.shares},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.loading?e._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,shares:e.linkShares},on:{"open-sharing-details":e.toggleShareDetailsView}})],1),e._v(" "),e.sections.length>0&&!e.showSharingDetailsView?t("section",[t("div",{staticClass:"section-header"},[t("h4",[e._v(e._s(e.t("files_sharing","Additional shares")))]),e._v(" "),t("NcPopover",{attrs:{"popup-role":"dialog"},scopedSlots:e._u([{key:"trigger",fn:function(){return[t("NcButton",{staticClass:"hint-icon",attrs:{type:"tertiary-no-background","aria-label":e.t("files_sharing","Additional shares explanation")},scopedSlots:e._u([{key:"icon",fn:function(){return[t("InfoIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,915383693)})]},proxy:!0}],null,!1,1027936137)},[e._v(" "),t("p",{staticClass:"hint-body"},[e._v("\n\t\t\t\t\t\t"+e._s(e.additionalSharesHelpText)+"\n\t\t\t\t\t")])])],1),e._v(" "),e._l(e.sections,(function(i,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(i(e.$refs["section-"+r],e.fileInfo),{tag:"component",attrs:{"file-info":e.fileInfo}})],1)})),e._v(" "),e.projectsEnabled?t("div",{directives:[{name:"show",rawName:"v-show",value:!e.showSharingDetailsView&&e.fileInfo,expression:"!showSharingDetailsView && fileInfo"}],staticClass:"sharingTab__additionalContent"},[t("CollectionList",{attrs:{id:`${e.fileInfo.id}`,type:"file",name:e.fileInfo.name}})],1):e._e()],2):e._e()]),e._v(" "),e.showSharingDetailsView?t("SharingDetailsTab",{attrs:{"file-info":e.shareDetailsData.fileInfo,share:e.shareDetailsData.share},on:{"close-sharing-details":e.toggleShareDetailsView,"add:share":e.addShare,"remove:share":e.removeShare}}):e._e()],1)}),[],!1,null,"630c7354",null).exports},27518:e=>{"use strict";e.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},27514:e=>{"use strict";e.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},79722:e=>{"use strict";e.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},86886:e=>{"use strict";e.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"},35810:(e,t,i)=>{"use strict";i.d(t,{Al:()=>r.r,H4:()=>r.c,My:()=>u,Q$:()=>r.e,R3:()=>r.n,VL:()=>r.l,lJ:()=>r.d,pt:()=>r.F,ur:()=>d,v7:()=>c});var r=i(68251),n=(i(43627),i(53334)),s=i(380),a=i(65606);Error;const o=["B","KB","MB","GB","TB","PB"],l=["B","KiB","MiB","GiB","TiB","PiB"];function c(e,t=!1,i=!1,r=!1){i=i&&!r,"string"==typeof e&&(e=Number(e));let s=e>0?Math.floor(Math.log(e)/Math.log(r?1e3:1024)):0;s=Math.min((i?l.length:o.length)-1,s);const a=i?l[s]:o[s];let c=(e/Math.pow(r?1e3:1024,s)).toFixed(1);return!0===t&&0===s?("0.0"!==c?"< 1 ":"0 ")+(i?l[1]:o[1]):(c=s<2?parseFloat(c).toFixed(0):parseFloat(c).toLocaleString((0,n.lO)()),c+" "+a)}function h(e){return e instanceof Date?e.toISOString():String(e)}function u(e,t,i){i=i??[];const r=(t=t??[e=>e]).map(((e,t)=>"asc"===(i[t]??"asc")?1:-1)),s=Intl.Collator([(0,n.Z0)(),(0,n.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,i)=>{for(const[n,a]of t.entries()){const t=s.compare(h(a(e)),h(a(i)));if(0!==t)return t*r[n]}return 0}))}function d(e,t={}){const i={sortingMode:"basename",sortingOrder:"asc",...t};return u(e,[...i.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...i.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==i.sortingMode?[e=>e[i.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...i.sortFavoritesFirst?["asc"]:[],...i.sortFoldersFirst?["asc"]:[],..."mtime"===i.sortingMode?["asc"===i.sortingOrder?"desc":"asc"]:[],..."mtime"!==i.sortingMode&&"basename"!==i.sortingMode?[i.sortingOrder]:[],i.sortingOrder,i.sortingOrder])}var p,f,g={},A={};function m(){return p||(p=1,function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",i="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",r=new RegExp("^"+i+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,i){if(t){const r=Object.keys(t),n=r.length;for(let s=0;s<n;s++)e[r[s]]="strict"===i?[t[r[s]]]:t[r[s]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){return!(null==r.exec(e))},e.getAllMatches=function(e,t){const i=[];let r=t.exec(e);for(;r;){const n=[];n.startIndex=t.lastIndex-r[0].length;const s=r.length;for(let e=0;e<s;e++)n.push(r[e]);i.push(n),r=t.exec(e)}return i},e.nameRegexp=i}(A)),A}function v(){if(f)return g;f=1;const e=m(),t={allowBooleanAttributes:!1,unpairedTags:[]};function i(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function r(e,t){const i=t;for(;t<e.length;t++)if("?"!=e[t]&&" "!=e[t]);else{const r=e.substr(i,t-i);if(t>5&&"xml"===r)return u("InvalidXml","XML declaration allowed only at the start of the document.",p(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function n(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t<e.length;t++)if("-"===e[t]&&"-"===e[t+1]&&">"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let i=1;for(t+=8;t<e.length;t++)if("<"===e[t])i++;else if(">"===e[t]&&(i--,0===i))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t<e.length;t++)if("]"===e[t]&&"]"===e[t+1]&&">"===e[t+2]){t+=2;break}return t}g.validate=function(s,a){a=Object.assign({},t,a);const l=[];let d=!1,f=!1;"\ufeff"===s[0]&&(s=s.substr(1));for(let t=0;t<s.length;t++)if("<"===s[t]&&"?"===s[t+1]){if(t+=2,t=r(s,t),t.err)return t}else{if("<"!==s[t]){if(i(s[t]))continue;return u("InvalidChar","char '"+s[t]+"' is not expected.",p(s,t))}{let A=t;if(t++,"!"===s[t]){t=n(s,t);continue}{let m=!1;"/"===s[t]&&(m=!0,t++);let v="";for(;t<s.length&&">"!==s[t]&&" "!==s[t]&&"\t"!==s[t]&&"\n"!==s[t]&&"\r"!==s[t];t++)v+=s[t];if(v=v.trim(),"/"===v[v.length-1]&&(v=v.substring(0,v.length-1),t--),g=v,!e.isName(g)){let e;return e=0===v.trim().length?"Invalid space after '<'.":"Tag '"+v+"' is an invalid name.",u("InvalidTag",e,p(s,t))}const y=o(s,t);if(!1===y)return u("InvalidAttr","Attributes for '"+v+"' have open quote.",p(s,t));let C=y.value;if(t=y.index,"/"===C[C.length-1]){const e=t-C.length;C=C.substring(0,C.length-1);const i=c(C,a);if(!0!==i)return u(i.err.code,i.err.msg,p(s,e+i.err.line));d=!0}else if(m){if(!y.tagClosed)return u("InvalidTag","Closing tag '"+v+"' doesn't have proper closing.",p(s,t));if(C.trim().length>0)return u("InvalidTag","Closing tag '"+v+"' can't have attributes or invalid starting.",p(s,A));if(0===l.length)return u("InvalidTag","Closing tag '"+v+"' has not been opened.",p(s,A));{const e=l.pop();if(v!==e.tagName){let t=p(s,e.tagStartPos);return u("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+t.line+", col "+t.col+") instead of closing tag '"+v+"'.",p(s,A))}0==l.length&&(f=!0)}}else{const e=c(C,a);if(!0!==e)return u(e.err.code,e.err.msg,p(s,t-C.length+e.err.line));if(!0===f)return u("InvalidXml","Multiple possible root nodes found.",p(s,t));-1!==a.unpairedTags.indexOf(v)||l.push({tagName:v,tagStartPos:A}),d=!0}for(t++;t<s.length;t++)if("<"===s[t]){if("!"===s[t+1]){t++,t=n(s,t);continue}if("?"!==s[t+1])break;if(t=r(s,++t),t.err)return t}else if("&"===s[t]){const e=h(s,t);if(-1==e)return u("InvalidChar","char '&' is not expected.",p(s,t));t=e}else if(!0===f&&!i(s[t]))return u("InvalidXml","Extra text at the end",p(s,t));"<"===s[t]&&t--}}}var g;return d?1==l.length?u("InvalidTag","Unclosed tag '"+l[0].tagName+"'.",p(s,l[0].tagStartPos)):!(l.length>0)||u("InvalidXml","Invalid '"+JSON.stringify(l.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):u("InvalidXml","Start tag expected.",1)};const s='"',a="'";function o(e,t){let i="",r="",n=!1;for(;t<e.length;t++){if(e[t]===s||e[t]===a)""===r?r=e[t]:r!==e[t]||(r="");else if(">"===e[t]&&""===r){n=!0;break}i+=e[t]}return""===r&&{value:i,index:t,tagClosed:n}}const l=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function c(t,i){const r=e.getAllMatches(t,l),n={};for(let e=0;e<r.length;e++){if(0===r[e][1].length)return u("InvalidAttr","Attribute '"+r[e][2]+"' has no space in starting.",A(r[e]));if(void 0!==r[e][3]&&void 0===r[e][4])return u("InvalidAttr","Attribute '"+r[e][2]+"' is without value.",A(r[e]));if(void 0===r[e][3]&&!i.allowBooleanAttributes)return u("InvalidAttr","boolean attribute '"+r[e][2]+"' is not allowed.",A(r[e]));const t=r[e][2];if(!d(t))return u("InvalidAttr","Attribute '"+t+"' is an invalid name.",A(r[e]));if(n.hasOwnProperty(t))return u("InvalidAttr","Attribute '"+t+"' is repeated.",A(r[e]));n[t]=1}return!0}function h(e,t){if(";"===e[++t])return-1;if("#"===e[t])return function(e,t){let i=/\d/;for("x"===e[t]&&(t++,i=/[\da-fA-F]/);t<e.length;t++){if(";"===e[t])return t;if(!e[t].match(i))break}return-1}(e,++t);let i=0;for(;t<e.length;t++,i++)if(!(e[t].match(/\w/)&&i<20)){if(";"===e[t])break;return-1}return t}function u(e,t,i){return{err:{code:e,msg:t,line:i.line||i,col:i.col}}}function d(t){return e.isName(t)}function p(e,t){const i=e.substring(0,t).split(/\r?\n/);return{line:i.length,col:i[i.length-1].length+1}}function A(e){return e.startIndex+e[1].length}return g}var y,C,w,b,E,_,x,S,I,k,T,N={};function D(){return I?S:(I=1,S=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1})}var P,R,B,L,O,M,U,$,F,V,j,H,z,q={};function G(){if(P)return q;function e(n,s,a){let o;const l={};for(let c=0;c<n.length;c++){const h=n[c],u=t(h);let d="";if(d=void 0===a?u:a+"."+u,u===s.textNodeName)void 0===o?o=h[u]:o+=""+h[u];else{if(void 0===u)continue;if(h[u]){let t=e(h[u],s,d);const n=r(t,s);h[":@"]?i(t,h[":@"],d,s):1!==Object.keys(t).length||void 0===t[s.textNodeName]||s.alwaysCreateTextNode?0===Object.keys(t).length&&(s.alwaysCreateTextNode?t[s.textNodeName]="":t=""):t=t[s.textNodeName],void 0!==l[u]&&l.hasOwnProperty(u)?(Array.isArray(l[u])||(l[u]=[l[u]]),l[u].push(t)):s.isArray(u,d,n)?l[u]=[t]:l[u]=t}}}return"string"==typeof o?o.length>0&&(l[s.textNodeName]=o):void 0!==o&&(l[s.textNodeName]=o),l}function t(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const i=t[e];if(":@"!==i)return i}}function i(e,t,i,r){if(t){const n=Object.keys(t),s=n.length;for(let a=0;a<s;a++){const s=n[a];r.isArray(s,i+"."+s,!0,!0)?e[s]=[t[s]]:e[s]=t[s]}}}function r(e,t){const{textNodeName:i}=t,r=Object.keys(e).length;return 0===r||!(1!==r||!e[i]&&"boolean"!=typeof e[i]&&0!==e[i])}return P=1,q.prettify=function(t,i){return e(t,i)},q}function Y(){if(B)return R;B=1;const{buildOptions:e}=function(){if(y)return N;y=1;const e={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,i){return e}};return N.buildOptions=function(t){return Object.assign({},e,t)},N.defaultOptions=e,N}(),t=function(){if(T)return k;T=1;const e=m(),t=w?C:(w=1,C=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}),i=function(){if(E)return b;E=1;const e=m();function t(e,t){let i="";for(;t<e.length&&"'"!==e[t]&&'"'!==e[t];t++)i+=e[t];if(i=i.trim(),-1!==i.indexOf(" "))throw new Error("External entites are not supported");const r=e[t++];let n="";for(;t<e.length&&e[t]!==r;t++)n+=e[t];return[i,n,t]}function i(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"N"===e[t+3]&&"T"===e[t+4]&&"I"===e[t+5]&&"T"===e[t+6]&&"Y"===e[t+7]}function r(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"L"===e[t+3]&&"E"===e[t+4]&&"M"===e[t+5]&&"E"===e[t+6]&&"N"===e[t+7]&&"T"===e[t+8]}function n(e,t){return"!"===e[t+1]&&"A"===e[t+2]&&"T"===e[t+3]&&"T"===e[t+4]&&"L"===e[t+5]&&"I"===e[t+6]&&"S"===e[t+7]&&"T"===e[t+8]}function s(e,t){return"!"===e[t+1]&&"N"===e[t+2]&&"O"===e[t+3]&&"T"===e[t+4]&&"A"===e[t+5]&&"T"===e[t+6]&&"I"===e[t+7]&&"O"===e[t+8]&&"N"===e[t+9]}function a(t){if(e.isName(t))return t;throw new Error(`Invalid entity name ${t}`)}return b=function(e,o){const l={};if("O"!==e[o+3]||"C"!==e[o+4]||"T"!==e[o+5]||"Y"!==e[o+6]||"P"!==e[o+7]||"E"!==e[o+8])throw new Error("Invalid Tag instead of DOCTYPE");{o+=9;let c=1,h=!1,u=!1,d="";for(;o<e.length;o++)if("<"!==e[o]||u)if(">"===e[o]){if(u?"-"===e[o-1]&&"-"===e[o-2]&&(u=!1,c--):c--,0===c)break}else"["===e[o]?h=!0:d+=e[o];else{if(h&&i(e,o)){let i,r;o+=7,[i,r,o]=t(e,o+1),-1===r.indexOf("&")&&(l[a(i)]={regx:RegExp(`&${i};`,"g"),val:r})}else h&&r(e,o)||h&&n(e,o)?o+=8:h&&s(e,o)?o+=9:u=!0;c++,d=""}if(0!==c)throw new Error("Unclosed DOCTYPE")}return{entities:l,i:o}}}(),r=function(){if(x)return _;x=1;const e=/^[-+]?0x[a-fA-F0-9]+$/,t=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const i={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return _=function(r,n={}){if(n=Object.assign({},i,n),!r||"string"!=typeof r)return r;let s=r.trim();if(void 0!==n.skipLike&&n.skipLike.test(s))return r;if(n.hex&&e.test(s))return Number.parseInt(s,16);{const e=t.exec(s);if(e){const t=e[1],i=e[2];let o=(a=e[3])&&-1!==a.indexOf(".")?("."===(a=a.replace(/0+$/,""))?a="0":"."===a[0]?a="0"+a:"."===a[a.length-1]&&(a=a.substr(0,a.length-1)),a):a;const l=e[4]||e[6];if(!n.leadingZeros&&i.length>0&&t&&"."!==s[2])return r;if(!n.leadingZeros&&i.length>0&&!t&&"."!==s[1])return r;{const e=Number(s),a=""+e;return-1!==a.search(/[eE]/)||l?n.eNotation?e:r:-1!==s.indexOf(".")?"0"===a&&""===o||a===o||t&&a==="-"+o?e:r:i?o===a||t+o===a?e:r:s===a||s===t+a?e:r}}return r}var a}}(),n=D();function s(e){const t=Object.keys(e);for(let i=0;i<t.length;i++){const r=t[i];this.lastEntities[r]={regex:new RegExp("&"+r+";","g"),val:e[r]}}}function a(e,t,i,r,n,s,a){if(void 0!==e&&(this.options.trimValues&&!r&&(e=e.trim()),e.length>0)){a||(e=this.replaceEntitiesValue(e));const r=this.options.tagValueProcessor(t,e,i,n,s);return null==r?e:typeof r!=typeof e||r!==e?r:this.options.trimValues||e.trim()===e?y(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function o(e){if(this.options.removeNSPrefix){const t=e.split(":"),i="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=i+t[1])}return e}const l=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function c(t,i,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const r=e.getAllMatches(t,l),n=r.length,s={};for(let e=0;e<n;e++){const t=this.resolveNameSpace(r[e][1]);if(this.ignoreAttributesFn(t,i))continue;let n=r[e][4],a=this.options.attributeNamePrefix+t;if(t.length)if(this.options.transformAttributeName&&(a=this.options.transformAttributeName(a)),"__proto__"===a&&(a="#__proto__"),void 0!==n){this.options.trimValues&&(n=n.trim()),n=this.replaceEntitiesValue(n);const e=this.options.attributeValueProcessor(t,n,i);s[a]=null==e?n:typeof e!=typeof n||e!==n?e:y(n,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(s[a]=!0)}if(!Object.keys(s).length)return;if(this.options.attributesGroupName){const e={};return e[this.options.attributesGroupName]=s,e}return s}}const h=function(e){e=e.replace(/\r\n?/g,"\n");const r=new t("!xml");let n=r,s="",a="";for(let o=0;o<e.length;o++)if("<"===e[o])if("/"===e[o+1]){const t=g(e,">",o,"Closing Tag is not closed.");let i=e.substring(o+2,t).trim();if(this.options.removeNSPrefix){const e=i.indexOf(":");-1!==e&&(i=i.substr(e+1))}this.options.transformTagName&&(i=this.options.transformTagName(i)),n&&(s=this.saveTextToParentTag(s,n,a));const r=a.substring(a.lastIndexOf(".")+1);if(i&&-1!==this.options.unpairedTags.indexOf(i))throw new Error(`Unpaired tag can not be used as closing tag: </${i}>`);let l=0;r&&-1!==this.options.unpairedTags.indexOf(r)?(l=a.lastIndexOf(".",a.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=a.lastIndexOf("."),a=a.substring(0,l),n=this.tagsNodeStack.pop(),s="",o=t}else if("?"===e[o+1]){let i=A(e,o,!1,"?>");if(!i)throw new Error("Pi Tag is not closed.");if(s=this.saveTextToParentTag(s,n,a),this.options.ignoreDeclaration&&"?xml"===i.tagName||this.options.ignorePiTags);else{const e=new t(i.tagName);e.add(this.options.textNodeName,""),i.tagName!==i.tagExp&&i.attrExpPresent&&(e[":@"]=this.buildAttributesMap(i.tagExp,a,i.tagName)),this.addChild(n,e,a)}o=i.closeIndex+1}else if("!--"===e.substr(o+1,3)){const t=g(e,"--\x3e",o+4,"Comment is not closed.");if(this.options.commentPropName){const i=e.substring(o+4,t-2);s=this.saveTextToParentTag(s,n,a),n.add(this.options.commentPropName,[{[this.options.textNodeName]:i}])}o=t}else if("!D"===e.substr(o+1,2)){const t=i(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=g(e,"]]>",o,"CDATA is not closed.")-2,i=e.substring(o+9,t);s=this.saveTextToParentTag(s,n,a);let r=this.parseTextData(i,n.tagname,a,!0,!1,!0,!0);null==r&&(r=""),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:i}]):n.add(this.options.textNodeName,r),o=t+2}else{let i=A(e,o,this.options.removeNSPrefix),l=i.tagName;const c=i.rawTagName;let h=i.tagExp,u=i.attrExpPresent,d=i.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),n&&s&&"!xml"!==n.tagname&&(s=this.saveTextToParentTag(s,n,a,!1));const p=n;if(p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(n=this.tagsNodeStack.pop(),a=a.substring(0,a.lastIndexOf("."))),l!==r.tagname&&(a+=a?"."+l:l),this.isItStopNode(this.options.stopNodes,a,l)){let r="";if(h.length>0&&h.lastIndexOf("/")===h.length-1)"/"===l[l.length-1]?(l=l.substr(0,l.length-1),a=a.substr(0,a.length-1),h=l):h=h.substr(0,h.length-1),o=i.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(l))o=i.closeIndex;else{const t=this.readStopNodeData(e,c,d+1);if(!t)throw new Error(`Unexpected end of ${c}`);o=t.i,r=t.tagContent}const s=new t(l);l!==h&&u&&(s[":@"]=this.buildAttributesMap(h,a,l)),r&&(r=this.parseTextData(r,l,a,!0,u,!0,!0)),a=a.substr(0,a.lastIndexOf(".")),s.add(this.options.textNodeName,r),this.addChild(n,s,a)}else{if(h.length>0&&h.lastIndexOf("/")===h.length-1){"/"===l[l.length-1]?(l=l.substr(0,l.length-1),a=a.substr(0,a.length-1),h=l):h=h.substr(0,h.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));const e=new t(l);l!==h&&u&&(e[":@"]=this.buildAttributesMap(h,a,l)),this.addChild(n,e,a),a=a.substr(0,a.lastIndexOf("."))}else{const e=new t(l);this.tagsNodeStack.push(n),l!==h&&u&&(e[":@"]=this.buildAttributesMap(h,a,l)),this.addChild(n,e,a),n=e}s="",o=d}}else s+=e[o];return r.child};function u(e,t,i){const r=this.options.updateTag(t.tagname,i,t[":@"]);!1===r||("string"==typeof r?(t.tagname=r,e.addChild(t)):e.addChild(t))}const d=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const i=this.docTypeEntities[t];e=e.replace(i.regx,i.val)}for(let t in this.lastEntities){const i=this.lastEntities[t];e=e.replace(i.regex,i.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const i=this.htmlEntities[t];e=e.replace(i.regex,i.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function p(e,t,i,r){return e&&(void 0===r&&(r=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,i,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,r))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function f(e,t,i){const r="*."+i;for(const i in e){const n=e[i];if(r===n||t===n)return!0}return!1}function g(e,t,i,r){const n=e.indexOf(t,i);if(-1===n)throw new Error(r);return n+t.length-1}function A(e,t,i,r=">"){const n=function(e,t,i=">"){let r,n="";for(let s=t;s<e.length;s++){let t=e[s];if(r)t===r&&(r="");else if('"'===t||"'"===t)r=t;else if(t===i[0]){if(!i[1])return{data:n,index:s};if(e[s+1]===i[1])return{data:n,index:s}}else"\t"===t&&(t=" ");n+=t}}(e,t+1,r);if(!n)return;let s=n.data;const a=n.index,o=s.search(/\s/);let l=s,c=!0;-1!==o&&(l=s.substring(0,o),s=s.substring(o+1).trimStart());const h=l;if(i){const e=l.indexOf(":");-1!==e&&(l=l.substr(e+1),c=l!==n.data.substr(e+1))}return{tagName:l,tagExp:s,closeIndex:a,attrExpPresent:c,rawTagName:h}}function v(e,t,i){const r=i;let n=1;for(;i<e.length;i++)if("<"===e[i])if("/"===e[i+1]){const s=g(e,">",i,`${t} is not closed`);if(e.substring(i+2,s).trim()===t&&(n--,0===n))return{tagContent:e.substring(r,i),i:s};i=s}else if("?"===e[i+1])i=g(e,"?>",i+1,"StopNode is not closed.");else if("!--"===e.substr(i+1,3))i=g(e,"--\x3e",i+3,"StopNode is not closed.");else if("!["===e.substr(i+1,2))i=g(e,"]]>",i,"StopNode is not closed.")-2;else{const r=A(e,i,">");r&&((r&&r.tagName)===t&&"/"!==r.tagExp[r.tagExp.length-1]&&n++,i=r.closeIndex)}}function y(t,i,n){if(i&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&r(t,n)}return e.isExist(t)?t:""}return k=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=s,this.parseXml=h,this.parseTextData=a,this.resolveNameSpace=o,this.buildAttributesMap=c,this.isItStopNode=f,this.replaceEntitiesValue=d,this.readStopNodeData=v,this.saveTextToParentTag=p,this.addChild=u,this.ignoreAttributesFn=n(this.options.ignoreAttributes)}}}(),{prettify:i}=G(),r=v();return R=class{constructor(t){this.externalEntities={},this.options=e(t)}parse(e,n){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(n){!0===n&&(n={});const t=r.validate(e,n);if(!0!==t)throw Error(`${t.err.msg}:${t.err.line}:${t.err.col}`)}const s=new t(this.options);s.addExternalEntities(this.externalEntities);const a=s.parseXml(e);return this.options.preserveOrder||void 0===a?a:i(a,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}}function W(){if(O)return L;function e(s,a,o,l){let c="",h=!1;for(let u=0;u<s.length;u++){const d=s[u],p=t(d);if(void 0===p)continue;let f="";if(f=0===o.length?p:`${o}.${p}`,p===a.textNodeName){let e=d[p];r(f,a)||(e=a.tagValueProcessor(p,e),e=n(e,a)),h&&(c+=l),c+=e,h=!1;continue}if(p===a.cdataPropName){h&&(c+=l),c+=`<![CDATA[${d[p][0][a.textNodeName]}]]>`,h=!1;continue}if(p===a.commentPropName){c+=l+`\x3c!--${d[p][0][a.textNodeName]}--\x3e`,h=!0;continue}if("?"===p[0]){const e=i(d[":@"],a),t="?xml"===p?"":l;let r=d[p][0][a.textNodeName];r=0!==r.length?" "+r:"",c+=t+`<${p}${r}${e}?>`,h=!0;continue}let g=l;""!==g&&(g+=a.indentBy);const A=l+`<${p}${i(d[":@"],a)}`,m=e(d[p],a,f,g);-1!==a.unpairedTags.indexOf(p)?a.suppressUnpairedNode?c+=A+">":c+=A+"/>":m&&0!==m.length||!a.suppressEmptyNode?m&&m.endsWith(">")?c+=A+`>${m}${l}</${p}>`:(c+=A+">",m&&""!==l&&(m.includes("/>")||m.includes("</"))?c+=l+a.indentBy+m+l:c+=m,c+=`</${p}>`):c+=A+"/>",h=!0}return c}function t(e){const t=Object.keys(e);for(let i=0;i<t.length;i++){const r=t[i];if(e.hasOwnProperty(r)&&":@"!==r)return r}}function i(e,t){let i="";if(e&&!t.ignoreAttributes)for(let r in e){if(!e.hasOwnProperty(r))continue;let s=t.attributeValueProcessor(r,e[r]);s=n(s,t),!0===s&&t.suppressBooleanAttributes?i+=` ${r.substr(t.attributeNamePrefix.length)}`:i+=` ${r.substr(t.attributeNamePrefix.length)}="${s}"`}return i}function r(e,t){let i=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let r in t.stopNodes)if(t.stopNodes[r]===e||t.stopNodes[r]==="*."+i)return!0;return!1}function n(e,t){if(e&&e.length>0&&t.processEntities)for(let i=0;i<t.entities.length;i++){const r=t.entities[i];e=e.replace(r.regex,r.val)}return e}return O=1,L=function(t,i){let r="";return i.format&&i.indentBy.length>0&&(r="\n"),e(t,i,"",r)}}function X(){if(j)return V;j=1;const e="object"==typeof a&&a.env&&a.env.NODE_DEBUG&&/\bsemver\b/i.test(a.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};return V=e}function Q(){if(z)return H;z=1;const e=Number.MAX_SAFE_INTEGER||9007199254740991;return H={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:e,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}!function(){if(F)return $;F=1;const e=v(),t=Y(),i=function(){if(U)return M;U=1;const e=W(),t=D(),i={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function r(e){this.options=Object.assign({},i,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=t(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=a),this.processTextOrObjNode=n,this.options.format?(this.indentate=s,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function n(e,t,i,r){const n=this.j2x(e,i+1,r.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,i):this.buildObjectNode(n.val,t,n.attrStr,i)}function s(e){return this.options.indentBy.repeat(e)}function a(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}return r.prototype.build=function(t){return this.options.preserveOrder?e(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},r.prototype.j2x=function(e,t,i){let r="",n="";const s=i.join(".");for(let a in e)if(Object.prototype.hasOwnProperty.call(e,a))if(void 0===e[a])this.isAttribute(a)&&(n+="");else if(null===e[a])this.isAttribute(a)?n+="":"?"===a[0]?n+=this.indentate(t)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+a+"/"+this.tagEndChar;else if(e[a]instanceof Date)n+=this.buildTextValNode(e[a],a,"",t);else if("object"!=typeof e[a]){const i=this.isAttribute(a);if(i&&!this.ignoreAttributesFn(i,s))r+=this.buildAttrPairStr(i,""+e[a]);else if(!i)if(a===this.options.textNodeName){let t=this.options.tagValueProcessor(a,""+e[a]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[a],a,"",t)}else if(Array.isArray(e[a])){const r=e[a].length;let s="",o="";for(let l=0;l<r;l++){const r=e[a][l];if(void 0===r);else if(null===r)"?"===a[0]?n+=this.indentate(t)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+a+"/"+this.tagEndChar;else if("object"==typeof r)if(this.options.oneListGroup){const e=this.j2x(r,t+1,i.concat(a));s+=e.val,this.options.attributesGroupName&&r.hasOwnProperty(this.options.attributesGroupName)&&(o+=e.attrStr)}else s+=this.processTextOrObjNode(r,a,t,i);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(a,r);e=this.replaceEntitiesValue(e),s+=e}else s+=this.buildTextValNode(r,a,"",t)}this.options.oneListGroup&&(s=this.buildObjectNode(s,a,o,t)),n+=s}else if(this.options.attributesGroupName&&a===this.options.attributesGroupName){const t=Object.keys(e[a]),i=t.length;for(let n=0;n<i;n++)r+=this.buildAttrPairStr(t[n],""+e[a][t[n]])}else n+=this.processTextOrObjNode(e[a],a,t,i);return{attrStr:r,val:n}},r.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},r.prototype.buildObjectNode=function(e,t,i,r){if(""===e)return"?"===t[0]?this.indentate(r)+"<"+t+i+"?"+this.tagEndChar:this.indentate(r)+"<"+t+i+this.closeTag(t)+this.tagEndChar;{let n="</"+t+this.tagEndChar,s="";return"?"===t[0]&&(s="?",n=""),!i&&""!==i||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===s.length?this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(r)+"<"+t+i+s+this.tagEndChar+e+this.indentate(r)+n:this.indentate(r)+"<"+t+i+s+">"+e+n}},r.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},r.prototype.buildTextValNode=function(e,t,i,r){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(r)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(r)+"<"+t+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(t,e);return n=this.replaceEntitiesValue(n),""===n?this.indentate(r)+"<"+t+i+this.closeTag(t)+this.tagEndChar:this.indentate(r)+"<"+t+i+">"+n+"</"+t+this.tagEndChar}},r.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const i=this.options.entities[t];e=e.replace(i.regex,i.val)}return e},M=r}();$={XMLParser:t,XMLValidator:e,XMLBuilder:i}}();var Z,K,J,ee,te,ie,re,ne,se,ae,oe,le,ce,he={exports:{}};function ue(){if(re)return ie;re=1;const e=X(),{MAX_LENGTH:t,MAX_SAFE_INTEGER:i}=Q(),{safeRe:r,t:n}=(Z||(Z=1,function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:i,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:n}=Q(),s=X(),a=(t=e.exports={}).re=[],o=t.safeRe=[],l=t.src=[],c=t.t={};let h=0;const u="[a-zA-Z0-9-]",d=[["\\s",1],["\\d",n],[u,r]],p=(e,t,i)=>{const r=(e=>{for(const[t,i]of d)e=e.split(`${t}*`).join(`${t}{0,${i}}`).split(`${t}+`).join(`${t}{1,${i}}`);return e})(t),n=h++;s(e,n,t),c[e]=n,l[n]=t,a[n]=new RegExp(t,i?"g":void 0),o[n]=new RegExp(r,i?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${u}*`),p("MAINVERSION",`(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${l[c.NUMERICIDENTIFIER]}|${l[c.NONNUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${l[c.NUMERICIDENTIFIERLOOSE]}|${l[c.NONNUMERICIDENTIFIER]})`),p("PRERELEASE",`(?:-(${l[c.PRERELEASEIDENTIFIER]}(?:\\.${l[c.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${l[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[c.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${u}+`),p("BUILD",`(?:\\+(${l[c.BUILDIDENTIFIER]}(?:\\.${l[c.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${l[c.MAINVERSION]}${l[c.PRERELEASE]}?${l[c.BUILD]}?`),p("FULL",`^${l[c.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${l[c.MAINVERSIONLOOSE]}${l[c.PRERELEASELOOSE]}?${l[c.BUILD]}?`),p("LOOSE",`^${l[c.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${l[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${l[c.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:${l[c.PRERELEASE]})?${l[c.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:${l[c.PRERELEASELOOSE]})?${l[c.BUILD]}?)?)?`),p("XRANGE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${i}})(?:\\.(\\d{1,${i}}))?(?:\\.(\\d{1,${i}}))?`),p("COERCE",`${l[c.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",l[c.COERCEPLAIN]+`(?:${l[c.PRERELEASE]})?(?:${l[c.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",l[c.COERCE],!0),p("COERCERTLFULL",l[c.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${l[c.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",p("TILDE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${l[c.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",p("CARET",`^${l[c.LONECARET]}${l[c.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${l[c.LONECARET]}${l[c.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${l[c.GTLT]}\\s*(${l[c.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]}|${l[c.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${l[c.XRANGEPLAIN]})\\s+-\\s+(${l[c.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${l[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[c.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(he,he.exports)),he.exports),s=function(){if(J)return K;J=1;const e=Object.freeze({loose:!0}),t=Object.freeze({});return K=i=>i?"object"!=typeof i?e:i:t}(),{compareIdentifiers:a}=function(){if(te)return ee;te=1;const e=/^[0-9]+$/,t=(t,i)=>{const r=e.test(t),n=e.test(i);return r&&n&&(t=+t,i=+i),t===i?0:r&&!n?-1:n&&!r?1:t<i?-1:1};return ee={compareIdentifiers:t,rcompareIdentifiers:(e,i)=>t(i,e)}}();class o{constructor(a,l){if(l=s(l),a instanceof o){if(a.loose===!!l.loose&&a.includePrerelease===!!l.includePrerelease)return a;a=a.version}else if("string"!=typeof a)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof a}".`);if(a.length>t)throw new TypeError(`version is longer than ${t} characters`);e("SemVer",a,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const c=a.trim().match(l.loose?r[n.LOOSE]:r[n.FULL]);if(!c)throw new TypeError(`Invalid Version: ${a}`);if(this.raw=a,this.major=+c[1],this.minor=+c[2],this.patch=+c[3],this.major>i||this.major<0)throw new TypeError("Invalid major version");if(this.minor>i||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>i||this.patch<0)throw new TypeError("Invalid patch version");c[4]?this.prerelease=c[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<i)return t}return e})):this.prerelease=[],this.build=c[5]?c[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(e("SemVer.compare",this.version,this.options,t),!(t instanceof o)){if("string"==typeof t&&t===this.version)return 0;t=new o(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(e){return e instanceof o||(e=new o(e,this.options)),a(this.major,e.major)||a(this.minor,e.minor)||a(this.patch,e.patch)}comparePre(t){if(t instanceof o||(t=new o(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let i=0;do{const r=this.prerelease[i],n=t.prerelease[i];if(e("prerelease compare",i,r,n),void 0===r&&void 0===n)return 0;if(void 0===n)return 1;if(void 0===r)return-1;if(r!==n)return a(r,n)}while(++i)}compareBuild(t){t instanceof o||(t=new o(t,this.options));let i=0;do{const r=this.build[i],n=t.build[i];if(e("build compare",i,r,n),void 0===r&&void 0===n)return 0;if(void 0===n)return 1;if(void 0===r)return-1;if(r!==n)return a(r,n)}while(++i)}inc(e,t,i){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,i);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,i);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,i),this.inc("pre",t,i);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,i),this.inc("pre",t,i);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(i)?1:0;if(!t&&!1===i)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[e];else{let r=this.prerelease.length;for(;--r>=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);if(-1===r){if(t===this.prerelease.join(".")&&!1===i)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let r=[t,e];!1===i&&(r=[t]),0===a(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return ie=o}!function(){if(oe)return ae;oe=1;const e=function(){if(se)return ne;se=1;const e=ue();return ne=(t,i,r=!1)=>{if(t instanceof e)return t;try{return new e(t,i)}catch(e){if(!r)return null;throw e}}}();ae=(t,i)=>{const r=e(t,i);return r?r.version:null}}(),function(){if(ce)return le;ce=1;const e=ue();le=(t,i)=>new e(t,i).major}(),s.m}}]);
+//# sourceMappingURL=4672-4672.js.map?v=65a913263960ef0da3d2 \ No newline at end of file
diff --git a/dist/4542-4542.js.license b/dist/4672-4672.js.license
index 5743231769c..5743231769c 100644
--- a/dist/4542-4542.js.license
+++ b/dist/4672-4672.js.license
diff --git a/dist/4672-4672.js.map b/dist/4672-4672.js.map
new file mode 100644
index 00000000000..aca0f5697df
--- /dev/null
+++ b/dist/4672-4672.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"4672-4672.js?v=65a913263960ef0da3d2","mappings":"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","sources":["webpack:///nextcloud/node_modules/@chenfengyuan/vue-qrcode/dist/vue-qrcode.js","webpack:///nextcloud/node_modules/nextcloud-vue-collections/dist/assets/index-CJAYjuyf.css","webpack:///nextcloud/apps/files_sharing/src/components/ShareExpiryTime.vue?vue&type=style&index=0&id=66d8c844&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=2dbd45b5&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=fe8ed59e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=57874406&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=43291a73&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=2aa230f1&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=44339fa4&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&id=272b9f81&prod&lang=scss","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=style&index=0&id=53f964d4&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=a6cc72e6&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=630c7354&prod&scoped=true&lang=scss","webpack:///nextcloud/node_modules/url-search-params-polyfill/index.js","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?0ae8","webpack://nextcloud/./node_modules/nextcloud-vue-collections/dist/assets/index-CJAYjuyf.css?bb25","webpack:///nextcloud/node_modules/lodash-es/isObject.js","webpack:///nextcloud/node_modules/lodash-es/_freeGlobal.js","webpack:///nextcloud/node_modules/lodash-es/_root.js","webpack:///nextcloud/node_modules/lodash-es/now.js","webpack:///nextcloud/node_modules/lodash-es/_trimmedEndIndex.js","webpack:///nextcloud/node_modules/lodash-es/_baseTrim.js","webpack:///nextcloud/node_modules/lodash-es/_Symbol.js","webpack:///nextcloud/node_modules/lodash-es/_getRawTag.js","webpack:///nextcloud/node_modules/lodash-es/_objectToString.js","webpack:///nextcloud/node_modules/lodash-es/_baseGetTag.js","webpack:///nextcloud/node_modules/lodash-es/toNumber.js","webpack:///nextcloud/node_modules/lodash-es/isSymbol.js","webpack:///nextcloud/node_modules/lodash-es/isObjectLike.js","webpack:///nextcloud/node_modules/lodash-es/debounce.js","webpack:///nextcloud/node_modules/nextcloud-vue-collections/dist/index.mjs","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.ts","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/models/Share.ts","webpack:///nextcloud/apps/files_sharing/src/services/SharingService.ts","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?6c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?f180","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?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?8c53","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?65df","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareDetails.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?e4c8","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?45a6","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","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?a297","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?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?0657","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?de0b","webpack:///nextcloud/node_modules/vue-material-design-icons/Tune.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Tune.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Tune.vue?7202","webpack:///nextcloud/node_modules/vue-material-design-icons/Tune.vue?vue&type=template&id=18d04e6a","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarBlank.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarBlank.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/CalendarBlank.vue?3d12","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarBlank.vue?vue&type=template&id=41fe7db9","webpack:///nextcloud/node_modules/vue-material-design-icons/Qrcode.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Qrcode.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Qrcode.vue?b80a","webpack:///nextcloud/node_modules/vue-material-design-icons/Qrcode.vue?vue&type=template&id=aba87788","webpack:///nextcloud/node_modules/vue-material-design-icons/Exclamation.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Exclamation.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Exclamation.vue?46e6","webpack:///nextcloud/node_modules/vue-material-design-icons/Exclamation.vue?vue&type=template&id=03239926","webpack:///nextcloud/node_modules/vue-material-design-icons/Lock.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Lock.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Lock.vue?93ae","webpack:///nextcloud/node_modules/vue-material-design-icons/Lock.vue?vue&type=template&id=6d856da2","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckBold.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckBold.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/CheckBold.vue?7500","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckBold.vue?vue&type=template&id=5603f41f","webpack:///nextcloud/node_modules/vue-material-design-icons/TriangleSmallDown.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/TriangleSmallDown.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/TriangleSmallDown.vue?8651","webpack:///nextcloud/node_modules/vue-material-design-icons/TriangleSmallDown.vue?vue&type=template&id=1eed3dd9","webpack:///nextcloud/node_modules/vue-material-design-icons/EyeOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/EyeOutline.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/EyeOutline.vue?9ce8","webpack:///nextcloud/node_modules/vue-material-design-icons/EyeOutline.vue?vue&type=template&id=e26de6f6","webpack:///nextcloud/node_modules/vue-material-design-icons/FileUpload.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FileUpload.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FileUpload.vue?c468","webpack:///nextcloud/node_modules/vue-material-design-icons/FileUpload.vue?vue&type=template&id=caa55e94","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?eb90","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?4441","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?0b36","webpack://nextcloud/./apps/files_sharing/src/components/ShareExpiryTime.vue?4496","webpack:///nextcloud/node_modules/vue-material-design-icons/Clock.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Clock.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Clock.vue?f027","webpack:///nextcloud/node_modules/vue-material-design-icons/Clock.vue?vue&type=template&id=539578bc","webpack:///nextcloud/apps/files_sharing/src/components/ShareExpiryTime.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/components/ShareExpiryTime.vue","webpack://nextcloud/./apps/files_sharing/src/components/ShareExpiryTime.vue?abc0","webpack://nextcloud/./apps/files_sharing/src/components/ShareExpiryTime.vue?bc23","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/utils/GeneratePassword.ts","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?7910","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","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/components/SharingEntryLink.vue?64e9","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?e340","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?06a5","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?f8d7","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?7f2e","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CircleOutline.vue?68bc","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue?vue&type=template&id=c013567c","webpack:///nextcloud/node_modules/vue-material-design-icons/Email.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Email.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Email.vue?3953","webpack:///nextcloud/node_modules/vue-material-design-icons/Email.vue?vue&type=template&id=7dd7f6aa","webpack:///nextcloud/node_modules/vue-material-design-icons/ShareCircle.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ShareCircle.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ShareCircle.vue?a1b2","webpack:///nextcloud/node_modules/vue-material-design-icons/ShareCircle.vue?vue&type=template&id=0e958886","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountCircleOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountCircleOutline.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountCircleOutline.vue?a068","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountCircleOutline.vue?vue&type=template&id=5b2fe1de","webpack:///nextcloud/node_modules/vue-material-design-icons/Eye.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Eye.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Eye.vue?157b","webpack:///nextcloud/node_modules/vue-material-design-icons/Eye.vue?vue&type=template&id=4ae2345c","webpack:///nextcloud/node_modules/vue-material-design-icons/Refresh.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Refresh.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Refresh.vue?0940","webpack:///nextcloud/node_modules/vue-material-design-icons/Refresh.vue?vue&type=template&id=2864f909","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue","webpack:///nextcloud/apps/files_sharing/src/services/TokenService.ts","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?2f9d","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?10fc","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?8a9e","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs"],"sourcesContent":["/*!\n * vue-qrcode v1.0.2\n * https://fengyuanchen.github.io/vue-qrcode\n *\n * Copyright 2018-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-01-18T06:04:33.222Z\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global = global || self, global.VueQrcode = factory());\n}(this, (function () { 'use strict';\n\n\tfunction commonjsRequire () {\n\t\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n\t}\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar qrcode = createCommonjsModule(function (module, exports) {\n\t(function(f){{module.exports=f();}})(function(){return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof commonjsRequire&&commonjsRequire;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u=\"function\"==typeof commonjsRequire&&commonjsRequire,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\t// can-promise has a crash in some versions of react native that dont have\n\t// standard global objects\n\t// https://github.com/soldair/node-qrcode/issues/157\n\n\tmodule.exports = function () {\n\t return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n\t};\n\n\t},{}],2:[function(require,module,exports){\n\t/**\n\t * Alignment pattern are fixed reference pattern in defined positions\n\t * in a matrix symbology, which enables the decode software to re-synchronise\n\t * the coordinate mapping of the image modules in the event of moderate amounts\n\t * of distortion of the image.\n\t *\n\t * Alignment patterns are present only in QR Code symbols of version 2 or larger\n\t * and their number depends on the symbol version.\n\t */\n\n\tvar getSymbolSize = require('./utils').getSymbolSize;\n\n\t/**\n\t * Calculate the row/column coordinates of the center module of each alignment pattern\n\t * for the specified QR Code version.\n\t *\n\t * The alignment patterns are positioned symmetrically on either side of the diagonal\n\t * running from the top left corner of the symbol to the bottom right corner.\n\t *\n\t * Since positions are simmetrical only half of the coordinates are returned.\n\t * Each item of the array will represent in turn the x and y coordinate.\n\t * @see {@link getPositions}\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Array} Array of coordinate\n\t */\n\texports.getRowColCoords = function getRowColCoords (version) {\n\t if (version === 1) return []\n\n\t var posCount = Math.floor(version / 7) + 2;\n\t var size = getSymbolSize(version);\n\t var intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2;\n\t var positions = [size - 7]; // Last coord is always (size - 7)\n\n\t for (var i = 1; i < posCount - 1; i++) {\n\t positions[i] = positions[i - 1] - intervals;\n\t }\n\n\t positions.push(6); // First coord is always 6\n\n\t return positions.reverse()\n\t};\n\n\t/**\n\t * Returns an array containing the positions of each alignment pattern.\n\t * Each array's element represent the center point of the pattern as (x, y) coordinates\n\t *\n\t * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n\t * and filtering out the items that overlaps with finder pattern\n\t *\n\t * @example\n\t * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n\t * The alignment patterns, therefore, are to be centered on (row, column)\n\t * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n\t * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n\t * and are not therefore used for alignment patterns.\n\t *\n\t * var pos = getPositions(7)\n\t * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Array} Array of coordinates\n\t */\n\texports.getPositions = function getPositions (version) {\n\t var coords = [];\n\t var pos = exports.getRowColCoords(version);\n\t var posLength = pos.length;\n\n\t for (var i = 0; i < posLength; i++) {\n\t for (var j = 0; j < posLength; j++) {\n\t // Skip if position is occupied by finder patterns\n\t if ((i === 0 && j === 0) || // top-left\n\t (i === 0 && j === posLength - 1) || // bottom-left\n\t (i === posLength - 1 && j === 0)) { // top-right\n\t continue\n\t }\n\n\t coords.push([pos[i], pos[j]]);\n\t }\n\t }\n\n\t return coords\n\t};\n\n\t},{\"./utils\":21}],3:[function(require,module,exports){\n\tvar Mode = require('./mode');\n\n\t/**\n\t * Array of characters available in alphanumeric mode\n\t *\n\t * As per QR Code specification, to each character\n\t * is assigned a value from 0 to 44 which in this case coincides\n\t * with the array index\n\t *\n\t * @type {Array}\n\t */\n\tvar ALPHA_NUM_CHARS = [\n\t '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n\t 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n\t 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n\t ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n\t];\n\n\tfunction AlphanumericData (data) {\n\t this.mode = Mode.ALPHANUMERIC;\n\t this.data = data;\n\t}\n\n\tAlphanumericData.getBitsLength = function getBitsLength (length) {\n\t return 11 * Math.floor(length / 2) + 6 * (length % 2)\n\t};\n\n\tAlphanumericData.prototype.getLength = function getLength () {\n\t return this.data.length\n\t};\n\n\tAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n\t return AlphanumericData.getBitsLength(this.data.length)\n\t};\n\n\tAlphanumericData.prototype.write = function write (bitBuffer) {\n\t var i;\n\n\t // Input data characters are divided into groups of two characters\n\t // and encoded as 11-bit binary codes.\n\t for (i = 0; i + 2 <= this.data.length; i += 2) {\n\t // The character value of the first character is multiplied by 45\n\t var value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45;\n\n\t // The character value of the second digit is added to the product\n\t value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1]);\n\n\t // The sum is then stored as 11-bit binary number\n\t bitBuffer.put(value, 11);\n\t }\n\n\t // If the number of input data characters is not a multiple of two,\n\t // the character value of the final character is encoded as a 6-bit binary number.\n\t if (this.data.length % 2) {\n\t bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6);\n\t }\n\t};\n\n\tmodule.exports = AlphanumericData;\n\n\t},{\"./mode\":14}],4:[function(require,module,exports){\n\tfunction BitBuffer () {\n\t this.buffer = [];\n\t this.length = 0;\n\t}\n\n\tBitBuffer.prototype = {\n\n\t get: function (index) {\n\t var bufIndex = Math.floor(index / 8);\n\t return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n\t },\n\n\t put: function (num, length) {\n\t for (var i = 0; i < length; i++) {\n\t this.putBit(((num >>> (length - i - 1)) & 1) === 1);\n\t }\n\t },\n\n\t getLengthInBits: function () {\n\t return this.length\n\t },\n\n\t putBit: function (bit) {\n\t var bufIndex = Math.floor(this.length / 8);\n\t if (this.buffer.length <= bufIndex) {\n\t this.buffer.push(0);\n\t }\n\n\t if (bit) {\n\t this.buffer[bufIndex] |= (0x80 >>> (this.length % 8));\n\t }\n\n\t this.length++;\n\t }\n\t};\n\n\tmodule.exports = BitBuffer;\n\n\t},{}],5:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\n\t/**\n\t * Helper class to handle QR Code symbol modules\n\t *\n\t * @param {Number} size Symbol size\n\t */\n\tfunction BitMatrix (size) {\n\t if (!size || size < 1) {\n\t throw new Error('BitMatrix size must be defined and greater than 0')\n\t }\n\n\t this.size = size;\n\t this.data = BufferUtil.alloc(size * size);\n\t this.reservedBit = BufferUtil.alloc(size * size);\n\t}\n\n\t/**\n\t * Set bit value at specified location\n\t * If reserved flag is set, this bit will be ignored during masking process\n\t *\n\t * @param {Number} row\n\t * @param {Number} col\n\t * @param {Boolean} value\n\t * @param {Boolean} reserved\n\t */\n\tBitMatrix.prototype.set = function (row, col, value, reserved) {\n\t var index = row * this.size + col;\n\t this.data[index] = value;\n\t if (reserved) this.reservedBit[index] = true;\n\t};\n\n\t/**\n\t * Returns bit value at specified location\n\t *\n\t * @param {Number} row\n\t * @param {Number} col\n\t * @return {Boolean}\n\t */\n\tBitMatrix.prototype.get = function (row, col) {\n\t return this.data[row * this.size + col]\n\t};\n\n\t/**\n\t * Applies xor operator at specified location\n\t * (used during masking process)\n\t *\n\t * @param {Number} row\n\t * @param {Number} col\n\t * @param {Boolean} value\n\t */\n\tBitMatrix.prototype.xor = function (row, col, value) {\n\t this.data[row * this.size + col] ^= value;\n\t};\n\n\t/**\n\t * Check if bit at specified location is reserved\n\t *\n\t * @param {Number} row\n\t * @param {Number} col\n\t * @return {Boolean}\n\t */\n\tBitMatrix.prototype.isReserved = function (row, col) {\n\t return this.reservedBit[row * this.size + col]\n\t};\n\n\tmodule.exports = BitMatrix;\n\n\t},{\"../utils/buffer\":28}],6:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\tvar Mode = require('./mode');\n\n\tfunction ByteData (data) {\n\t this.mode = Mode.BYTE;\n\t this.data = BufferUtil.from(data);\n\t}\n\n\tByteData.getBitsLength = function getBitsLength (length) {\n\t return length * 8\n\t};\n\n\tByteData.prototype.getLength = function getLength () {\n\t return this.data.length\n\t};\n\n\tByteData.prototype.getBitsLength = function getBitsLength () {\n\t return ByteData.getBitsLength(this.data.length)\n\t};\n\n\tByteData.prototype.write = function (bitBuffer) {\n\t for (var i = 0, l = this.data.length; i < l; i++) {\n\t bitBuffer.put(this.data[i], 8);\n\t }\n\t};\n\n\tmodule.exports = ByteData;\n\n\t},{\"../utils/buffer\":28,\"./mode\":14}],7:[function(require,module,exports){\n\tvar ECLevel = require('./error-correction-level');\r\n\r\n\tvar EC_BLOCKS_TABLE = [\r\n\t// L M Q H\r\n\t 1, 1, 1, 1,\r\n\t 1, 1, 1, 1,\r\n\t 1, 1, 2, 2,\r\n\t 1, 2, 2, 4,\r\n\t 1, 2, 4, 4,\r\n\t 2, 4, 4, 4,\r\n\t 2, 4, 6, 5,\r\n\t 2, 4, 6, 6,\r\n\t 2, 5, 8, 8,\r\n\t 4, 5, 8, 8,\r\n\t 4, 5, 8, 11,\r\n\t 4, 8, 10, 11,\r\n\t 4, 9, 12, 16,\r\n\t 4, 9, 16, 16,\r\n\t 6, 10, 12, 18,\r\n\t 6, 10, 17, 16,\r\n\t 6, 11, 16, 19,\r\n\t 6, 13, 18, 21,\r\n\t 7, 14, 21, 25,\r\n\t 8, 16, 20, 25,\r\n\t 8, 17, 23, 25,\r\n\t 9, 17, 23, 34,\r\n\t 9, 18, 25, 30,\r\n\t 10, 20, 27, 32,\r\n\t 12, 21, 29, 35,\r\n\t 12, 23, 34, 37,\r\n\t 12, 25, 34, 40,\r\n\t 13, 26, 35, 42,\r\n\t 14, 28, 38, 45,\r\n\t 15, 29, 40, 48,\r\n\t 16, 31, 43, 51,\r\n\t 17, 33, 45, 54,\r\n\t 18, 35, 48, 57,\r\n\t 19, 37, 51, 60,\r\n\t 19, 38, 53, 63,\r\n\t 20, 40, 56, 66,\r\n\t 21, 43, 59, 70,\r\n\t 22, 45, 62, 74,\r\n\t 24, 47, 65, 77,\r\n\t 25, 49, 68, 81\r\n\t];\r\n\r\n\tvar EC_CODEWORDS_TABLE = [\r\n\t// L M Q H\r\n\t 7, 10, 13, 17,\r\n\t 10, 16, 22, 28,\r\n\t 15, 26, 36, 44,\r\n\t 20, 36, 52, 64,\r\n\t 26, 48, 72, 88,\r\n\t 36, 64, 96, 112,\r\n\t 40, 72, 108, 130,\r\n\t 48, 88, 132, 156,\r\n\t 60, 110, 160, 192,\r\n\t 72, 130, 192, 224,\r\n\t 80, 150, 224, 264,\r\n\t 96, 176, 260, 308,\r\n\t 104, 198, 288, 352,\r\n\t 120, 216, 320, 384,\r\n\t 132, 240, 360, 432,\r\n\t 144, 280, 408, 480,\r\n\t 168, 308, 448, 532,\r\n\t 180, 338, 504, 588,\r\n\t 196, 364, 546, 650,\r\n\t 224, 416, 600, 700,\r\n\t 224, 442, 644, 750,\r\n\t 252, 476, 690, 816,\r\n\t 270, 504, 750, 900,\r\n\t 300, 560, 810, 960,\r\n\t 312, 588, 870, 1050,\r\n\t 336, 644, 952, 1110,\r\n\t 360, 700, 1020, 1200,\r\n\t 390, 728, 1050, 1260,\r\n\t 420, 784, 1140, 1350,\r\n\t 450, 812, 1200, 1440,\r\n\t 480, 868, 1290, 1530,\r\n\t 510, 924, 1350, 1620,\r\n\t 540, 980, 1440, 1710,\r\n\t 570, 1036, 1530, 1800,\r\n\t 570, 1064, 1590, 1890,\r\n\t 600, 1120, 1680, 1980,\r\n\t 630, 1204, 1770, 2100,\r\n\t 660, 1260, 1860, 2220,\r\n\t 720, 1316, 1950, 2310,\r\n\t 750, 1372, 2040, 2430\r\n\t];\r\n\r\n\t/**\r\n\t * Returns the number of error correction block that the QR Code should contain\r\n\t * for the specified version and error correction level.\r\n\t *\r\n\t * @param {Number} version QR Code version\r\n\t * @param {Number} errorCorrectionLevel Error correction level\r\n\t * @return {Number} Number of error correction blocks\r\n\t */\r\n\texports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n\t switch (errorCorrectionLevel) {\r\n\t case ECLevel.L:\r\n\t return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n\t case ECLevel.M:\r\n\t return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n\t case ECLevel.Q:\r\n\t return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n\t case ECLevel.H:\r\n\t return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n\t default:\r\n\t return undefined\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the number of error correction codewords to use for the specified\r\n\t * version and error correction level.\r\n\t *\r\n\t * @param {Number} version QR Code version\r\n\t * @param {Number} errorCorrectionLevel Error correction level\r\n\t * @return {Number} Number of error correction codewords\r\n\t */\r\n\texports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n\t switch (errorCorrectionLevel) {\r\n\t case ECLevel.L:\r\n\t return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n\t case ECLevel.M:\r\n\t return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n\t case ECLevel.Q:\r\n\t return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n\t case ECLevel.H:\r\n\t return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n\t default:\r\n\t return undefined\r\n\t }\r\n\t};\r\n\n\t},{\"./error-correction-level\":8}],8:[function(require,module,exports){\n\texports.L = { bit: 1 };\n\texports.M = { bit: 0 };\n\texports.Q = { bit: 3 };\n\texports.H = { bit: 2 };\n\n\tfunction fromString (string) {\n\t if (typeof string !== 'string') {\n\t throw new Error('Param is not a string')\n\t }\n\n\t var lcStr = string.toLowerCase();\n\n\t switch (lcStr) {\n\t case 'l':\n\t case 'low':\n\t return exports.L\n\n\t case 'm':\n\t case 'medium':\n\t return exports.M\n\n\t case 'q':\n\t case 'quartile':\n\t return exports.Q\n\n\t case 'h':\n\t case 'high':\n\t return exports.H\n\n\t default:\n\t throw new Error('Unknown EC Level: ' + string)\n\t }\n\t}\n\n\texports.isValid = function isValid (level) {\n\t return level && typeof level.bit !== 'undefined' &&\n\t level.bit >= 0 && level.bit < 4\n\t};\n\n\texports.from = function from (value, defaultValue) {\n\t if (exports.isValid(value)) {\n\t return value\n\t }\n\n\t try {\n\t return fromString(value)\n\t } catch (e) {\n\t return defaultValue\n\t }\n\t};\n\n\t},{}],9:[function(require,module,exports){\n\tvar getSymbolSize = require('./utils').getSymbolSize;\n\tvar FINDER_PATTERN_SIZE = 7;\n\n\t/**\n\t * Returns an array containing the positions of each finder pattern.\n\t * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Array} Array of coordinates\n\t */\n\texports.getPositions = function getPositions (version) {\n\t var size = getSymbolSize(version);\n\n\t return [\n\t // top-left\n\t [0, 0],\n\t // top-right\n\t [size - FINDER_PATTERN_SIZE, 0],\n\t // bottom-left\n\t [0, size - FINDER_PATTERN_SIZE]\n\t ]\n\t};\n\n\t},{\"./utils\":21}],10:[function(require,module,exports){\n\tvar Utils = require('./utils');\n\n\tvar G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n\tvar G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\tvar G15_BCH = Utils.getBCHDigit(G15);\n\n\t/**\n\t * Returns format information with relative error correction bits\n\t *\n\t * The format information is a 15-bit sequence containing 5 data bits,\n\t * with 10 error correction bits calculated using the (15, 5) BCH code.\n\t *\n\t * @param {Number} errorCorrectionLevel Error correction level\n\t * @param {Number} mask Mask pattern\n\t * @return {Number} Encoded format information bits\n\t */\n\texports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n\t var data = ((errorCorrectionLevel.bit << 3) | mask);\n\t var d = data << 10;\n\n\t while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n\t d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH));\n\t }\n\n\t // xor final data with mask pattern in order to ensure that\n\t // no combination of Error Correction Level and data mask pattern\n\t // will result in an all-zero data string\n\t return ((data << 10) | d) ^ G15_MASK\n\t};\n\n\t},{\"./utils\":21}],11:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\n\tvar EXP_TABLE = BufferUtil.alloc(512);\n\tvar LOG_TABLE = BufferUtil.alloc(256)\n\t/**\n\t * Precompute the log and anti-log tables for faster computation later\n\t *\n\t * For each possible value in the galois field 2^8, we will pre-compute\n\t * the logarithm and anti-logarithm (exponential) of this value\n\t *\n\t * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n\t */\n\t;(function initTables () {\n\t var x = 1;\n\t for (var i = 0; i < 255; i++) {\n\t EXP_TABLE[i] = x;\n\t LOG_TABLE[x] = i;\n\n\t x <<= 1; // multiply by 2\n\n\t // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n\t // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n\t if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n\t x ^= 0x11D;\n\t }\n\t }\n\n\t // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n\t // stay inside the bounds (because we will mainly use this table for the multiplication of\n\t // two GF numbers, no more).\n\t // @see {@link mul}\n\t for (i = 255; i < 512; i++) {\n\t EXP_TABLE[i] = EXP_TABLE[i - 255];\n\t }\n\t}());\n\n\t/**\n\t * Returns log value of n inside Galois Field\n\t *\n\t * @param {Number} n\n\t * @return {Number}\n\t */\n\texports.log = function log (n) {\n\t if (n < 1) throw new Error('log(' + n + ')')\n\t return LOG_TABLE[n]\n\t};\n\n\t/**\n\t * Returns anti-log value of n inside Galois Field\n\t *\n\t * @param {Number} n\n\t * @return {Number}\n\t */\n\texports.exp = function exp (n) {\n\t return EXP_TABLE[n]\n\t};\n\n\t/**\n\t * Multiplies two number inside Galois Field\n\t *\n\t * @param {Number} x\n\t * @param {Number} y\n\t * @return {Number}\n\t */\n\texports.mul = function mul (x, y) {\n\t if (x === 0 || y === 0) return 0\n\n\t // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n\t // @see {@link initTables}\n\t return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n\t};\n\n\t},{\"../utils/buffer\":28}],12:[function(require,module,exports){\n\tvar Mode = require('./mode');\n\tvar Utils = require('./utils');\n\n\tfunction KanjiData (data) {\n\t this.mode = Mode.KANJI;\n\t this.data = data;\n\t}\n\n\tKanjiData.getBitsLength = function getBitsLength (length) {\n\t return length * 13\n\t};\n\n\tKanjiData.prototype.getLength = function getLength () {\n\t return this.data.length\n\t};\n\n\tKanjiData.prototype.getBitsLength = function getBitsLength () {\n\t return KanjiData.getBitsLength(this.data.length)\n\t};\n\n\tKanjiData.prototype.write = function (bitBuffer) {\n\t var i;\n\n\t // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n\t // These byte values are shifted from the JIS X 0208 values.\n\t // JIS X 0208 gives details of the shift coded representation.\n\t for (i = 0; i < this.data.length; i++) {\n\t var value = Utils.toSJIS(this.data[i]);\n\n\t // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n\t if (value >= 0x8140 && value <= 0x9FFC) {\n\t // Subtract 0x8140 from Shift JIS value\n\t value -= 0x8140;\n\n\t // For characters with Shift JIS values from 0xE040 to 0xEBBF\n\t } else if (value >= 0xE040 && value <= 0xEBBF) {\n\t // Subtract 0xC140 from Shift JIS value\n\t value -= 0xC140;\n\t } else {\n\t throw new Error(\n\t 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n\t 'Make sure your charset is UTF-8')\n\t }\n\n\t // Multiply most significant byte of result by 0xC0\n\t // and add least significant byte to product\n\t value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff);\n\n\t // Convert result to a 13-bit binary string\n\t bitBuffer.put(value, 13);\n\t }\n\t};\n\n\tmodule.exports = KanjiData;\n\n\t},{\"./mode\":14,\"./utils\":21}],13:[function(require,module,exports){\n\t/**\n\t * Data mask pattern reference\n\t * @type {Object}\n\t */\n\texports.Patterns = {\n\t PATTERN000: 0,\n\t PATTERN001: 1,\n\t PATTERN010: 2,\n\t PATTERN011: 3,\n\t PATTERN100: 4,\n\t PATTERN101: 5,\n\t PATTERN110: 6,\n\t PATTERN111: 7\n\t};\n\n\t/**\n\t * Weighted penalty scores for the undesirable features\n\t * @type {Object}\n\t */\n\tvar PenaltyScores = {\n\t N1: 3,\n\t N2: 3,\n\t N3: 40,\n\t N4: 10\n\t};\n\n\t/**\n\t * Check if mask pattern value is valid\n\t *\n\t * @param {Number} mask Mask pattern\n\t * @return {Boolean} true if valid, false otherwise\n\t */\n\texports.isValid = function isValid (mask) {\n\t return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n\t};\n\n\t/**\n\t * Returns mask pattern from a value.\n\t * If value is not valid, returns undefined\n\t *\n\t * @param {Number|String} value Mask pattern value\n\t * @return {Number} Valid mask pattern or undefined\n\t */\n\texports.from = function from (value) {\n\t return exports.isValid(value) ? parseInt(value, 10) : undefined\n\t};\n\n\t/**\n\t* Find adjacent modules in row/column with the same color\n\t* and assign a penalty value.\n\t*\n\t* Points: N1 + i\n\t* i is the amount by which the number of adjacent modules of the same color exceeds 5\n\t*/\n\texports.getPenaltyN1 = function getPenaltyN1 (data) {\n\t var size = data.size;\n\t var points = 0;\n\t var sameCountCol = 0;\n\t var sameCountRow = 0;\n\t var lastCol = null;\n\t var lastRow = null;\n\n\t for (var row = 0; row < size; row++) {\n\t sameCountCol = sameCountRow = 0;\n\t lastCol = lastRow = null;\n\n\t for (var col = 0; col < size; col++) {\n\t var module = data.get(row, col);\n\t if (module === lastCol) {\n\t sameCountCol++;\n\t } else {\n\t if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5);\n\t lastCol = module;\n\t sameCountCol = 1;\n\t }\n\n\t module = data.get(col, row);\n\t if (module === lastRow) {\n\t sameCountRow++;\n\t } else {\n\t if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5);\n\t lastRow = module;\n\t sameCountRow = 1;\n\t }\n\t }\n\n\t if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5);\n\t if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5);\n\t }\n\n\t return points\n\t};\n\n\t/**\n\t * Find 2x2 blocks with the same color and assign a penalty value\n\t *\n\t * Points: N2 * (m - 1) * (n - 1)\n\t */\n\texports.getPenaltyN2 = function getPenaltyN2 (data) {\n\t var size = data.size;\n\t var points = 0;\n\n\t for (var row = 0; row < size - 1; row++) {\n\t for (var col = 0; col < size - 1; col++) {\n\t var last = data.get(row, col) +\n\t data.get(row, col + 1) +\n\t data.get(row + 1, col) +\n\t data.get(row + 1, col + 1);\n\n\t if (last === 4 || last === 0) points++;\n\t }\n\t }\n\n\t return points * PenaltyScores.N2\n\t};\n\n\t/**\n\t * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n\t * preceded or followed by light area 4 modules wide\n\t *\n\t * Points: N3 * number of pattern found\n\t */\n\texports.getPenaltyN3 = function getPenaltyN3 (data) {\n\t var size = data.size;\n\t var points = 0;\n\t var bitsCol = 0;\n\t var bitsRow = 0;\n\n\t for (var row = 0; row < size; row++) {\n\t bitsCol = bitsRow = 0;\n\t for (var col = 0; col < size; col++) {\n\t bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col);\n\t if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++;\n\n\t bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row);\n\t if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++;\n\t }\n\t }\n\n\t return points * PenaltyScores.N3\n\t};\n\n\t/**\n\t * Calculate proportion of dark modules in entire symbol\n\t *\n\t * Points: N4 * k\n\t *\n\t * k is the rating of the deviation of the proportion of dark modules\n\t * in the symbol from 50% in steps of 5%\n\t */\n\texports.getPenaltyN4 = function getPenaltyN4 (data) {\n\t var darkCount = 0;\n\t var modulesCount = data.data.length;\n\n\t for (var i = 0; i < modulesCount; i++) darkCount += data.data[i];\n\n\t var k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10);\n\n\t return k * PenaltyScores.N4\n\t};\n\n\t/**\n\t * Return mask value at given position\n\t *\n\t * @param {Number} maskPattern Pattern reference value\n\t * @param {Number} i Row\n\t * @param {Number} j Column\n\t * @return {Boolean} Mask value\n\t */\n\tfunction getMaskAt (maskPattern, i, j) {\n\t switch (maskPattern) {\n\t case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n\t case exports.Patterns.PATTERN001: return i % 2 === 0\n\t case exports.Patterns.PATTERN010: return j % 3 === 0\n\t case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n\t case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n\t case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n\t case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n\t case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n\t default: throw new Error('bad maskPattern:' + maskPattern)\n\t }\n\t}\n\n\t/**\n\t * Apply a mask pattern to a BitMatrix\n\t *\n\t * @param {Number} pattern Pattern reference number\n\t * @param {BitMatrix} data BitMatrix data\n\t */\n\texports.applyMask = function applyMask (pattern, data) {\n\t var size = data.size;\n\n\t for (var col = 0; col < size; col++) {\n\t for (var row = 0; row < size; row++) {\n\t if (data.isReserved(row, col)) continue\n\t data.xor(row, col, getMaskAt(pattern, row, col));\n\t }\n\t }\n\t};\n\n\t/**\n\t * Returns the best mask pattern for data\n\t *\n\t * @param {BitMatrix} data\n\t * @return {Number} Mask pattern reference number\n\t */\n\texports.getBestMask = function getBestMask (data, setupFormatFunc) {\n\t var numPatterns = Object.keys(exports.Patterns).length;\n\t var bestPattern = 0;\n\t var lowerPenalty = Infinity;\n\n\t for (var p = 0; p < numPatterns; p++) {\n\t setupFormatFunc(p);\n\t exports.applyMask(p, data);\n\n\t // Calculate penalty\n\t var penalty =\n\t exports.getPenaltyN1(data) +\n\t exports.getPenaltyN2(data) +\n\t exports.getPenaltyN3(data) +\n\t exports.getPenaltyN4(data);\n\n\t // Undo previously applied mask\n\t exports.applyMask(p, data);\n\n\t if (penalty < lowerPenalty) {\n\t lowerPenalty = penalty;\n\t bestPattern = p;\n\t }\n\t }\n\n\t return bestPattern\n\t};\n\n\t},{}],14:[function(require,module,exports){\n\tvar VersionCheck = require('./version-check');\n\tvar Regex = require('./regex');\n\n\t/**\n\t * Numeric mode encodes data from the decimal digit set (0 - 9)\n\t * (byte values 30HEX to 39HEX).\n\t * Normally, 3 data characters are represented by 10 bits.\n\t *\n\t * @type {Object}\n\t */\n\texports.NUMERIC = {\n\t id: 'Numeric',\n\t bit: 1 << 0,\n\t ccBits: [10, 12, 14]\n\t};\n\n\t/**\n\t * Alphanumeric mode encodes data from a set of 45 characters,\n\t * i.e. 10 numeric digits (0 - 9),\n\t * 26 alphabetic characters (A - Z),\n\t * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n\t * Normally, two input characters are represented by 11 bits.\n\t *\n\t * @type {Object}\n\t */\n\texports.ALPHANUMERIC = {\n\t id: 'Alphanumeric',\n\t bit: 1 << 1,\n\t ccBits: [9, 11, 13]\n\t};\n\n\t/**\n\t * In byte mode, data is encoded at 8 bits per character.\n\t *\n\t * @type {Object}\n\t */\n\texports.BYTE = {\n\t id: 'Byte',\n\t bit: 1 << 2,\n\t ccBits: [8, 16, 16]\n\t};\n\n\t/**\n\t * The Kanji mode efficiently encodes Kanji characters in accordance with\n\t * the Shift JIS system based on JIS X 0208.\n\t * The Shift JIS values are shifted from the JIS X 0208 values.\n\t * JIS X 0208 gives details of the shift coded representation.\n\t * Each two-byte character value is compacted to a 13-bit binary codeword.\n\t *\n\t * @type {Object}\n\t */\n\texports.KANJI = {\n\t id: 'Kanji',\n\t bit: 1 << 3,\n\t ccBits: [8, 10, 12]\n\t};\n\n\t/**\n\t * Mixed mode will contain a sequences of data in a combination of any of\n\t * the modes described above\n\t *\n\t * @type {Object}\n\t */\n\texports.MIXED = {\n\t bit: -1\n\t};\n\n\t/**\n\t * Returns the number of bits needed to store the data length\n\t * according to QR Code specifications.\n\t *\n\t * @param {Mode} mode Data mode\n\t * @param {Number} version QR Code version\n\t * @return {Number} Number of bits\n\t */\n\texports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n\t if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n\t if (!VersionCheck.isValid(version)) {\n\t throw new Error('Invalid version: ' + version)\n\t }\n\n\t if (version >= 1 && version < 10) return mode.ccBits[0]\n\t else if (version < 27) return mode.ccBits[1]\n\t return mode.ccBits[2]\n\t};\n\n\t/**\n\t * Returns the most efficient mode to store the specified data\n\t *\n\t * @param {String} dataStr Input data string\n\t * @return {Mode} Best mode\n\t */\n\texports.getBestModeForData = function getBestModeForData (dataStr) {\n\t if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n\t else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n\t else if (Regex.testKanji(dataStr)) return exports.KANJI\n\t else return exports.BYTE\n\t};\n\n\t/**\n\t * Return mode name as string\n\t *\n\t * @param {Mode} mode Mode object\n\t * @returns {String} Mode name\n\t */\n\texports.toString = function toString (mode) {\n\t if (mode && mode.id) return mode.id\n\t throw new Error('Invalid mode')\n\t};\n\n\t/**\n\t * Check if input param is a valid mode object\n\t *\n\t * @param {Mode} mode Mode object\n\t * @returns {Boolean} True if valid mode, false otherwise\n\t */\n\texports.isValid = function isValid (mode) {\n\t return mode && mode.bit && mode.ccBits\n\t};\n\n\t/**\n\t * Get mode object from its name\n\t *\n\t * @param {String} string Mode name\n\t * @returns {Mode} Mode object\n\t */\n\tfunction fromString (string) {\n\t if (typeof string !== 'string') {\n\t throw new Error('Param is not a string')\n\t }\n\n\t var lcStr = string.toLowerCase();\n\n\t switch (lcStr) {\n\t case 'numeric':\n\t return exports.NUMERIC\n\t case 'alphanumeric':\n\t return exports.ALPHANUMERIC\n\t case 'kanji':\n\t return exports.KANJI\n\t case 'byte':\n\t return exports.BYTE\n\t default:\n\t throw new Error('Unknown mode: ' + string)\n\t }\n\t}\n\n\t/**\n\t * Returns mode from a value.\n\t * If value is not a valid mode, returns defaultValue\n\t *\n\t * @param {Mode|String} value Encoding mode\n\t * @param {Mode} defaultValue Fallback value\n\t * @return {Mode} Encoding mode\n\t */\n\texports.from = function from (value, defaultValue) {\n\t if (exports.isValid(value)) {\n\t return value\n\t }\n\n\t try {\n\t return fromString(value)\n\t } catch (e) {\n\t return defaultValue\n\t }\n\t};\n\n\t},{\"./regex\":19,\"./version-check\":22}],15:[function(require,module,exports){\n\tvar Mode = require('./mode');\n\n\tfunction NumericData (data) {\n\t this.mode = Mode.NUMERIC;\n\t this.data = data.toString();\n\t}\n\n\tNumericData.getBitsLength = function getBitsLength (length) {\n\t return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n\t};\n\n\tNumericData.prototype.getLength = function getLength () {\n\t return this.data.length\n\t};\n\n\tNumericData.prototype.getBitsLength = function getBitsLength () {\n\t return NumericData.getBitsLength(this.data.length)\n\t};\n\n\tNumericData.prototype.write = function write (bitBuffer) {\n\t var i, group, value;\n\n\t // The input data string is divided into groups of three digits,\n\t // and each group is converted to its 10-bit binary equivalent.\n\t for (i = 0; i + 3 <= this.data.length; i += 3) {\n\t group = this.data.substr(i, 3);\n\t value = parseInt(group, 10);\n\n\t bitBuffer.put(value, 10);\n\t }\n\n\t // If the number of input digits is not an exact multiple of three,\n\t // the final one or two digits are converted to 4 or 7 bits respectively.\n\t var remainingNum = this.data.length - i;\n\t if (remainingNum > 0) {\n\t group = this.data.substr(i);\n\t value = parseInt(group, 10);\n\n\t bitBuffer.put(value, remainingNum * 3 + 1);\n\t }\n\t};\n\n\tmodule.exports = NumericData;\n\n\t},{\"./mode\":14}],16:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\tvar GF = require('./galois-field');\n\n\t/**\n\t * Multiplies two polynomials inside Galois Field\n\t *\n\t * @param {Buffer} p1 Polynomial\n\t * @param {Buffer} p2 Polynomial\n\t * @return {Buffer} Product of p1 and p2\n\t */\n\texports.mul = function mul (p1, p2) {\n\t var coeff = BufferUtil.alloc(p1.length + p2.length - 1);\n\n\t for (var i = 0; i < p1.length; i++) {\n\t for (var j = 0; j < p2.length; j++) {\n\t coeff[i + j] ^= GF.mul(p1[i], p2[j]);\n\t }\n\t }\n\n\t return coeff\n\t};\n\n\t/**\n\t * Calculate the remainder of polynomials division\n\t *\n\t * @param {Buffer} divident Polynomial\n\t * @param {Buffer} divisor Polynomial\n\t * @return {Buffer} Remainder\n\t */\n\texports.mod = function mod (divident, divisor) {\n\t var result = BufferUtil.from(divident);\n\n\t while ((result.length - divisor.length) >= 0) {\n\t var coeff = result[0];\n\n\t for (var i = 0; i < divisor.length; i++) {\n\t result[i] ^= GF.mul(divisor[i], coeff);\n\t }\n\n\t // remove all zeros from buffer head\n\t var offset = 0;\n\t while (offset < result.length && result[offset] === 0) offset++;\n\t result = result.slice(offset);\n\t }\n\n\t return result\n\t};\n\n\t/**\n\t * Generate an irreducible generator polynomial of specified degree\n\t * (used by Reed-Solomon encoder)\n\t *\n\t * @param {Number} degree Degree of the generator polynomial\n\t * @return {Buffer} Buffer containing polynomial coefficients\n\t */\n\texports.generateECPolynomial = function generateECPolynomial (degree) {\n\t var poly = BufferUtil.from([1]);\n\t for (var i = 0; i < degree; i++) {\n\t poly = exports.mul(poly, [1, GF.exp(i)]);\n\t }\n\n\t return poly\n\t};\n\n\t},{\"../utils/buffer\":28,\"./galois-field\":11}],17:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\tvar Utils = require('./utils');\n\tvar ECLevel = require('./error-correction-level');\n\tvar BitBuffer = require('./bit-buffer');\n\tvar BitMatrix = require('./bit-matrix');\n\tvar AlignmentPattern = require('./alignment-pattern');\n\tvar FinderPattern = require('./finder-pattern');\n\tvar MaskPattern = require('./mask-pattern');\n\tvar ECCode = require('./error-correction-code');\n\tvar ReedSolomonEncoder = require('./reed-solomon-encoder');\n\tvar Version = require('./version');\n\tvar FormatInfo = require('./format-info');\n\tvar Mode = require('./mode');\n\tvar Segments = require('./segments');\n\tvar isArray = require('isarray');\n\n\t/**\n\t * QRCode for JavaScript\n\t *\n\t * modified by Ryan Day for nodejs support\n\t * Copyright (c) 2011 Ryan Day\n\t *\n\t * Licensed under the MIT license:\n\t * http://www.opensource.org/licenses/mit-license.php\n\t *\n\t//---------------------------------------------------------------------\n\t// QRCode for JavaScript\n\t//\n\t// Copyright (c) 2009 Kazuhiko Arase\n\t//\n\t// URL: http://www.d-project.com/\n\t//\n\t// Licensed under the MIT license:\n\t// http://www.opensource.org/licenses/mit-license.php\n\t//\n\t// The word \"QR Code\" is registered trademark of\n\t// DENSO WAVE INCORPORATED\n\t// http://www.denso-wave.com/qrcode/faqpatent-e.html\n\t//\n\t//---------------------------------------------------------------------\n\t*/\n\n\t/**\n\t * Add finder patterns bits to matrix\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t * @param {Number} version QR Code version\n\t */\n\tfunction setupFinderPattern (matrix, version) {\n\t var size = matrix.size;\n\t var pos = FinderPattern.getPositions(version);\n\n\t for (var i = 0; i < pos.length; i++) {\n\t var row = pos[i][0];\n\t var col = pos[i][1];\n\n\t for (var r = -1; r <= 7; r++) {\n\t if (row + r <= -1 || size <= row + r) continue\n\n\t for (var c = -1; c <= 7; c++) {\n\t if (col + c <= -1 || size <= col + c) continue\n\n\t if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n\t (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n\t (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n\t matrix.set(row + r, col + c, true, true);\n\t } else {\n\t matrix.set(row + r, col + c, false, true);\n\t }\n\t }\n\t }\n\t }\n\t}\n\n\t/**\n\t * Add timing pattern bits to matrix\n\t *\n\t * Note: this function must be called before {@link setupAlignmentPattern}\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t */\n\tfunction setupTimingPattern (matrix) {\n\t var size = matrix.size;\n\n\t for (var r = 8; r < size - 8; r++) {\n\t var value = r % 2 === 0;\n\t matrix.set(r, 6, value, true);\n\t matrix.set(6, r, value, true);\n\t }\n\t}\n\n\t/**\n\t * Add alignment patterns bits to matrix\n\t *\n\t * Note: this function must be called after {@link setupTimingPattern}\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t * @param {Number} version QR Code version\n\t */\n\tfunction setupAlignmentPattern (matrix, version) {\n\t var pos = AlignmentPattern.getPositions(version);\n\n\t for (var i = 0; i < pos.length; i++) {\n\t var row = pos[i][0];\n\t var col = pos[i][1];\n\n\t for (var r = -2; r <= 2; r++) {\n\t for (var c = -2; c <= 2; c++) {\n\t if (r === -2 || r === 2 || c === -2 || c === 2 ||\n\t (r === 0 && c === 0)) {\n\t matrix.set(row + r, col + c, true, true);\n\t } else {\n\t matrix.set(row + r, col + c, false, true);\n\t }\n\t }\n\t }\n\t }\n\t}\n\n\t/**\n\t * Add version info bits to matrix\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t * @param {Number} version QR Code version\n\t */\n\tfunction setupVersionInfo (matrix, version) {\n\t var size = matrix.size;\n\t var bits = Version.getEncodedBits(version);\n\t var row, col, mod;\n\n\t for (var i = 0; i < 18; i++) {\n\t row = Math.floor(i / 3);\n\t col = i % 3 + size - 8 - 3;\n\t mod = ((bits >> i) & 1) === 1;\n\n\t matrix.set(row, col, mod, true);\n\t matrix.set(col, row, mod, true);\n\t }\n\t}\n\n\t/**\n\t * Add format info bits to matrix\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n\t * @param {Number} maskPattern Mask pattern reference value\n\t */\n\tfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n\t var size = matrix.size;\n\t var bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern);\n\t var i, mod;\n\n\t for (i = 0; i < 15; i++) {\n\t mod = ((bits >> i) & 1) === 1;\n\n\t // vertical\n\t if (i < 6) {\n\t matrix.set(i, 8, mod, true);\n\t } else if (i < 8) {\n\t matrix.set(i + 1, 8, mod, true);\n\t } else {\n\t matrix.set(size - 15 + i, 8, mod, true);\n\t }\n\n\t // horizontal\n\t if (i < 8) {\n\t matrix.set(8, size - i - 1, mod, true);\n\t } else if (i < 9) {\n\t matrix.set(8, 15 - i - 1 + 1, mod, true);\n\t } else {\n\t matrix.set(8, 15 - i - 1, mod, true);\n\t }\n\t }\n\n\t // fixed module\n\t matrix.set(size - 8, 8, 1, true);\n\t}\n\n\t/**\n\t * Add encoded data bits to matrix\n\t *\n\t * @param {BitMatrix} matrix Modules matrix\n\t * @param {Buffer} data Data codewords\n\t */\n\tfunction setupData (matrix, data) {\n\t var size = matrix.size;\n\t var inc = -1;\n\t var row = size - 1;\n\t var bitIndex = 7;\n\t var byteIndex = 0;\n\n\t for (var col = size - 1; col > 0; col -= 2) {\n\t if (col === 6) col--;\n\n\t while (true) {\n\t for (var c = 0; c < 2; c++) {\n\t if (!matrix.isReserved(row, col - c)) {\n\t var dark = false;\n\n\t if (byteIndex < data.length) {\n\t dark = (((data[byteIndex] >>> bitIndex) & 1) === 1);\n\t }\n\n\t matrix.set(row, col - c, dark);\n\t bitIndex--;\n\n\t if (bitIndex === -1) {\n\t byteIndex++;\n\t bitIndex = 7;\n\t }\n\t }\n\t }\n\n\t row += inc;\n\n\t if (row < 0 || size <= row) {\n\t row -= inc;\n\t inc = -inc;\n\t break\n\t }\n\t }\n\t }\n\t}\n\n\t/**\n\t * Create encoded codewords from data input\n\t *\n\t * @param {Number} version QR Code version\n\t * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n\t * @param {ByteData} data Data input\n\t * @return {Buffer} Buffer containing encoded codewords\n\t */\n\tfunction createData (version, errorCorrectionLevel, segments) {\n\t // Prepare data buffer\n\t var buffer = new BitBuffer();\n\n\t segments.forEach(function (data) {\n\t // prefix data with mode indicator (4 bits)\n\t buffer.put(data.mode.bit, 4);\n\n\t // Prefix data with character count indicator.\n\t // The character count indicator is a string of bits that represents the\n\t // number of characters that are being encoded.\n\t // The character count indicator must be placed after the mode indicator\n\t // and must be a certain number of bits long, depending on the QR version\n\t // and data mode\n\t // @see {@link Mode.getCharCountIndicator}.\n\t buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version));\n\n\t // add binary data sequence to buffer\n\t data.write(buffer);\n\t });\n\n\t // Calculate required number of bits\n\t var totalCodewords = Utils.getSymbolTotalCodewords(version);\n\t var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n\t var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8;\n\n\t // Add a terminator.\n\t // If the bit string is shorter than the total number of required bits,\n\t // a terminator of up to four 0s must be added to the right side of the string.\n\t // If the bit string is more than four bits shorter than the required number of bits,\n\t // add four 0s to the end.\n\t if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n\t buffer.put(0, 4);\n\t }\n\n\t // If the bit string is fewer than four bits shorter, add only the number of 0s that\n\t // are needed to reach the required number of bits.\n\n\t // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n\t // pad the string on the right with 0s to make the string's length a multiple of 8.\n\t while (buffer.getLengthInBits() % 8 !== 0) {\n\t buffer.putBit(0);\n\t }\n\n\t // Add pad bytes if the string is still shorter than the total number of required bits.\n\t // Extend the buffer to fill the data capacity of the symbol corresponding to\n\t // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n\t // and 00010001 (0x11) alternately.\n\t var remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8;\n\t for (var i = 0; i < remainingByte; i++) {\n\t buffer.put(i % 2 ? 0x11 : 0xEC, 8);\n\t }\n\n\t return createCodewords(buffer, version, errorCorrectionLevel)\n\t}\n\n\t/**\n\t * Encode input data with Reed-Solomon and return codewords with\n\t * relative error correction bits\n\t *\n\t * @param {BitBuffer} bitBuffer Data to encode\n\t * @param {Number} version QR Code version\n\t * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n\t * @return {Buffer} Buffer containing encoded codewords\n\t */\n\tfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n\t // Total codewords for this QR code version (Data + Error correction)\n\t var totalCodewords = Utils.getSymbolTotalCodewords(version);\n\n\t // Total number of error correction codewords\n\t var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n\n\t // Total number of data codewords\n\t var dataTotalCodewords = totalCodewords - ecTotalCodewords;\n\n\t // Total number of blocks\n\t var ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel);\n\n\t // Calculate how many blocks each group should contain\n\t var blocksInGroup2 = totalCodewords % ecTotalBlocks;\n\t var blocksInGroup1 = ecTotalBlocks - blocksInGroup2;\n\n\t var totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks);\n\n\t var dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks);\n\t var dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1;\n\n\t // Number of EC codewords is the same for both groups\n\t var ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1;\n\n\t // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n\t var rs = new ReedSolomonEncoder(ecCount);\n\n\t var offset = 0;\n\t var dcData = new Array(ecTotalBlocks);\n\t var ecData = new Array(ecTotalBlocks);\n\t var maxDataSize = 0;\n\t var buffer = BufferUtil.from(bitBuffer.buffer);\n\n\t // Divide the buffer into the required number of blocks\n\t for (var b = 0; b < ecTotalBlocks; b++) {\n\t var dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2;\n\n\t // extract a block of data from buffer\n\t dcData[b] = buffer.slice(offset, offset + dataSize);\n\n\t // Calculate EC codewords for this data block\n\t ecData[b] = rs.encode(dcData[b]);\n\n\t offset += dataSize;\n\t maxDataSize = Math.max(maxDataSize, dataSize);\n\t }\n\n\t // Create final data\n\t // Interleave the data and error correction codewords from each block\n\t var data = BufferUtil.alloc(totalCodewords);\n\t var index = 0;\n\t var i, r;\n\n\t // Add data codewords\n\t for (i = 0; i < maxDataSize; i++) {\n\t for (r = 0; r < ecTotalBlocks; r++) {\n\t if (i < dcData[r].length) {\n\t data[index++] = dcData[r][i];\n\t }\n\t }\n\t }\n\n\t // Apped EC codewords\n\t for (i = 0; i < ecCount; i++) {\n\t for (r = 0; r < ecTotalBlocks; r++) {\n\t data[index++] = ecData[r][i];\n\t }\n\t }\n\n\t return data\n\t}\n\n\t/**\n\t * Build QR Code symbol\n\t *\n\t * @param {String} data Input string\n\t * @param {Number} version QR Code version\n\t * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n\t * @param {MaskPattern} maskPattern Mask pattern\n\t * @return {Object} Object containing symbol data\n\t */\n\tfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n\t var segments;\n\n\t if (isArray(data)) {\n\t segments = Segments.fromArray(data);\n\t } else if (typeof data === 'string') {\n\t var estimatedVersion = version;\n\n\t if (!estimatedVersion) {\n\t var rawSegments = Segments.rawSplit(data);\n\n\t // Estimate best version that can contain raw splitted segments\n\t estimatedVersion = Version.getBestVersionForData(rawSegments,\n\t errorCorrectionLevel);\n\t }\n\n\t // Build optimized segments\n\t // If estimated version is undefined, try with the highest version\n\t segments = Segments.fromString(data, estimatedVersion || 40);\n\t } else {\n\t throw new Error('Invalid data')\n\t }\n\n\t // Get the min version that can contain data\n\t var bestVersion = Version.getBestVersionForData(segments,\n\t errorCorrectionLevel);\n\n\t // If no version is found, data cannot be stored\n\t if (!bestVersion) {\n\t throw new Error('The amount of data is too big to be stored in a QR Code')\n\t }\n\n\t // If not specified, use min version as default\n\t if (!version) {\n\t version = bestVersion;\n\n\t // Check if the specified version can contain the data\n\t } else if (version < bestVersion) {\n\t throw new Error('\\n' +\n\t 'The chosen QR Code version cannot contain this amount of data.\\n' +\n\t 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n\t )\n\t }\n\n\t var dataBits = createData(version, errorCorrectionLevel, segments);\n\n\t // Allocate matrix buffer\n\t var moduleCount = Utils.getSymbolSize(version);\n\t var modules = new BitMatrix(moduleCount);\n\n\t // Add function modules\n\t setupFinderPattern(modules, version);\n\t setupTimingPattern(modules);\n\t setupAlignmentPattern(modules, version);\n\n\t // Add temporary dummy bits for format info just to set them as reserved.\n\t // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n\t // since the masking operation must be performed only on the encoding region.\n\t // These blocks will be replaced with correct values later in code.\n\t setupFormatInfo(modules, errorCorrectionLevel, 0);\n\n\t if (version >= 7) {\n\t setupVersionInfo(modules, version);\n\t }\n\n\t // Add data codewords\n\t setupData(modules, dataBits);\n\n\t if (isNaN(maskPattern)) {\n\t // Find best mask pattern\n\t maskPattern = MaskPattern.getBestMask(modules,\n\t setupFormatInfo.bind(null, modules, errorCorrectionLevel));\n\t }\n\n\t // Apply mask pattern\n\t MaskPattern.applyMask(maskPattern, modules);\n\n\t // Replace format info bits with correct values\n\t setupFormatInfo(modules, errorCorrectionLevel, maskPattern);\n\n\t return {\n\t modules: modules,\n\t version: version,\n\t errorCorrectionLevel: errorCorrectionLevel,\n\t maskPattern: maskPattern,\n\t segments: segments\n\t }\n\t}\n\n\t/**\n\t * QR Code\n\t *\n\t * @param {String | Array} data Input data\n\t * @param {Object} options Optional configurations\n\t * @param {Number} options.version QR Code version\n\t * @param {String} options.errorCorrectionLevel Error correction level\n\t * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n\t */\n\texports.create = function create (data, options) {\n\t if (typeof data === 'undefined' || data === '') {\n\t throw new Error('No input text')\n\t }\n\n\t var errorCorrectionLevel = ECLevel.M;\n\t var version;\n\t var mask;\n\n\t if (typeof options !== 'undefined') {\n\t // Use higher error correction level as default\n\t errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M);\n\t version = Version.from(options.version);\n\t mask = MaskPattern.from(options.maskPattern);\n\n\t if (options.toSJISFunc) {\n\t Utils.setToSJISFunction(options.toSJISFunc);\n\t }\n\t }\n\n\t return createSymbol(data, version, errorCorrectionLevel, mask)\n\t};\n\n\t},{\"../utils/buffer\":28,\"./alignment-pattern\":2,\"./bit-buffer\":4,\"./bit-matrix\":5,\"./error-correction-code\":7,\"./error-correction-level\":8,\"./finder-pattern\":9,\"./format-info\":10,\"./mask-pattern\":13,\"./mode\":14,\"./reed-solomon-encoder\":18,\"./segments\":20,\"./utils\":21,\"./version\":23,\"isarray\":33}],18:[function(require,module,exports){\n\tvar BufferUtil = require('../utils/buffer');\n\tvar Polynomial = require('./polynomial');\n\tvar Buffer = require('buffer').Buffer;\n\n\tfunction ReedSolomonEncoder (degree) {\n\t this.genPoly = undefined;\n\t this.degree = degree;\n\n\t if (this.degree) this.initialize(this.degree);\n\t}\n\n\t/**\n\t * Initialize the encoder.\n\t * The input param should correspond to the number of error correction codewords.\n\t *\n\t * @param {Number} degree\n\t */\n\tReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n\t // create an irreducible generator polynomial\n\t this.degree = degree;\n\t this.genPoly = Polynomial.generateECPolynomial(this.degree);\n\t};\n\n\t/**\n\t * Encodes a chunk of data\n\t *\n\t * @param {Buffer} data Buffer containing input data\n\t * @return {Buffer} Buffer containing encoded data\n\t */\n\tReedSolomonEncoder.prototype.encode = function encode (data) {\n\t if (!this.genPoly) {\n\t throw new Error('Encoder not initialized')\n\t }\n\n\t // Calculate EC for this data block\n\t // extends data size to data+genPoly size\n\t var pad = BufferUtil.alloc(this.degree);\n\t var paddedData = Buffer.concat([data, pad], data.length + this.degree);\n\n\t // The error correction codewords are the remainder after dividing the data codewords\n\t // by a generator polynomial\n\t var remainder = Polynomial.mod(paddedData, this.genPoly);\n\n\t // return EC data blocks (last n byte, where n is the degree of genPoly)\n\t // If coefficients number in remainder are less than genPoly degree,\n\t // pad with 0s to the left to reach the needed number of coefficients\n\t var start = this.degree - remainder.length;\n\t if (start > 0) {\n\t var buff = BufferUtil.alloc(this.degree);\n\t remainder.copy(buff, start);\n\n\t return buff\n\t }\n\n\t return remainder\n\t};\n\n\tmodule.exports = ReedSolomonEncoder;\n\n\t},{\"../utils/buffer\":28,\"./polynomial\":16,\"buffer\":30}],19:[function(require,module,exports){\n\tvar numeric = '[0-9]+';\n\tvar alphanumeric = '[A-Z $%*+\\\\-./:]+';\n\tvar kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n\t '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n\t '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n\t '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+';\n\tkanji = kanji.replace(/u/g, '\\\\u');\n\n\tvar byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+';\n\n\texports.KANJI = new RegExp(kanji, 'g');\n\texports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g');\n\texports.BYTE = new RegExp(byte, 'g');\n\texports.NUMERIC = new RegExp(numeric, 'g');\n\texports.ALPHANUMERIC = new RegExp(alphanumeric, 'g');\n\n\tvar TEST_KANJI = new RegExp('^' + kanji + '$');\n\tvar TEST_NUMERIC = new RegExp('^' + numeric + '$');\n\tvar TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$');\n\n\texports.testKanji = function testKanji (str) {\n\t return TEST_KANJI.test(str)\n\t};\n\n\texports.testNumeric = function testNumeric (str) {\n\t return TEST_NUMERIC.test(str)\n\t};\n\n\texports.testAlphanumeric = function testAlphanumeric (str) {\n\t return TEST_ALPHANUMERIC.test(str)\n\t};\n\n\t},{}],20:[function(require,module,exports){\n\tvar Mode = require('./mode');\n\tvar NumericData = require('./numeric-data');\n\tvar AlphanumericData = require('./alphanumeric-data');\n\tvar ByteData = require('./byte-data');\n\tvar KanjiData = require('./kanji-data');\n\tvar Regex = require('./regex');\n\tvar Utils = require('./utils');\n\tvar dijkstra = require('dijkstrajs');\n\n\t/**\n\t * Returns UTF8 byte length\n\t *\n\t * @param {String} str Input string\n\t * @return {Number} Number of byte\n\t */\n\tfunction getStringByteLength (str) {\n\t return unescape(encodeURIComponent(str)).length\n\t}\n\n\t/**\n\t * Get a list of segments of the specified mode\n\t * from a string\n\t *\n\t * @param {Mode} mode Segment mode\n\t * @param {String} str String to process\n\t * @return {Array} Array of object with segments data\n\t */\n\tfunction getSegments (regex, mode, str) {\n\t var segments = [];\n\t var result;\n\n\t while ((result = regex.exec(str)) !== null) {\n\t segments.push({\n\t data: result[0],\n\t index: result.index,\n\t mode: mode,\n\t length: result[0].length\n\t });\n\t }\n\n\t return segments\n\t}\n\n\t/**\n\t * Extracts a series of segments with the appropriate\n\t * modes from a string\n\t *\n\t * @param {String} dataStr Input string\n\t * @return {Array} Array of object with segments data\n\t */\n\tfunction getSegmentsFromString (dataStr) {\n\t var numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr);\n\t var alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr);\n\t var byteSegs;\n\t var kanjiSegs;\n\n\t if (Utils.isKanjiModeEnabled()) {\n\t byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr);\n\t kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr);\n\t } else {\n\t byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr);\n\t kanjiSegs = [];\n\t }\n\n\t var segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs);\n\n\t return segs\n\t .sort(function (s1, s2) {\n\t return s1.index - s2.index\n\t })\n\t .map(function (obj) {\n\t return {\n\t data: obj.data,\n\t mode: obj.mode,\n\t length: obj.length\n\t }\n\t })\n\t}\n\n\t/**\n\t * Returns how many bits are needed to encode a string of\n\t * specified length with the specified mode\n\t *\n\t * @param {Number} length String length\n\t * @param {Mode} mode Segment mode\n\t * @return {Number} Bit length\n\t */\n\tfunction getSegmentBitsLength (length, mode) {\n\t switch (mode) {\n\t case Mode.NUMERIC:\n\t return NumericData.getBitsLength(length)\n\t case Mode.ALPHANUMERIC:\n\t return AlphanumericData.getBitsLength(length)\n\t case Mode.KANJI:\n\t return KanjiData.getBitsLength(length)\n\t case Mode.BYTE:\n\t return ByteData.getBitsLength(length)\n\t }\n\t}\n\n\t/**\n\t * Merges adjacent segments which have the same mode\n\t *\n\t * @param {Array} segs Array of object with segments data\n\t * @return {Array} Array of object with segments data\n\t */\n\tfunction mergeSegments (segs) {\n\t return segs.reduce(function (acc, curr) {\n\t var prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null;\n\t if (prevSeg && prevSeg.mode === curr.mode) {\n\t acc[acc.length - 1].data += curr.data;\n\t return acc\n\t }\n\n\t acc.push(curr);\n\t return acc\n\t }, [])\n\t}\n\n\t/**\n\t * Generates a list of all possible nodes combination which\n\t * will be used to build a segments graph.\n\t *\n\t * Nodes are divided by groups. Each group will contain a list of all the modes\n\t * in which is possible to encode the given text.\n\t *\n\t * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n\t * The group for '12345' will contain then 3 objects, one for each\n\t * possible encoding mode.\n\t *\n\t * Each node represents a possible segment.\n\t *\n\t * @param {Array} segs Array of object with segments data\n\t * @return {Array} Array of object with segments data\n\t */\n\tfunction buildNodes (segs) {\n\t var nodes = [];\n\t for (var i = 0; i < segs.length; i++) {\n\t var seg = segs[i];\n\n\t switch (seg.mode) {\n\t case Mode.NUMERIC:\n\t nodes.push([seg,\n\t { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n\t { data: seg.data, mode: Mode.BYTE, length: seg.length }\n\t ]);\n\t break\n\t case Mode.ALPHANUMERIC:\n\t nodes.push([seg,\n\t { data: seg.data, mode: Mode.BYTE, length: seg.length }\n\t ]);\n\t break\n\t case Mode.KANJI:\n\t nodes.push([seg,\n\t { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n\t ]);\n\t break\n\t case Mode.BYTE:\n\t nodes.push([\n\t { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n\t ]);\n\t }\n\t }\n\n\t return nodes\n\t}\n\n\t/**\n\t * Builds a graph from a list of nodes.\n\t * All segments in each node group will be connected with all the segments of\n\t * the next group and so on.\n\t *\n\t * At each connection will be assigned a weight depending on the\n\t * segment's byte length.\n\t *\n\t * @param {Array} nodes Array of object with segments data\n\t * @param {Number} version QR Code version\n\t * @return {Object} Graph of all possible segments\n\t */\n\tfunction buildGraph (nodes, version) {\n\t var table = {};\n\t var graph = {'start': {}};\n\t var prevNodeIds = ['start'];\n\n\t for (var i = 0; i < nodes.length; i++) {\n\t var nodeGroup = nodes[i];\n\t var currentNodeIds = [];\n\n\t for (var j = 0; j < nodeGroup.length; j++) {\n\t var node = nodeGroup[j];\n\t var key = '' + i + j;\n\n\t currentNodeIds.push(key);\n\t table[key] = { node: node, lastCount: 0 };\n\t graph[key] = {};\n\n\t for (var n = 0; n < prevNodeIds.length; n++) {\n\t var prevNodeId = prevNodeIds[n];\n\n\t if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n\t graph[prevNodeId][key] =\n\t getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n\t getSegmentBitsLength(table[prevNodeId].lastCount, node.mode);\n\n\t table[prevNodeId].lastCount += node.length;\n\t } else {\n\t if (table[prevNodeId]) table[prevNodeId].lastCount = node.length;\n\n\t graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n\t 4 + Mode.getCharCountIndicator(node.mode, version); // switch cost\n\t }\n\t }\n\t }\n\n\t prevNodeIds = currentNodeIds;\n\t }\n\n\t for (n = 0; n < prevNodeIds.length; n++) {\n\t graph[prevNodeIds[n]]['end'] = 0;\n\t }\n\n\t return { map: graph, table: table }\n\t}\n\n\t/**\n\t * Builds a segment from a specified data and mode.\n\t * If a mode is not specified, the more suitable will be used.\n\t *\n\t * @param {String} data Input data\n\t * @param {Mode | String} modesHint Data mode\n\t * @return {Segment} Segment\n\t */\n\tfunction buildSingleSegment (data, modesHint) {\n\t var mode;\n\t var bestMode = Mode.getBestModeForData(data);\n\n\t mode = Mode.from(modesHint, bestMode);\n\n\t // Make sure data can be encoded\n\t if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n\t throw new Error('\"' + data + '\"' +\n\t ' cannot be encoded with mode ' + Mode.toString(mode) +\n\t '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n\t }\n\n\t // Use Mode.BYTE if Kanji support is disabled\n\t if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n\t mode = Mode.BYTE;\n\t }\n\n\t switch (mode) {\n\t case Mode.NUMERIC:\n\t return new NumericData(data)\n\n\t case Mode.ALPHANUMERIC:\n\t return new AlphanumericData(data)\n\n\t case Mode.KANJI:\n\t return new KanjiData(data)\n\n\t case Mode.BYTE:\n\t return new ByteData(data)\n\t }\n\t}\n\n\t/**\n\t * Builds a list of segments from an array.\n\t * Array can contain Strings or Objects with segment's info.\n\t *\n\t * For each item which is a string, will be generated a segment with the given\n\t * string and the more appropriate encoding mode.\n\t *\n\t * For each item which is an object, will be generated a segment with the given\n\t * data and mode.\n\t * Objects must contain at least the property \"data\".\n\t * If property \"mode\" is not present, the more suitable mode will be used.\n\t *\n\t * @param {Array} array Array of objects with segments data\n\t * @return {Array} Array of Segments\n\t */\n\texports.fromArray = function fromArray (array) {\n\t return array.reduce(function (acc, seg) {\n\t if (typeof seg === 'string') {\n\t acc.push(buildSingleSegment(seg, null));\n\t } else if (seg.data) {\n\t acc.push(buildSingleSegment(seg.data, seg.mode));\n\t }\n\n\t return acc\n\t }, [])\n\t};\n\n\t/**\n\t * Builds an optimized sequence of segments from a string,\n\t * which will produce the shortest possible bitstream.\n\t *\n\t * @param {String} data Input string\n\t * @param {Number} version QR Code version\n\t * @return {Array} Array of segments\n\t */\n\texports.fromString = function fromString (data, version) {\n\t var segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled());\n\n\t var nodes = buildNodes(segs);\n\t var graph = buildGraph(nodes, version);\n\t var path = dijkstra.find_path(graph.map, 'start', 'end');\n\n\t var optimizedSegs = [];\n\t for (var i = 1; i < path.length - 1; i++) {\n\t optimizedSegs.push(graph.table[path[i]].node);\n\t }\n\n\t return exports.fromArray(mergeSegments(optimizedSegs))\n\t};\n\n\t/**\n\t * Splits a string in various segments with the modes which\n\t * best represent their content.\n\t * The produced segments are far from being optimized.\n\t * The output of this function is only used to estimate a QR Code version\n\t * which may contain the data.\n\t *\n\t * @param {string} data Input string\n\t * @return {Array} Array of segments\n\t */\n\texports.rawSplit = function rawSplit (data) {\n\t return exports.fromArray(\n\t getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\t )\n\t};\n\n\t},{\"./alphanumeric-data\":3,\"./byte-data\":6,\"./kanji-data\":12,\"./mode\":14,\"./numeric-data\":15,\"./regex\":19,\"./utils\":21,\"dijkstrajs\":31}],21:[function(require,module,exports){\n\tvar toSJISFunction;\n\tvar CODEWORDS_COUNT = [\n\t 0, // Not used\n\t 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n\t 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n\t 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n\t 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n\t];\n\n\t/**\n\t * Returns the QR Code size for the specified version\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Number} size of QR code\n\t */\n\texports.getSymbolSize = function getSymbolSize (version) {\n\t if (!version) throw new Error('\"version\" cannot be null or undefined')\n\t if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n\t return version * 4 + 17\n\t};\n\n\t/**\n\t * Returns the total number of codewords used to store data and EC information.\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Number} Data length in bits\n\t */\n\texports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n\t return CODEWORDS_COUNT[version]\n\t};\n\n\t/**\n\t * Encode data with Bose-Chaudhuri-Hocquenghem\n\t *\n\t * @param {Number} data Value to encode\n\t * @return {Number} Encoded value\n\t */\n\texports.getBCHDigit = function (data) {\n\t var digit = 0;\n\n\t while (data !== 0) {\n\t digit++;\n\t data >>>= 1;\n\t }\n\n\t return digit\n\t};\n\n\texports.setToSJISFunction = function setToSJISFunction (f) {\n\t if (typeof f !== 'function') {\n\t throw new Error('\"toSJISFunc\" is not a valid function.')\n\t }\n\n\t toSJISFunction = f;\n\t};\n\n\texports.isKanjiModeEnabled = function () {\n\t return typeof toSJISFunction !== 'undefined'\n\t};\n\n\texports.toSJIS = function toSJIS (kanji) {\n\t return toSJISFunction(kanji)\n\t};\n\n\t},{}],22:[function(require,module,exports){\n\t/**\n\t * Check if QR Code version is valid\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Boolean} true if valid version, false otherwise\n\t */\n\texports.isValid = function isValid (version) {\n\t return !isNaN(version) && version >= 1 && version <= 40\n\t};\n\n\t},{}],23:[function(require,module,exports){\n\tvar Utils = require('./utils');\n\tvar ECCode = require('./error-correction-code');\n\tvar ECLevel = require('./error-correction-level');\n\tvar Mode = require('./mode');\n\tvar VersionCheck = require('./version-check');\n\tvar isArray = require('isarray');\n\n\t// Generator polynomial used to encode version information\n\tvar G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n\tvar G18_BCH = Utils.getBCHDigit(G18);\n\n\tfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n\t for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n\t if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n\t return currentVersion\n\t }\n\t }\n\n\t return undefined\n\t}\n\n\tfunction getReservedBitsCount (mode, version) {\n\t // Character count indicator + mode indicator bits\n\t return Mode.getCharCountIndicator(mode, version) + 4\n\t}\n\n\tfunction getTotalBitsFromDataArray (segments, version) {\n\t var totalBits = 0;\n\n\t segments.forEach(function (data) {\n\t var reservedBits = getReservedBitsCount(data.mode, version);\n\t totalBits += reservedBits + data.getBitsLength();\n\t });\n\n\t return totalBits\n\t}\n\n\tfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n\t for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n\t var length = getTotalBitsFromDataArray(segments, currentVersion);\n\t if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n\t return currentVersion\n\t }\n\t }\n\n\t return undefined\n\t}\n\n\t/**\n\t * Returns version number from a value.\n\t * If value is not a valid version, returns defaultValue\n\t *\n\t * @param {Number|String} value QR Code version\n\t * @param {Number} defaultValue Fallback value\n\t * @return {Number} QR Code version number\n\t */\n\texports.from = function from (value, defaultValue) {\n\t if (VersionCheck.isValid(value)) {\n\t return parseInt(value, 10)\n\t }\n\n\t return defaultValue\n\t};\n\n\t/**\n\t * Returns how much data can be stored with the specified QR code version\n\t * and error correction level\n\t *\n\t * @param {Number} version QR Code version (1-40)\n\t * @param {Number} errorCorrectionLevel Error correction level\n\t * @param {Mode} mode Data mode\n\t * @return {Number} Quantity of storable data\n\t */\n\texports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n\t if (!VersionCheck.isValid(version)) {\n\t throw new Error('Invalid QR Code version')\n\t }\n\n\t // Use Byte mode as default\n\t if (typeof mode === 'undefined') mode = Mode.BYTE;\n\n\t // Total codewords for this QR code version (Data + Error correction)\n\t var totalCodewords = Utils.getSymbolTotalCodewords(version);\n\n\t // Total number of error correction codewords\n\t var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n\n\t // Total number of data codewords\n\t var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8;\n\n\t if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n\t var usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version);\n\n\t // Return max number of storable codewords\n\t switch (mode) {\n\t case Mode.NUMERIC:\n\t return Math.floor((usableBits / 10) * 3)\n\n\t case Mode.ALPHANUMERIC:\n\t return Math.floor((usableBits / 11) * 2)\n\n\t case Mode.KANJI:\n\t return Math.floor(usableBits / 13)\n\n\t case Mode.BYTE:\n\t default:\n\t return Math.floor(usableBits / 8)\n\t }\n\t};\n\n\t/**\n\t * Returns the minimum version needed to contain the amount of data\n\t *\n\t * @param {Segment} data Segment of data\n\t * @param {Number} [errorCorrectionLevel=H] Error correction level\n\t * @param {Mode} mode Data mode\n\t * @return {Number} QR Code version\n\t */\n\texports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n\t var seg;\n\n\t var ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M);\n\n\t if (isArray(data)) {\n\t if (data.length > 1) {\n\t return getBestVersionForMixedData(data, ecl)\n\t }\n\n\t if (data.length === 0) {\n\t return 1\n\t }\n\n\t seg = data[0];\n\t } else {\n\t seg = data;\n\t }\n\n\t return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n\t};\n\n\t/**\n\t * Returns version information with relative error correction bits\n\t *\n\t * The version information is included in QR Code symbols of version 7 or larger.\n\t * It consists of an 18-bit sequence containing 6 data bits,\n\t * with 12 error correction bits calculated using the (18, 6) Golay code.\n\t *\n\t * @param {Number} version QR Code version\n\t * @return {Number} Encoded version info bits\n\t */\n\texports.getEncodedBits = function getEncodedBits (version) {\n\t if (!VersionCheck.isValid(version) || version < 7) {\n\t throw new Error('Invalid QR Code version')\n\t }\n\n\t var d = version << 12;\n\n\t while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n\t d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH));\n\t }\n\n\t return (version << 12) | d\n\t};\n\n\t},{\"./error-correction-code\":7,\"./error-correction-level\":8,\"./mode\":14,\"./utils\":21,\"./version-check\":22,\"isarray\":33}],24:[function(require,module,exports){\n\n\tvar canPromise = require('./can-promise');\n\n\tvar QRCode = require('./core/qrcode');\n\tvar CanvasRenderer = require('./renderer/canvas');\n\tvar SvgRenderer = require('./renderer/svg-tag.js');\n\n\tfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n\t var args = [].slice.call(arguments, 1);\n\t var argsNum = args.length;\n\t var isLastArgCb = typeof args[argsNum - 1] === 'function';\n\n\t if (!isLastArgCb && !canPromise()) {\n\t throw new Error('Callback required as last argument')\n\t }\n\n\t if (isLastArgCb) {\n\t if (argsNum < 2) {\n\t throw new Error('Too few arguments provided')\n\t }\n\n\t if (argsNum === 2) {\n\t cb = text;\n\t text = canvas;\n\t canvas = opts = undefined;\n\t } else if (argsNum === 3) {\n\t if (canvas.getContext && typeof cb === 'undefined') {\n\t cb = opts;\n\t opts = undefined;\n\t } else {\n\t cb = opts;\n\t opts = text;\n\t text = canvas;\n\t canvas = undefined;\n\t }\n\t }\n\t } else {\n\t if (argsNum < 1) {\n\t throw new Error('Too few arguments provided')\n\t }\n\n\t if (argsNum === 1) {\n\t text = canvas;\n\t canvas = opts = undefined;\n\t } else if (argsNum === 2 && !canvas.getContext) {\n\t opts = text;\n\t text = canvas;\n\t canvas = undefined;\n\t }\n\n\t return new Promise(function (resolve, reject) {\n\t try {\n\t var data = QRCode.create(text, opts);\n\t resolve(renderFunc(data, canvas, opts));\n\t } catch (e) {\n\t reject(e);\n\t }\n\t })\n\t }\n\n\t try {\n\t var data = QRCode.create(text, opts);\n\t cb(null, renderFunc(data, canvas, opts));\n\t } catch (e) {\n\t cb(e);\n\t }\n\t}\n\n\texports.create = QRCode.create;\n\texports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render);\n\texports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL);\n\n\t// only svg for now.\n\texports.toString = renderCanvas.bind(null, function (data, _, opts) {\n\t return SvgRenderer.render(data, opts)\n\t});\n\n\t},{\"./can-promise\":1,\"./core/qrcode\":17,\"./renderer/canvas\":25,\"./renderer/svg-tag.js\":26}],25:[function(require,module,exports){\n\tvar Utils = require('./utils');\n\n\tfunction clearCanvas (ctx, canvas, size) {\n\t ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n\t if (!canvas.style) canvas.style = {};\n\t canvas.height = size;\n\t canvas.width = size;\n\t canvas.style.height = size + 'px';\n\t canvas.style.width = size + 'px';\n\t}\n\n\tfunction getCanvasElement () {\n\t try {\n\t return document.createElement('canvas')\n\t } catch (e) {\n\t throw new Error('You need to specify a canvas element')\n\t }\n\t}\n\n\texports.render = function render (qrData, canvas, options) {\n\t var opts = options;\n\t var canvasEl = canvas;\n\n\t if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n\t opts = canvas;\n\t canvas = undefined;\n\t }\n\n\t if (!canvas) {\n\t canvasEl = getCanvasElement();\n\t }\n\n\t opts = Utils.getOptions(opts);\n\t var size = Utils.getImageWidth(qrData.modules.size, opts);\n\n\t var ctx = canvasEl.getContext('2d');\n\t var image = ctx.createImageData(size, size);\n\t Utils.qrToImageData(image.data, qrData, opts);\n\n\t clearCanvas(ctx, canvasEl, size);\n\t ctx.putImageData(image, 0, 0);\n\n\t return canvasEl\n\t};\n\n\texports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n\t var opts = options;\n\n\t if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n\t opts = canvas;\n\t canvas = undefined;\n\t }\n\n\t if (!opts) opts = {};\n\n\t var canvasEl = exports.render(qrData, canvas, opts);\n\n\t var type = opts.type || 'image/png';\n\t var rendererOpts = opts.rendererOpts || {};\n\n\t return canvasEl.toDataURL(type, rendererOpts.quality)\n\t};\n\n\t},{\"./utils\":27}],26:[function(require,module,exports){\n\tvar Utils = require('./utils');\n\n\tfunction getColorAttrib (color, attrib) {\n\t var alpha = color.a / 255;\n\t var str = attrib + '=\"' + color.hex + '\"';\n\n\t return alpha < 1\n\t ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n\t : str\n\t}\n\n\tfunction svgCmd (cmd, x, y) {\n\t var str = cmd + x;\n\t if (typeof y !== 'undefined') str += ' ' + y;\n\n\t return str\n\t}\n\n\tfunction qrToPath (data, size, margin) {\n\t var path = '';\n\t var moveBy = 0;\n\t var newRow = false;\n\t var lineLength = 0;\n\n\t for (var i = 0; i < data.length; i++) {\n\t var col = Math.floor(i % size);\n\t var row = Math.floor(i / size);\n\n\t if (!col && !newRow) newRow = true;\n\n\t if (data[i]) {\n\t lineLength++;\n\n\t if (!(i > 0 && col > 0 && data[i - 1])) {\n\t path += newRow\n\t ? svgCmd('M', col + margin, 0.5 + row + margin)\n\t : svgCmd('m', moveBy, 0);\n\n\t moveBy = 0;\n\t newRow = false;\n\t }\n\n\t if (!(col + 1 < size && data[i + 1])) {\n\t path += svgCmd('h', lineLength);\n\t lineLength = 0;\n\t }\n\t } else {\n\t moveBy++;\n\t }\n\t }\n\n\t return path\n\t}\n\n\texports.render = function render (qrData, options, cb) {\n\t var opts = Utils.getOptions(options);\n\t var size = qrData.modules.size;\n\t var data = qrData.modules.data;\n\t var qrcodesize = size + opts.margin * 2;\n\n\t var bg = !opts.color.light.a\n\t ? ''\n\t : '<path ' + getColorAttrib(opts.color.light, 'fill') +\n\t ' d=\"M0 0h' + qrcodesize + 'v' + qrcodesize + 'H0z\"/>';\n\n\t var path =\n\t '<path ' + getColorAttrib(opts.color.dark, 'stroke') +\n\t ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>';\n\n\t var viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"';\n\n\t var width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" ';\n\n\t var svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + '</svg>\\n';\n\n\t if (typeof cb === 'function') {\n\t cb(null, svgTag);\n\t }\n\n\t return svgTag\n\t};\n\n\t},{\"./utils\":27}],27:[function(require,module,exports){\n\tfunction hex2rgba (hex) {\n\t if (typeof hex === 'number') {\n\t hex = hex.toString();\n\t }\n\n\t if (typeof hex !== 'string') {\n\t throw new Error('Color should be defined as hex string')\n\t }\n\n\t var hexCode = hex.slice().replace('#', '').split('');\n\t if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n\t throw new Error('Invalid hex color: ' + hex)\n\t }\n\n\t // Convert from short to long form (fff -> ffffff)\n\t if (hexCode.length === 3 || hexCode.length === 4) {\n\t hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n\t return [c, c]\n\t }));\n\t }\n\n\t // Add default alpha value\n\t if (hexCode.length === 6) hexCode.push('F', 'F');\n\n\t var hexValue = parseInt(hexCode.join(''), 16);\n\n\t return {\n\t r: (hexValue >> 24) & 255,\n\t g: (hexValue >> 16) & 255,\n\t b: (hexValue >> 8) & 255,\n\t a: hexValue & 255,\n\t hex: '#' + hexCode.slice(0, 6).join('')\n\t }\n\t}\n\n\texports.getOptions = function getOptions (options) {\n\t if (!options) options = {};\n\t if (!options.color) options.color = {};\n\n\t var margin = typeof options.margin === 'undefined' ||\n\t options.margin === null ||\n\t options.margin < 0 ? 4 : options.margin;\n\n\t var width = options.width && options.width >= 21 ? options.width : undefined;\n\t var scale = options.scale || 4;\n\n\t return {\n\t width: width,\n\t scale: width ? 4 : scale,\n\t margin: margin,\n\t color: {\n\t dark: hex2rgba(options.color.dark || '#000000ff'),\n\t light: hex2rgba(options.color.light || '#ffffffff')\n\t },\n\t type: options.type,\n\t rendererOpts: options.rendererOpts || {}\n\t }\n\t};\n\n\texports.getScale = function getScale (qrSize, opts) {\n\t return opts.width && opts.width >= qrSize + opts.margin * 2\n\t ? opts.width / (qrSize + opts.margin * 2)\n\t : opts.scale\n\t};\n\n\texports.getImageWidth = function getImageWidth (qrSize, opts) {\n\t var scale = exports.getScale(qrSize, opts);\n\t return Math.floor((qrSize + opts.margin * 2) * scale)\n\t};\n\n\texports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n\t var size = qr.modules.size;\n\t var data = qr.modules.data;\n\t var scale = exports.getScale(size, opts);\n\t var symbolSize = Math.floor((size + opts.margin * 2) * scale);\n\t var scaledMargin = opts.margin * scale;\n\t var palette = [opts.color.light, opts.color.dark];\n\n\t for (var i = 0; i < symbolSize; i++) {\n\t for (var j = 0; j < symbolSize; j++) {\n\t var posDst = (i * symbolSize + j) * 4;\n\t var pxColor = opts.color.light;\n\n\t if (i >= scaledMargin && j >= scaledMargin &&\n\t i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n\t var iSrc = Math.floor((i - scaledMargin) / scale);\n\t var jSrc = Math.floor((j - scaledMargin) / scale);\n\t pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0];\n\t }\n\n\t imgData[posDst++] = pxColor.r;\n\t imgData[posDst++] = pxColor.g;\n\t imgData[posDst++] = pxColor.b;\n\t imgData[posDst] = pxColor.a;\n\t }\n\t }\n\t};\n\n\t},{}],28:[function(require,module,exports){\n\n\tvar isArray = require('isarray');\n\n\tfunction typedArraySupport () {\n\t // Can typed array instances be augmented?\n\t try {\n\t var arr = new Uint8Array(1);\n\t arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }};\n\t return arr.foo() === 42\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tvar K_MAX_LENGTH = Buffer.TYPED_ARRAY_SUPPORT\n\t ? 0x7fffffff\n\t : 0x3fffffff;\n\n\tfunction Buffer (arg, offset, length) {\n\t if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n\t return new Buffer(arg, offset, length)\n\t }\n\n\t if (typeof arg === 'number') {\n\t return allocUnsafe(this, arg)\n\t }\n\n\t return from(this, arg, offset, length)\n\t}\n\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t Buffer.prototype.__proto__ = Uint8Array.prototype;\n\t Buffer.__proto__ = Uint8Array;\n\n\t // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n\t if (typeof Symbol !== 'undefined' && Symbol.species &&\n\t Buffer[Symbol.species] === Buffer) {\n\t Object.defineProperty(Buffer, Symbol.species, {\n\t value: null,\n\t configurable: true,\n\t enumerable: false,\n\t writable: false\n\t });\n\t }\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= K_MAX_LENGTH) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction isnan (val) {\n\t return val !== val // eslint-disable-line no-self-compare\n\t}\n\n\tfunction createBuffer (that, length) {\n\t var buf;\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t buf = new Uint8Array(length);\n\t buf.__proto__ = Buffer.prototype;\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t buf = that;\n\t if (buf === null) {\n\t buf = new Buffer(length);\n\t }\n\t buf.length = length;\n\t }\n\n\t return buf\n\t}\n\n\tfunction allocUnsafe (that, size) {\n\t var buf = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) {\n\t for (var i = 0; i < size; ++i) {\n\t buf[i] = 0;\n\t }\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromString (that, string) {\n\t var length = byteLength(string) | 0;\n\t var buf = createBuffer(that, length);\n\n\t var actual = buf.write(string);\n\n\t if (actual !== length) {\n\t // Writing a hex string, for example, that contains invalid characters will\n\t // cause everything after the first invalid character to be ignored. (e.g.\n\t // 'abxxcd' will be treated as 'ab')\n\t buf = buf.slice(0, actual);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromArrayLike (that, array) {\n\t var length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t var buf = createBuffer(that, length);\n\t for (var i = 0; i < length; i += 1) {\n\t buf[i] = array[i] & 255;\n\t }\n\t return buf\n\t}\n\n\tfunction fromArrayBuffer (that, array, byteOffset, length) {\n\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t throw new RangeError('\\'offset\\' is out of bounds')\n\t }\n\n\t if (array.byteLength < byteOffset + (length || 0)) {\n\t throw new RangeError('\\'length\\' is out of bounds')\n\t }\n\n\t var buf;\n\t if (byteOffset === undefined && length === undefined) {\n\t buf = new Uint8Array(array);\n\t } else if (length === undefined) {\n\t buf = new Uint8Array(array, byteOffset);\n\t } else {\n\t buf = new Uint8Array(array, byteOffset, length);\n\t }\n\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t buf.__proto__ = Buffer.prototype;\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t buf = fromArrayLike(that, buf);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromObject (that, obj) {\n\t if (Buffer.isBuffer(obj)) {\n\t var len = checked(obj.length) | 0;\n\t var buf = createBuffer(that, len);\n\n\t if (buf.length === 0) {\n\t return buf\n\t }\n\n\t obj.copy(buf, 0, 0, len);\n\t return buf\n\t }\n\n\t if (obj) {\n\t if ((typeof ArrayBuffer !== 'undefined' &&\n\t obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n\t if (typeof obj.length !== 'number' || isnan(obj.length)) {\n\t return createBuffer(that, 0)\n\t }\n\t return fromArrayLike(that, obj)\n\t }\n\n\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t return fromArrayLike(that, obj.data)\n\t }\n\t }\n\n\t throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity;\n\t var codePoint;\n\t var length = string.length;\n\t var leadSurrogate = null;\n\t var bytes = [];\n\n\t for (var i = 0; i < length; ++i) {\n\t codePoint = string.charCodeAt(i);\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t }\n\n\t // valid lead\n\t leadSurrogate = codePoint;\n\n\t continue\n\t }\n\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t leadSurrogate = codePoint;\n\t continue\n\t }\n\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t }\n\n\t leadSurrogate = null;\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint);\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction byteLength (string) {\n\t if (Buffer.isBuffer(string)) {\n\t return string.length\n\t }\n\t if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n\t (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n\t return string.byteLength\n\t }\n\t if (typeof string !== 'string') {\n\t string = '' + string;\n\t }\n\n\t var len = string.length;\n\t if (len === 0) return 0\n\n\t return utf8ToBytes(string).length\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t for (var i = 0; i < length; ++i) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i];\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction from (that, value, offset, length) {\n\t if (typeof value === 'number') {\n\t throw new TypeError('\"value\" argument must not be a number')\n\t }\n\n\t if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n\t return fromArrayBuffer(that, value, offset, length)\n\t }\n\n\t if (typeof value === 'string') {\n\t return fromString(that, value)\n\t }\n\n\t return fromObject(that, value)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, offset[, length])\n\t } else if (isFinite(offset)) {\n\t offset = offset | 0;\n\t if (isFinite(length)) {\n\t length = length | 0;\n\t } else {\n\t length = undefined;\n\t }\n\t }\n\n\t var remaining = this.length - offset;\n\t if (length === undefined || length > remaining) length = remaining;\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('Attempt to write outside buffer bounds')\n\t }\n\n\t return utf8Write(this, string, offset, length)\n\t};\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t var len = this.length;\n\t start = ~~start;\n\t end = end === undefined ? len : ~~end;\n\n\t if (start < 0) {\n\t start += len;\n\t if (start < 0) start = 0;\n\t } else if (start > len) {\n\t start = len;\n\t }\n\n\t if (end < 0) {\n\t end += len;\n\t if (end < 0) end = 0;\n\t } else if (end > len) {\n\t end = len;\n\t }\n\n\t if (end < start) end = start;\n\n\t var newBuf;\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t newBuf = this.subarray(start, end);\n\t // Return an augmented `Uint8Array` instance\n\t newBuf.__proto__ = Buffer.prototype;\n\t } else {\n\t var sliceLen = end - start;\n\t newBuf = new Buffer(sliceLen, undefined);\n\t for (var i = 0; i < sliceLen; ++i) {\n\t newBuf[i] = this[i + start];\n\t }\n\t }\n\n\t return newBuf\n\t};\n\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!start) start = 0;\n\t if (!end && end !== 0) end = this.length;\n\t if (targetStart >= target.length) targetStart = target.length;\n\t if (!targetStart) targetStart = 0;\n\t if (end > 0 && end < start) end = start;\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length;\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start;\n\t }\n\n\t var len = end - start;\n\t var i;\n\n\t if (this === target && start < targetStart && targetStart < end) {\n\t // descending copy from end\n\t for (i = len - 1; i >= 0; --i) {\n\t target[i + targetStart] = this[i + start];\n\t }\n\t } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n\t // ascending copy from start\n\t for (i = 0; i < len; ++i) {\n\t target[i + targetStart] = this[i + start];\n\t }\n\t } else {\n\t Uint8Array.prototype.set.call(\n\t target,\n\t this.subarray(start, start + len),\n\t targetStart\n\t );\n\t }\n\n\t return len\n\t};\n\n\tBuffer.prototype.fill = function fill (val, start, end) {\n\t // Handle string cases:\n\t if (typeof val === 'string') {\n\t if (typeof start === 'string') {\n\t start = 0;\n\t end = this.length;\n\t } else if (typeof end === 'string') {\n\t end = this.length;\n\t }\n\t if (val.length === 1) {\n\t var code = val.charCodeAt(0);\n\t if (code < 256) {\n\t val = code;\n\t }\n\t }\n\t } else if (typeof val === 'number') {\n\t val = val & 255;\n\t }\n\n\t // Invalid ranges are not set to a default, so can range check early.\n\t if (start < 0 || this.length < start || this.length < end) {\n\t throw new RangeError('Out of range index')\n\t }\n\n\t if (end <= start) {\n\t return this\n\t }\n\n\t start = start >>> 0;\n\t end = end === undefined ? this.length : end >>> 0;\n\n\t if (!val) val = 0;\n\n\t var i;\n\t if (typeof val === 'number') {\n\t for (i = start; i < end; ++i) {\n\t this[i] = val;\n\t }\n\t } else {\n\t var bytes = Buffer.isBuffer(val)\n\t ? val\n\t : new Buffer(val);\n\t var len = bytes.length;\n\t for (i = 0; i < end - start; ++i) {\n\t this[i + start] = bytes[i % len];\n\t }\n\t }\n\n\t return this\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!isArray(list)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\n\t if (list.length === 0) {\n\t return createBuffer(null, 0)\n\t }\n\n\t var i;\n\t if (length === undefined) {\n\t length = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t length += list[i].length;\n\t }\n\t }\n\n\t var buffer = allocUnsafe(null, length);\n\t var pos = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t var buf = list[i];\n\t if (!Buffer.isBuffer(buf)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\t buf.copy(buffer, pos);\n\t pos += buf.length;\n\t }\n\t return buffer\n\t};\n\n\tBuffer.byteLength = byteLength;\n\n\tBuffer.prototype._isBuffer = true;\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return !!(b != null && b._isBuffer)\n\t};\n\n\tmodule.exports.alloc = function (size) {\n\t var buffer = new Buffer(size);\n\t buffer.fill(0);\n\t return buffer\n\t};\n\n\tmodule.exports.from = function (data) {\n\t return new Buffer(data)\n\t};\n\n\t},{\"isarray\":33}],29:[function(require,module,exports){\n\n\texports.byteLength = byteLength;\n\texports.toByteArray = toByteArray;\n\texports.fromByteArray = fromByteArray;\n\n\tvar lookup = [];\n\tvar revLookup = [];\n\tvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\n\tvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\tfor (var i = 0, len = code.length; i < len; ++i) {\n\t lookup[i] = code[i];\n\t revLookup[code.charCodeAt(i)] = i;\n\t}\n\n\t// Support decoding URL-safe base64 strings, as Node.js does.\n\t// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\trevLookup['-'.charCodeAt(0)] = 62;\n\trevLookup['_'.charCodeAt(0)] = 63;\n\n\tfunction getLens (b64) {\n\t var len = b64.length;\n\n\t if (len % 4 > 0) {\n\t throw new Error('Invalid string. Length must be a multiple of 4')\n\t }\n\n\t // Trim off extra bytes after placeholder bytes are found\n\t // See: https://github.com/beatgammit/base64-js/issues/42\n\t var validLen = b64.indexOf('=');\n\t if (validLen === -1) validLen = len;\n\n\t var placeHoldersLen = validLen === len\n\t ? 0\n\t : 4 - (validLen % 4);\n\n\t return [validLen, placeHoldersLen]\n\t}\n\n\t// base64 is 4/3 + up to two characters of the original data\n\tfunction byteLength (b64) {\n\t var lens = getLens(b64);\n\t var validLen = lens[0];\n\t var placeHoldersLen = lens[1];\n\t return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n\t}\n\n\tfunction _byteLength (b64, validLen, placeHoldersLen) {\n\t return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n\t}\n\n\tfunction toByteArray (b64) {\n\t var tmp;\n\t var lens = getLens(b64);\n\t var validLen = lens[0];\n\t var placeHoldersLen = lens[1];\n\n\t var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n\t var curByte = 0;\n\n\t // if there are placeholders, only get up to the last complete 4 chars\n\t var len = placeHoldersLen > 0\n\t ? validLen - 4\n\t : validLen;\n\n\t var i;\n\t for (i = 0; i < len; i += 4) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 18) |\n\t (revLookup[b64.charCodeAt(i + 1)] << 12) |\n\t (revLookup[b64.charCodeAt(i + 2)] << 6) |\n\t revLookup[b64.charCodeAt(i + 3)];\n\t arr[curByte++] = (tmp >> 16) & 0xFF;\n\t arr[curByte++] = (tmp >> 8) & 0xFF;\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t if (placeHoldersLen === 2) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 2) |\n\t (revLookup[b64.charCodeAt(i + 1)] >> 4);\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t if (placeHoldersLen === 1) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 10) |\n\t (revLookup[b64.charCodeAt(i + 1)] << 4) |\n\t (revLookup[b64.charCodeAt(i + 2)] >> 2);\n\t arr[curByte++] = (tmp >> 8) & 0xFF;\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t return arr\n\t}\n\n\tfunction tripletToBase64 (num) {\n\t return lookup[num >> 18 & 0x3F] +\n\t lookup[num >> 12 & 0x3F] +\n\t lookup[num >> 6 & 0x3F] +\n\t lookup[num & 0x3F]\n\t}\n\n\tfunction encodeChunk (uint8, start, end) {\n\t var tmp;\n\t var output = [];\n\t for (var i = start; i < end; i += 3) {\n\t tmp =\n\t ((uint8[i] << 16) & 0xFF0000) +\n\t ((uint8[i + 1] << 8) & 0xFF00) +\n\t (uint8[i + 2] & 0xFF);\n\t output.push(tripletToBase64(tmp));\n\t }\n\t return output.join('')\n\t}\n\n\tfunction fromByteArray (uint8) {\n\t var tmp;\n\t var len = uint8.length;\n\t var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\t var parts = [];\n\t var maxChunkLength = 16383; // must be multiple of 3\n\n\t // go through the array every three bytes, we'll deal with trailing stuff later\n\t for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n\t parts.push(encodeChunk(\n\t uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n\t ));\n\t }\n\n\t // pad the end with zeros, but make sure to not forget the extra bytes\n\t if (extraBytes === 1) {\n\t tmp = uint8[len - 1];\n\t parts.push(\n\t lookup[tmp >> 2] +\n\t lookup[(tmp << 4) & 0x3F] +\n\t '=='\n\t );\n\t } else if (extraBytes === 2) {\n\t tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n\t parts.push(\n\t lookup[tmp >> 10] +\n\t lookup[(tmp >> 4) & 0x3F] +\n\t lookup[(tmp << 2) & 0x3F] +\n\t '='\n\t );\n\t }\n\n\t return parts.join('')\n\t}\n\n\t},{}],30:[function(require,module,exports){\n\n\tvar base64 = require('base64-js');\n\tvar ieee754 = require('ieee754');\n\tvar customInspectSymbol =\n\t (typeof Symbol === 'function' && typeof Symbol.for === 'function')\n\t ? Symbol.for('nodejs.util.inspect.custom')\n\t : null;\n\n\texports.Buffer = Buffer;\n\texports.SlowBuffer = SlowBuffer;\n\texports.INSPECT_MAX_BYTES = 50;\n\n\tvar K_MAX_LENGTH = 0x7fffffff;\n\texports.kMaxLength = K_MAX_LENGTH;\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Print warning and recommend using `buffer` v4.x which has an Object\n\t * implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * We report that the browser does not support typed arrays if the are not subclassable\n\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t * for __proto__ and has a buggy typed array implementation.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t typeof console.error === 'function') {\n\t console.error(\n\t 'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t );\n\t}\n\n\tfunction typedArraySupport () {\n\t // Can typed array instances can be augmented?\n\t try {\n\t var arr = new Uint8Array(1);\n\t var proto = { foo: function () { return 42 } };\n\t Object.setPrototypeOf(proto, Uint8Array.prototype);\n\t Object.setPrototypeOf(arr, proto);\n\t return arr.foo() === 42\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\n\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.buffer\n\t }\n\t});\n\n\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.byteOffset\n\t }\n\t});\n\n\tfunction createBuffer (length) {\n\t if (length > K_MAX_LENGTH) {\n\t throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t }\n\t // Return an augmented `Uint8Array` instance\n\t var buf = new Uint8Array(length);\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\t return buf\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t if (typeof encodingOrOffset === 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be of type string. Received type number'\n\t )\n\t }\n\t return allocUnsafe(arg)\n\t }\n\t return from(arg, encodingOrOffset, length)\n\t}\n\n\t// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n\tif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n\t Buffer[Symbol.species] === Buffer) {\n\t Object.defineProperty(Buffer, Symbol.species, {\n\t value: null,\n\t configurable: true,\n\t enumerable: false,\n\t writable: false\n\t });\n\t}\n\n\tBuffer.poolSize = 8192; // not used by this implementation\n\n\tfunction from (value, encodingOrOffset, length) {\n\t if (typeof value === 'string') {\n\t return fromString(value, encodingOrOffset)\n\t }\n\n\t if (ArrayBuffer.isView(value)) {\n\t return fromArrayLike(value)\n\t }\n\n\t if (value == null) {\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t }\n\n\t if (isInstance(value, ArrayBuffer) ||\n\t (value && isInstance(value.buffer, ArrayBuffer))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof value === 'number') {\n\t throw new TypeError(\n\t 'The \"value\" argument must not be of type number. Received type number'\n\t )\n\t }\n\n\t var valueOf = value.valueOf && value.valueOf();\n\t if (valueOf != null && valueOf !== value) {\n\t return Buffer.from(valueOf, encodingOrOffset, length)\n\t }\n\n\t var b = fromObject(value);\n\t if (b) return b\n\n\t if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t typeof value[Symbol.toPrimitive] === 'function') {\n\t return Buffer.from(\n\t value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n\t )\n\t }\n\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t return from(value, encodingOrOffset, length)\n\t};\n\n\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t// https://github.com/feross/buffer/pull/148\n\tObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n\tObject.setPrototypeOf(Buffer, Uint8Array);\n\n\tfunction assertSize (size) {\n\t if (typeof size !== 'number') {\n\t throw new TypeError('\"size\" argument must be of type number')\n\t } else if (size < 0) {\n\t throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t }\n\t}\n\n\tfunction alloc (size, fill, encoding) {\n\t assertSize(size);\n\t if (size <= 0) {\n\t return createBuffer(size)\n\t }\n\t if (fill !== undefined) {\n\t // Only pay attention to encoding if it's a string. This\n\t // prevents accidentally sending in a number that would\n\t // be interpretted as a start offset.\n\t return typeof encoding === 'string'\n\t ? createBuffer(size).fill(fill, encoding)\n\t : createBuffer(size).fill(fill)\n\t }\n\t return createBuffer(size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t return alloc(size, fill, encoding)\n\t};\n\n\tfunction allocUnsafe (size) {\n\t assertSize(size);\n\t return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t return allocUnsafe(size)\n\t};\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t return allocUnsafe(size)\n\t};\n\n\tfunction fromString (string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') {\n\t encoding = 'utf8';\n\t }\n\n\t if (!Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\n\t var length = byteLength(string, encoding) | 0;\n\t var buf = createBuffer(length);\n\n\t var actual = buf.write(string, encoding);\n\n\t if (actual !== length) {\n\t // Writing a hex string, for example, that contains invalid characters will\n\t // cause everything after the first invalid character to be ignored. (e.g.\n\t // 'abxxcd' will be treated as 'ab')\n\t buf = buf.slice(0, actual);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromArrayLike (array) {\n\t var length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t var buf = createBuffer(length);\n\t for (var i = 0; i < length; i += 1) {\n\t buf[i] = array[i] & 255;\n\t }\n\t return buf\n\t}\n\n\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t throw new RangeError('\"offset\" is outside of buffer bounds')\n\t }\n\n\t if (array.byteLength < byteOffset + (length || 0)) {\n\t throw new RangeError('\"length\" is outside of buffer bounds')\n\t }\n\n\t var buf;\n\t if (byteOffset === undefined && length === undefined) {\n\t buf = new Uint8Array(array);\n\t } else if (length === undefined) {\n\t buf = new Uint8Array(array, byteOffset);\n\t } else {\n\t buf = new Uint8Array(array, byteOffset, length);\n\t }\n\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t return buf\n\t}\n\n\tfunction fromObject (obj) {\n\t if (Buffer.isBuffer(obj)) {\n\t var len = checked(obj.length) | 0;\n\t var buf = createBuffer(len);\n\n\t if (buf.length === 0) {\n\t return buf\n\t }\n\n\t obj.copy(buf, 0, 0, len);\n\t return buf\n\t }\n\n\t if (obj.length !== undefined) {\n\t if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t return createBuffer(0)\n\t }\n\t return fromArrayLike(obj)\n\t }\n\n\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t return fromArrayLike(obj.data)\n\t }\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= K_MAX_LENGTH) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t if (+length != length) { // eslint-disable-line eqeqeq\n\t length = 0;\n\t }\n\t return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return b != null && b._isBuffer === true &&\n\t b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t};\n\n\tBuffer.compare = function compare (a, b) {\n\t if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError(\n\t 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t )\n\t }\n\n\t if (a === b) return 0\n\n\t var x = a.length;\n\t var y = b.length;\n\n\t for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n\t if (a[i] !== b[i]) {\n\t x = a[i];\n\t y = b[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t case 'base64':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!Array.isArray(list)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\n\t if (list.length === 0) {\n\t return Buffer.alloc(0)\n\t }\n\n\t var i;\n\t if (length === undefined) {\n\t length = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t length += list[i].length;\n\t }\n\t }\n\n\t var buffer = Buffer.allocUnsafe(length);\n\t var pos = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t var buf = list[i];\n\t if (isInstance(buf, Uint8Array)) {\n\t buf = Buffer.from(buf);\n\t }\n\t if (!Buffer.isBuffer(buf)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\t buf.copy(buffer, pos);\n\t pos += buf.length;\n\t }\n\t return buffer\n\t};\n\n\tfunction byteLength (string, encoding) {\n\t if (Buffer.isBuffer(string)) {\n\t return string.length\n\t }\n\t if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n\t return string.byteLength\n\t }\n\t if (typeof string !== 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t 'Received type ' + typeof string\n\t )\n\t }\n\n\t var len = string.length;\n\t var mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t if (!mustMatch && len === 0) return 0\n\n\t // Use a for loop to avoid recursion\n\t var loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) {\n\t return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t }\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength;\n\n\tfunction slowToString (encoding, start, end) {\n\t var loweredCase = false;\n\n\t // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t // property of a typed array.\n\n\t // This behaves neither like String nor Uint8Array in that we set start/end\n\t // to their upper/lower bounds if the value passed is out of range.\n\t // undefined is handled specially as per ECMA-262 6th Edition,\n\t // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t if (start === undefined || start < 0) {\n\t start = 0;\n\t }\n\t // Return early if start > this.length. Done here to prevent potential uint32\n\t // coercion fail below.\n\t if (start > this.length) {\n\t return ''\n\t }\n\n\t if (end === undefined || end > this.length) {\n\t end = this.length;\n\t }\n\n\t if (end <= 0) {\n\t return ''\n\t }\n\n\t // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\t end >>>= 0;\n\t start >>>= 0;\n\n\t if (end <= start) {\n\t return ''\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Slice(this, start, end)\n\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\n\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t// reliably in a browserify context because there could be multiple different\n\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t// instances that were created from another copy of the `buffer` package.\n\t// See: https://github.com/feross/buffer/issues/154\n\tBuffer.prototype._isBuffer = true;\n\n\tfunction swap (b, n, m) {\n\t var i = b[n];\n\t b[n] = b[m];\n\t b[m] = i;\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t var len = this.length;\n\t if (len % 2 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t }\n\t for (var i = 0; i < len; i += 2) {\n\t swap(this, i, i + 1);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t var len = this.length;\n\t if (len % 4 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t }\n\t for (var i = 0; i < len; i += 4) {\n\t swap(this, i, i + 3);\n\t swap(this, i + 1, i + 2);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap64 = function swap64 () {\n\t var len = this.length;\n\t if (len % 8 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t }\n\t for (var i = 0; i < len; i += 8) {\n\t swap(this, i, i + 7);\n\t swap(this, i + 1, i + 6);\n\t swap(this, i + 2, i + 5);\n\t swap(this, i + 3, i + 4);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.toString = function toString () {\n\t var length = this.length;\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t};\n\n\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t};\n\n\tBuffer.prototype.inspect = function inspect () {\n\t var str = '';\n\t var max = exports.INSPECT_MAX_BYTES;\n\t str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t if (this.length > max) str += ' ... ';\n\t return '<Buffer ' + str + '>'\n\t};\n\tif (customInspectSymbol) {\n\t Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t if (isInstance(target, Uint8Array)) {\n\t target = Buffer.from(target, target.offset, target.byteLength);\n\t }\n\t if (!Buffer.isBuffer(target)) {\n\t throw new TypeError(\n\t 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t 'Received type ' + (typeof target)\n\t )\n\t }\n\n\t if (start === undefined) {\n\t start = 0;\n\t }\n\t if (end === undefined) {\n\t end = target ? target.length : 0;\n\t }\n\t if (thisStart === undefined) {\n\t thisStart = 0;\n\t }\n\t if (thisEnd === undefined) {\n\t thisEnd = this.length;\n\t }\n\n\t if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t throw new RangeError('out of range index')\n\t }\n\n\t if (thisStart >= thisEnd && start >= end) {\n\t return 0\n\t }\n\t if (thisStart >= thisEnd) {\n\t return -1\n\t }\n\t if (start >= end) {\n\t return 1\n\t }\n\n\t start >>>= 0;\n\t end >>>= 0;\n\t thisStart >>>= 0;\n\t thisEnd >>>= 0;\n\n\t if (this === target) return 0\n\n\t var x = thisEnd - thisStart;\n\t var y = end - start;\n\t var len = Math.min(x, y);\n\n\t var thisCopy = this.slice(thisStart, thisEnd);\n\t var targetCopy = target.slice(start, end);\n\n\t for (var i = 0; i < len; ++i) {\n\t if (thisCopy[i] !== targetCopy[i]) {\n\t x = thisCopy[i];\n\t y = targetCopy[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t // Empty buffer means no match\n\t if (buffer.length === 0) return -1\n\n\t // Normalize byteOffset\n\t if (typeof byteOffset === 'string') {\n\t encoding = byteOffset;\n\t byteOffset = 0;\n\t } else if (byteOffset > 0x7fffffff) {\n\t byteOffset = 0x7fffffff;\n\t } else if (byteOffset < -0x80000000) {\n\t byteOffset = -0x80000000;\n\t }\n\t byteOffset = +byteOffset; // Coerce to Number.\n\t if (numberIsNaN(byteOffset)) {\n\t // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t byteOffset = dir ? 0 : (buffer.length - 1);\n\t }\n\n\t // Normalize byteOffset: negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t if (byteOffset >= buffer.length) {\n\t if (dir) return -1\n\t else byteOffset = buffer.length - 1;\n\t } else if (byteOffset < 0) {\n\t if (dir) byteOffset = 0;\n\t else return -1\n\t }\n\n\t // Normalize val\n\t if (typeof val === 'string') {\n\t val = Buffer.from(val, encoding);\n\t }\n\n\t // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t if (Buffer.isBuffer(val)) {\n\t // Special case: looking for empty string/buffer always fails\n\t if (val.length === 0) {\n\t return -1\n\t }\n\t return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t } else if (typeof val === 'number') {\n\t val = val & 0xFF; // Search for a byte value [0-255]\n\t if (typeof Uint8Array.prototype.indexOf === 'function') {\n\t if (dir) {\n\t return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t } else {\n\t return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t }\n\t }\n\t return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t }\n\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t var indexSize = 1;\n\t var arrLength = arr.length;\n\t var valLength = val.length;\n\n\t if (encoding !== undefined) {\n\t encoding = String(encoding).toLowerCase();\n\t if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t encoding === 'utf16le' || encoding === 'utf-16le') {\n\t if (arr.length < 2 || val.length < 2) {\n\t return -1\n\t }\n\t indexSize = 2;\n\t arrLength /= 2;\n\t valLength /= 2;\n\t byteOffset /= 2;\n\t }\n\t }\n\n\t function read (buf, i) {\n\t if (indexSize === 1) {\n\t return buf[i]\n\t } else {\n\t return buf.readUInt16BE(i * indexSize)\n\t }\n\t }\n\n\t var i;\n\t if (dir) {\n\t var foundIndex = -1;\n\t for (i = byteOffset; i < arrLength; i++) {\n\t if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t if (foundIndex === -1) foundIndex = i;\n\t if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t } else {\n\t if (foundIndex !== -1) i -= i - foundIndex;\n\t foundIndex = -1;\n\t }\n\t }\n\t } else {\n\t if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t for (i = byteOffset; i >= 0; i--) {\n\t var found = true;\n\t for (var j = 0; j < valLength; j++) {\n\t if (read(arr, i + j) !== read(val, j)) {\n\t found = false;\n\t break\n\t }\n\t }\n\t if (found) return i\n\t }\n\t }\n\n\t return -1\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t return this.indexOf(val, byteOffset, encoding) !== -1\n\t};\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t};\n\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t};\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0;\n\t var remaining = buf.length - offset;\n\t if (!length) {\n\t length = remaining;\n\t } else {\n\t length = Number(length);\n\t if (length > remaining) {\n\t length = remaining;\n\t }\n\t }\n\n\t var strLen = string.length;\n\n\t if (length > strLen / 2) {\n\t length = strLen / 2;\n\t }\n\t for (var i = 0; i < length; ++i) {\n\t var parsed = parseInt(string.substr(i * 2, 2), 16);\n\t if (numberIsNaN(parsed)) return i\n\t buf[offset + i] = parsed;\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction latin1Write (buf, string, offset, length) {\n\t return asciiWrite(buf, string, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8';\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset;\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset >>> 0;\n\t if (isFinite(length)) {\n\t length = length >>> 0;\n\t if (encoding === undefined) encoding = 'utf8';\n\t } else {\n\t encoding = length;\n\t length = undefined;\n\t }\n\t } else {\n\t throw new Error(\n\t 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t )\n\t }\n\n\t var remaining = this.length - offset;\n\t if (length === undefined || length > remaining) length = remaining;\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('Attempt to write outside buffer bounds')\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t var loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\n\t case 'ascii':\n\t return asciiWrite(this, string, offset, length)\n\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Write(this, string, offset, length)\n\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t};\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t};\n\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end);\n\t var res = [];\n\n\t var i = start;\n\t while (i < end) {\n\t var firstByte = buf[i];\n\t var codePoint = null;\n\t var bytesPerSequence = (firstByte > 0xEF) ? 4\n\t : (firstByte > 0xDF) ? 3\n\t : (firstByte > 0xBF) ? 2\n\t : 1;\n\n\t if (i + bytesPerSequence <= end) {\n\t var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte;\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1];\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t fourthByte = buf[i + 3];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t }\n\t }\n\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD;\n\t bytesPerSequence = 1;\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000;\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t codePoint = 0xDC00 | codePoint & 0x3FF;\n\t }\n\n\t res.push(codePoint);\n\t i += bytesPerSequence;\n\t }\n\n\t return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t var len = codePoints.length;\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t var res = '';\n\t var i = 0;\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t );\n\t }\n\t return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t var ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (var i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i] & 0x7F);\n\t }\n\t return ret\n\t}\n\n\tfunction latin1Slice (buf, start, end) {\n\t var ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (var i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i]);\n\t }\n\t return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t var len = buf.length;\n\n\t if (!start || start < 0) start = 0;\n\t if (!end || end < 0 || end > len) end = len;\n\n\t var out = '';\n\t for (var i = start; i < end; ++i) {\n\t out += hexSliceLookupTable[buf[i]];\n\t }\n\t return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t var bytes = buf.slice(start, end);\n\t var res = '';\n\t for (var i = 0; i < bytes.length; i += 2) {\n\t res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t }\n\t return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t var len = this.length;\n\t start = ~~start;\n\t end = end === undefined ? len : ~~end;\n\n\t if (start < 0) {\n\t start += len;\n\t if (start < 0) start = 0;\n\t } else if (start > len) {\n\t start = len;\n\t }\n\n\t if (end < 0) {\n\t end += len;\n\t if (end < 0) end = 0;\n\t } else if (end > len) {\n\t end = len;\n\t }\n\n\t if (end < start) end = start;\n\n\t var newBuf = this.subarray(start, end);\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t return newBuf\n\t};\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t var val = this[offset];\n\t var mul = 1;\n\t var i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length);\n\t }\n\n\t var val = this[offset + --byteLength];\n\t var mul = 1;\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t return this[offset]\n\t};\n\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return this[offset] | (this[offset + 1] << 8)\n\t};\n\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return (this[offset] << 8) | this[offset + 1]\n\t};\n\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t};\n\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t};\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t var val = this[offset];\n\t var mul = 1;\n\t var i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t var i = byteLength;\n\t var mul = 1;\n\t var val = this[offset + --i];\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t};\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t var val = this[offset] | (this[offset + 1] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t var val = this[offset + 1] | (this[offset] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t};\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t};\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754.read(this, offset, true, 23, 4)\n\t};\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754.read(this, offset, false, 23, 4)\n\t};\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754.read(this, offset, true, 52, 8)\n\t};\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754.read(this, offset, false, 52, 8)\n\t};\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t var mul = 1;\n\t var i = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t var i = byteLength - 1;\n\t var mul = 1;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset + 3] = (value >>> 24);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t var limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t var i = 0;\n\t var mul = 1;\n\t var sub = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t var limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t var i = byteLength - 1;\n\t var mul = 1;\n\t var sub = 0;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n\t if (value < 0) value = 0xff + value + 1;\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 3] = (value >>> 24);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t if (value < 0) value = 0xffffffff + value + 1;\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4);\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 23, 4);\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t};\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8);\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 52, 8);\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t};\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t if (!start) start = 0;\n\t if (!end && end !== 0) end = this.length;\n\t if (targetStart >= target.length) targetStart = target.length;\n\t if (!targetStart) targetStart = 0;\n\t if (end > 0 && end < start) end = start;\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length;\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start;\n\t }\n\n\t var len = end - start;\n\n\t if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n\t // Use built-in when available, missing from IE11\n\t this.copyWithin(targetStart, start, end);\n\t } else if (this === target && start < targetStart && targetStart < end) {\n\t // descending copy from end\n\t for (var i = len - 1; i >= 0; --i) {\n\t target[i + targetStart] = this[i + start];\n\t }\n\t } else {\n\t Uint8Array.prototype.set.call(\n\t target,\n\t this.subarray(start, end),\n\t targetStart\n\t );\n\t }\n\n\t return len\n\t};\n\n\t// Usage:\n\t// buffer.fill(number[, offset[, end]])\n\t// buffer.fill(buffer[, offset[, end]])\n\t// buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t // Handle string cases:\n\t if (typeof val === 'string') {\n\t if (typeof start === 'string') {\n\t encoding = start;\n\t start = 0;\n\t end = this.length;\n\t } else if (typeof end === 'string') {\n\t encoding = end;\n\t end = this.length;\n\t }\n\t if (encoding !== undefined && typeof encoding !== 'string') {\n\t throw new TypeError('encoding must be a string')\n\t }\n\t if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\t if (val.length === 1) {\n\t var code = val.charCodeAt(0);\n\t if ((encoding === 'utf8' && code < 128) ||\n\t encoding === 'latin1') {\n\t // Fast path: If `val` fits into a single byte, use that numeric value.\n\t val = code;\n\t }\n\t }\n\t } else if (typeof val === 'number') {\n\t val = val & 255;\n\t } else if (typeof val === 'boolean') {\n\t val = Number(val);\n\t }\n\n\t // Invalid ranges are not set to a default, so can range check early.\n\t if (start < 0 || this.length < start || this.length < end) {\n\t throw new RangeError('Out of range index')\n\t }\n\n\t if (end <= start) {\n\t return this\n\t }\n\n\t start = start >>> 0;\n\t end = end === undefined ? this.length : end >>> 0;\n\n\t if (!val) val = 0;\n\n\t var i;\n\t if (typeof val === 'number') {\n\t for (i = start; i < end; ++i) {\n\t this[i] = val;\n\t }\n\t } else {\n\t var bytes = Buffer.isBuffer(val)\n\t ? val\n\t : Buffer.from(val, encoding);\n\t var len = bytes.length;\n\t if (len === 0) {\n\t throw new TypeError('The value \"' + val +\n\t '\" is invalid for argument \"value\"')\n\t }\n\t for (i = 0; i < end - start; ++i) {\n\t this[i + start] = bytes[i % len];\n\t }\n\t }\n\n\t return this\n\t};\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\tfunction base64clean (str) {\n\t // Node takes equal signs as end of the Base64 encoding\n\t str = str.split('=')[0];\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = str.trim().replace(INVALID_BASE64_RE, '');\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '=';\n\t }\n\t return str\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity;\n\t var codePoint;\n\t var length = string.length;\n\t var leadSurrogate = null;\n\t var bytes = [];\n\n\t for (var i = 0; i < length; ++i) {\n\t codePoint = string.charCodeAt(i);\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t }\n\n\t // valid lead\n\t leadSurrogate = codePoint;\n\n\t continue\n\t }\n\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t leadSurrogate = codePoint;\n\t continue\n\t }\n\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t }\n\n\t leadSurrogate = null;\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint);\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t var byteArray = [];\n\t for (var i = 0; i < str.length; ++i) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF);\n\t }\n\t return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t var c, hi, lo;\n\t var byteArray = [];\n\t for (var i = 0; i < str.length; ++i) {\n\t if ((units -= 2) < 0) break\n\n\t c = str.charCodeAt(i);\n\t hi = c >> 8;\n\t lo = c % 256;\n\t byteArray.push(lo);\n\t byteArray.push(hi);\n\t }\n\n\t return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t for (var i = 0; i < length; ++i) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i];\n\t }\n\t return i\n\t}\n\n\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t// the `instanceof` check but they should be treated as of that type.\n\t// See: https://github.com/feross/buffer/issues/166\n\tfunction isInstance (obj, type) {\n\t return obj instanceof type ||\n\t (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t obj.constructor.name === type.name)\n\t}\n\tfunction numberIsNaN (obj) {\n\t // For IE11 support\n\t return obj !== obj // eslint-disable-line no-self-compare\n\t}\n\n\t// Create lookup table for `toString('hex')`\n\t// See: https://github.com/feross/buffer/issues/219\n\tvar hexSliceLookupTable = (function () {\n\t var alphabet = '0123456789abcdef';\n\t var table = new Array(256);\n\t for (var i = 0; i < 16; ++i) {\n\t var i16 = i * 16;\n\t for (var j = 0; j < 16; ++j) {\n\t table[i16 + j] = alphabet[i] + alphabet[j];\n\t }\n\t }\n\t return table\n\t})();\n\n\t},{\"base64-js\":29,\"ieee754\":32}],31:[function(require,module,exports){\n\n\t/******************************************************************************\n\t * Created 2008-08-19.\n\t *\n\t * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n\t *\n\t * Copyright (C) 2008\n\t * Wyatt Baldwin <self@wyattbaldwin.com>\n\t * All rights reserved\n\t *\n\t * Licensed under the MIT license.\n\t *\n\t * http://www.opensource.org/licenses/mit-license.php\n\t *\n\t * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\t * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\t * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\t * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\t * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\t * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\t * THE SOFTWARE.\n\t *****************************************************************************/\n\tvar dijkstra = {\n\t single_source_shortest_paths: function(graph, s, d) {\n\t // Predecessor map for each node that has been encountered.\n\t // node ID => predecessor node ID\n\t var predecessors = {};\n\n\t // Costs of shortest paths from s to all nodes encountered.\n\t // node ID => cost\n\t var costs = {};\n\t costs[s] = 0;\n\n\t // Costs of shortest paths from s to all nodes encountered; differs from\n\t // `costs` in that it provides easy access to the node that currently has\n\t // the known shortest path from s.\n\t // XXX: Do we actually need both `costs` and `open`?\n\t var open = dijkstra.PriorityQueue.make();\n\t open.push(s, 0);\n\n\t var closest,\n\t u, v,\n\t cost_of_s_to_u,\n\t adjacent_nodes,\n\t cost_of_e,\n\t cost_of_s_to_u_plus_cost_of_e,\n\t cost_of_s_to_v,\n\t first_visit;\n\t while (!open.empty()) {\n\t // In the nodes remaining in graph that have a known cost from s,\n\t // find the node, u, that currently has the shortest path from s.\n\t closest = open.pop();\n\t u = closest.value;\n\t cost_of_s_to_u = closest.cost;\n\n\t // Get nodes adjacent to u...\n\t adjacent_nodes = graph[u] || {};\n\n\t // ...and explore the edges that connect u to those nodes, updating\n\t // the cost of the shortest paths to any or all of those nodes as\n\t // necessary. v is the node across the current edge from u.\n\t for (v in adjacent_nodes) {\n\t if (adjacent_nodes.hasOwnProperty(v)) {\n\t // Get the cost of the edge running from u to v.\n\t cost_of_e = adjacent_nodes[v];\n\n\t // Cost of s to u plus the cost of u to v across e--this is *a*\n\t // cost from s to v that may or may not be less than the current\n\t // known cost to v.\n\t cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n\t // If we haven't visited v yet OR if the current known cost from s to\n\t // v is greater than the new cost we just found (cost of s to u plus\n\t // cost of u to v across e), update v's cost in the cost list and\n\t // update v's predecessor in the predecessor list (it's now u).\n\t cost_of_s_to_v = costs[v];\n\t first_visit = (typeof costs[v] === 'undefined');\n\t if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n\t costs[v] = cost_of_s_to_u_plus_cost_of_e;\n\t open.push(v, cost_of_s_to_u_plus_cost_of_e);\n\t predecessors[v] = u;\n\t }\n\t }\n\t }\n\t }\n\n\t if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n\t var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n\t throw new Error(msg);\n\t }\n\n\t return predecessors;\n\t },\n\n\t extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n\t var nodes = [];\n\t var u = d;\n\t var predecessor;\n\t while (u) {\n\t nodes.push(u);\n\t predecessor = predecessors[u];\n\t u = predecessors[u];\n\t }\n\t nodes.reverse();\n\t return nodes;\n\t },\n\n\t find_path: function(graph, s, d) {\n\t var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n\t return dijkstra.extract_shortest_path_from_predecessor_list(\n\t predecessors, d);\n\t },\n\n\t /**\n\t * A very naive priority queue implementation.\n\t */\n\t PriorityQueue: {\n\t make: function (opts) {\n\t var T = dijkstra.PriorityQueue,\n\t t = {},\n\t key;\n\t opts = opts || {};\n\t for (key in T) {\n\t if (T.hasOwnProperty(key)) {\n\t t[key] = T[key];\n\t }\n\t }\n\t t.queue = [];\n\t t.sorter = opts.sorter || T.default_sorter;\n\t return t;\n\t },\n\n\t default_sorter: function (a, b) {\n\t return a.cost - b.cost;\n\t },\n\n\t /**\n\t * Add a new item to the queue and ensure the highest priority element\n\t * is at the front of the queue.\n\t */\n\t push: function (value, cost) {\n\t var item = {value: value, cost: cost};\n\t this.queue.push(item);\n\t this.queue.sort(this.sorter);\n\t },\n\n\t /**\n\t * Return the highest priority element in the queue.\n\t */\n\t pop: function () {\n\t return this.queue.shift();\n\t },\n\n\t empty: function () {\n\t return this.queue.length === 0;\n\t }\n\t }\n\t};\n\n\n\t// node.js module exports\n\tif (typeof module !== 'undefined') {\n\t module.exports = dijkstra;\n\t}\n\n\t},{}],32:[function(require,module,exports){\n\texports.read = function (buffer, offset, isLE, mLen, nBytes) {\n\t var e, m;\n\t var eLen = (nBytes * 8) - mLen - 1;\n\t var eMax = (1 << eLen) - 1;\n\t var eBias = eMax >> 1;\n\t var nBits = -7;\n\t var i = isLE ? (nBytes - 1) : 0;\n\t var d = isLE ? -1 : 1;\n\t var s = buffer[offset + i];\n\n\t i += d;\n\n\t e = s & ((1 << (-nBits)) - 1);\n\t s >>= (-nBits);\n\t nBits += eLen;\n\t for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t m = e & ((1 << (-nBits)) - 1);\n\t e >>= (-nBits);\n\t nBits += mLen;\n\t for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t if (e === 0) {\n\t e = 1 - eBias;\n\t } else if (e === eMax) {\n\t return m ? NaN : ((s ? -1 : 1) * Infinity)\n\t } else {\n\t m = m + Math.pow(2, mLen);\n\t e = e - eBias;\n\t }\n\t return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n\t};\n\n\texports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n\t var e, m, c;\n\t var eLen = (nBytes * 8) - mLen - 1;\n\t var eMax = (1 << eLen) - 1;\n\t var eBias = eMax >> 1;\n\t var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n\t var i = isLE ? 0 : (nBytes - 1);\n\t var d = isLE ? 1 : -1;\n\t var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n\t value = Math.abs(value);\n\n\t if (isNaN(value) || value === Infinity) {\n\t m = isNaN(value) ? 1 : 0;\n\t e = eMax;\n\t } else {\n\t e = Math.floor(Math.log(value) / Math.LN2);\n\t if (value * (c = Math.pow(2, -e)) < 1) {\n\t e--;\n\t c *= 2;\n\t }\n\t if (e + eBias >= 1) {\n\t value += rt / c;\n\t } else {\n\t value += rt * Math.pow(2, 1 - eBias);\n\t }\n\t if (value * c >= 2) {\n\t e++;\n\t c /= 2;\n\t }\n\n\t if (e + eBias >= eMax) {\n\t m = 0;\n\t e = eMax;\n\t } else if (e + eBias >= 1) {\n\t m = ((value * c) - 1) * Math.pow(2, mLen);\n\t e = e + eBias;\n\t } else {\n\t m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n\t e = 0;\n\t }\n\t }\n\n\t for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n\t e = (e << mLen) | m;\n\t eLen += mLen;\n\t for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n\t buffer[offset + i - d] |= s * 128;\n\t};\n\n\t},{}],33:[function(require,module,exports){\n\tvar toString = {}.toString;\n\n\tmodule.exports = Array.isArray || function (arr) {\n\t return toString.call(arr) == '[object Array]';\n\t};\n\n\t},{}]},{},[24])(24)\n\t});\n\n\n\t});\n\n\tvar index = {\n\t name: 'qrcode',\n\t props: {\n\t /**\n\t * The value of the QR code.\n\t */\n\t value: null,\n\n\t /**\n\t * The options for the QR code generator.\n\t * {@link https://github.com/soldair/node-qrcode#qr-code-options}\n\t */\n\t options: Object,\n\n\t /**\n\t * The tag name of the component's root element.\n\t */\n\t tag: {\n\t type: String,\n\t default: 'canvas'\n\t }\n\t },\n\t render: function render(createElement) {\n\t return createElement(this.tag, this.$slots.default);\n\t },\n\t watch: {\n\t $props: {\n\t deep: true,\n\t immediate: true,\n\n\t /**\n\t * Update the QR code when props changed.\n\t */\n\t handler: function handler() {\n\t if (this.$el) {\n\t this.generate();\n\t }\n\t }\n\t }\n\t },\n\t methods: {\n\t /**\n\t * Generate QR code.\n\t */\n\t generate: function generate() {\n\t var _this = this;\n\n\t var options = this.options,\n\t tag = this.tag;\n\t var value = String(this.value);\n\n\t if (tag === 'canvas') {\n\t qrcode.toCanvas(this.$el, value, options, function (error) {\n\t /* istanbul ignore if */\n\t if (error) {\n\t throw error;\n\t }\n\t });\n\t } else if (tag === 'img') {\n\t qrcode.toDataURL(value, options, function (error, url) {\n\t /* istanbul ignore if */\n\t if (error) {\n\t throw error;\n\t }\n\n\t _this.$el.src = url;\n\t });\n\t } else {\n\t qrcode.toString(value, options, function (error, string) {\n\t /* istanbul ignore if */\n\t if (error) {\n\t throw error;\n\t }\n\n\t _this.$el.innerHTML = string;\n\t });\n\t }\n\t }\n\t },\n\t mounted: function mounted() {\n\t this.generate();\n\t }\n\t};\n\n\treturn index;\n\n})));\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../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, `.fade-enter-active[data-v-42733c12], .fade-leave-active[data-v-42733c12] {\n transition: opacity 0.3s ease;\n}\n.fade-enter[data-v-42733c12], .fade-leave-to[data-v-42733c12] {\n opacity: 0;\n}\n.linked-icons[data-v-42733c12] {\n display: flex;\n}\n.linked-icons img[data-v-42733c12] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: 0.7;\n}\n.linked-icons img[data-v-42733c12]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-42733c12] {\n display: none;\n}\n.popovermenu.open[data-v-42733c12] {\n display: block;\n}\nli.collection-list-item[data-v-42733c12] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-42733c12] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-42733c12], li.collection-list-item .collection-item-name[data-v-42733c12] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-42733c12] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-42733c12] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-42733c12] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details[data-v-42733c12] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12] {\n display: flex;\n margin-left: 44px;\n border-radius: 3px;\n cursor: pointer;\n}\nli.collection-list-item .resource-list-details li[data-v-42733c12]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-42733c12] {\n flex-grow: 1;\n padding: 3px;\n max-width: calc(100% - 30px);\n display: flex;\n}\nli.collection-list-item .resource-list-details span[data-v-42733c12] {\n display: inline-block;\n vertical-align: top;\n margin-right: 10px;\n}\nli.collection-list-item .resource-list-details span.resource-name[data-v-42733c12] {\n text-overflow: ellipsis;\n overflow: hidden;\n position: relative;\n vertical-align: top;\n white-space: nowrap;\n flex-grow: 1;\n padding: 4px;\n}\nli.collection-list-item .resource-list-details img[data-v-42733c12] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12] {\n opacity: 0.7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:hover, li.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-42733c12] {\n animation: shake-42733c12 0.6s 1 linear;\n}\n@keyframes shake-42733c12 {\n0% {\n transform: translate(15px);\n}\n20% {\n transform: translate(-15px);\n}\n40% {\n transform: translate(7px);\n}\n60% {\n transform: translate(-7px);\n}\n80% {\n transform: translate(3px);\n}\n100% {\n transform: translate(0px);\n}\n}.collection-list *[data-v-8ebb2593] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-8ebb2593] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-8ebb2593] {\n margin-top: auto;\n}\n#collection-select-container[data-v-8ebb2593] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-8ebb2593] {\n display: block;\n padding: 16px;\n opacity: 0.7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-8ebb2593]:hover {\n opacity: 1;\n}\np.hint[data-v-8ebb2593] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-8ebb2593] {\n width: 32px;\n height: 32px;\n margin: 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n margin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects[data-v-8ebb2593] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-8ebb2593] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-8ebb2593] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-8ebb2593] {\n padding: 4px;\n}\n.fade-enter-active[data-v-8ebb2593], .fade-leave-active[data-v-8ebb2593] {\n transition: opacity 0.5s;\n}\n.fade-enter[data-v-8ebb2593], .fade-leave-to[data-v-8ebb2593] {\n opacity: 0;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/nextcloud-vue-collections/dist/assets/index-CJAYjuyf.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,6BAA6B;AAC/B;AACA;EACE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,aAAa;EACb,YAAY;EACZ,cAAc;EACd,4BAA4B;EAC5B,2BAA2B;EAC3B,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;AAChB;AACA;EACE,eAAe;EACf,YAAY;EACZ,eAAe;EACf,2BAA2B;AAC7B;AACA;EACE,eAAe;AACjB;AACA;EACE,eAAe;EACf,YAAY;EACZ,aAAa;AACf;AACA;EACE,iBAAiB;AACnB;AACA;EACE,eAAe;EACf,6CAA6C;AAC/C;AACA;EACE,YAAY;AACd;AACA;EACE,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,aAAa;EACb,iBAAiB;EACjB,kBAAkB;EAClB,eAAe;AACjB;AACA;EACE,8CAA8C;AAChD;AACA;EACE,YAAY;EACZ,YAAY;EACZ,4BAA4B;EAC5B,aAAa;AACf;AACA;EACE,qBAAqB;EACrB,mBAAmB;EACnB,kBAAkB;AACpB;AACA;EACE,uBAAuB;EACvB,gBAAgB;EAChB,kBAAkB;EAClB,mBAAmB;EACnB,mBAAmB;EACnB,YAAY;EACZ,YAAY;AACd;AACA;EACE,WAAW;EACX,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,uCAAuC;AACzC;AACA;AACA;IACI,0BAA0B;AAC9B;AACA;IACI,2BAA2B;AAC/B;AACA;IACI,yBAAyB;AAC7B;AACA;IACI,0BAA0B;AAC9B;AACA;IACI,yBAAyB;AAC7B;AACA;IACI,yBAAyB;AAC7B;AACA,CAAC;EACC,sBAAsB;AACxB;AACA;EACE,aAAa;EACb,kBAAkB;EAClB,SAAS;AACX;AACA;EACE,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,sBAAsB;AACxB;AACA;EACE,cAAc;EACd,aAAa;EACb,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,UAAU;AACZ;AACA;EACE,UAAU;EACV,iBAAiB;EACjB,gBAAgB;EAChB,oCAAoC;EACpC,mBAAmB;AACrB;AACA;EACE,WAAW;EACX,YAAY;EACZ,SAAS;EACT,YAAY;EACZ,8CAA8C;EAC9C,gBAAgB;AAClB;;AAEA,qCAAqC;AACrC;EACE,cAAc;EACd,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,2DAA2D;AAC7D;AACA;EACE,YAAY;AACd;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,UAAU;AACZ\",\"sourcesContent\":[\".fade-enter-active[data-v-42733c12], .fade-leave-active[data-v-42733c12] {\\n transition: opacity 0.3s ease;\\n}\\n.fade-enter[data-v-42733c12], .fade-leave-to[data-v-42733c12] {\\n opacity: 0;\\n}\\n.linked-icons[data-v-42733c12] {\\n display: flex;\\n}\\n.linked-icons img[data-v-42733c12] {\\n padding: 12px;\\n height: 44px;\\n display: block;\\n background-repeat: no-repeat;\\n background-position: center;\\n opacity: 0.7;\\n}\\n.linked-icons img[data-v-42733c12]:hover {\\n opacity: 1;\\n}\\n.popovermenu[data-v-42733c12] {\\n display: none;\\n}\\n.popovermenu.open[data-v-42733c12] {\\n display: block;\\n}\\nli.collection-list-item[data-v-42733c12] {\\n flex-wrap: wrap;\\n height: auto;\\n cursor: pointer;\\n margin-bottom: 0 !important;\\n}\\nli.collection-list-item .collection-avatar[data-v-42733c12] {\\n margin-top: 6px;\\n}\\nli.collection-list-item form[data-v-42733c12], li.collection-list-item .collection-item-name[data-v-42733c12] {\\n flex-basis: 10%;\\n flex-grow: 1;\\n display: flex;\\n}\\nli.collection-list-item .collection-item-name[data-v-42733c12] {\\n padding: 12px 9px;\\n}\\nli.collection-list-item input[data-v-42733c12] {\\n margin-top: 4px;\\n border-color: var(--color-border-maxcontrast);\\n}\\nli.collection-list-item input[type=text][data-v-42733c12] {\\n flex-grow: 1;\\n}\\nli.collection-list-item .error[data-v-42733c12] {\\n flex-basis: 100%;\\n width: 100%;\\n}\\nli.collection-list-item .resource-list-details[data-v-42733c12] {\\n flex-basis: 100%;\\n width: 100%;\\n}\\nli.collection-list-item .resource-list-details li[data-v-42733c12] {\\n display: flex;\\n margin-left: 44px;\\n border-radius: 3px;\\n cursor: pointer;\\n}\\nli.collection-list-item .resource-list-details li[data-v-42733c12]:hover {\\n background-color: var(--color-background-dark);\\n}\\nli.collection-list-item .resource-list-details li a[data-v-42733c12] {\\n flex-grow: 1;\\n padding: 3px;\\n max-width: calc(100% - 30px);\\n display: flex;\\n}\\nli.collection-list-item .resource-list-details span[data-v-42733c12] {\\n display: inline-block;\\n vertical-align: top;\\n margin-right: 10px;\\n}\\nli.collection-list-item .resource-list-details span.resource-name[data-v-42733c12] {\\n text-overflow: ellipsis;\\n overflow: hidden;\\n position: relative;\\n vertical-align: top;\\n white-space: nowrap;\\n flex-grow: 1;\\n padding: 4px;\\n}\\nli.collection-list-item .resource-list-details img[data-v-42733c12] {\\n width: 24px;\\n height: 24px;\\n}\\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12] {\\n opacity: 0.7;\\n}\\nli.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:hover, li.collection-list-item .resource-list-details .icon-close[data-v-42733c12]:focus {\\n opacity: 1;\\n}\\n.shouldshake[data-v-42733c12] {\\n animation: shake-42733c12 0.6s 1 linear;\\n}\\n@keyframes shake-42733c12 {\\n0% {\\n transform: translate(15px);\\n}\\n20% {\\n transform: translate(-15px);\\n}\\n40% {\\n transform: translate(7px);\\n}\\n60% {\\n transform: translate(-7px);\\n}\\n80% {\\n transform: translate(3px);\\n}\\n100% {\\n transform: translate(0px);\\n}\\n}.collection-list *[data-v-8ebb2593] {\\n box-sizing: border-box;\\n}\\n.collection-list > li[data-v-8ebb2593] {\\n display: flex;\\n align-items: start;\\n gap: 12px;\\n}\\n.collection-list > li > .avatar[data-v-8ebb2593] {\\n margin-top: auto;\\n}\\n#collection-select-container[data-v-8ebb2593] {\\n display: flex;\\n flex-direction: column;\\n}\\n.v-select span.avatar[data-v-8ebb2593] {\\n display: block;\\n padding: 16px;\\n opacity: 0.7;\\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n.v-select span.avatar[data-v-8ebb2593]:hover {\\n opacity: 1;\\n}\\np.hint[data-v-8ebb2593] {\\n z-index: 1;\\n margin-top: -16px;\\n padding: 8px 8px;\\n color: var(--color-text-maxcontrast);\\n line-height: normal;\\n}\\ndiv.avatar[data-v-8ebb2593] {\\n width: 32px;\\n height: 32px;\\n margin: 0;\\n padding: 8px;\\n background-color: var(--color-background-dark);\\n margin-top: 30px;\\n}\\n\\n/** TODO provide white icon in core */\\n.icon-projects[data-v-8ebb2593] {\\n display: block;\\n padding: 8px;\\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n.option__wrapper[data-v-8ebb2593] {\\n display: flex;\\n}\\n.option__wrapper .avatar[data-v-8ebb2593] {\\n display: block;\\n background-color: var(--color-background-darker) !important;\\n}\\n.option__wrapper .option__title[data-v-8ebb2593] {\\n padding: 4px;\\n}\\n.fade-enter-active[data-v-8ebb2593], .fade-leave-active[data-v-8ebb2593] {\\n transition: opacity 0.5s;\\n}\\n.fade-enter[data-v-8ebb2593], .fade-leave-to[data-v-8ebb2593] {\\n opacity: 0;\\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, `.share-expiry-time[data-v-66d8c844]{display:inline-flex;align-items:center;justify-content:center}.share-expiry-time .hint-icon[data-v-66d8c844]{padding:0;margin:0;width:24px;height:24px}.hint-heading[data-v-66d8c844]{text-align:center;font-size:1rem;margin-top:8px;padding-bottom:8px;margin-bottom:0;border-bottom:1px solid var(--color-border)}.hint-body[data-v-66d8c844]{padding:var(--border-radius-element);max-width:300px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/ShareExpiryTime.vue\"],\"names\":[],\"mappings\":\"AACA,oCACI,mBAAA,CACA,kBAAA,CACA,sBAAA,CAEA,+CACI,SAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CAIR,+BACI,iBAAA,CACA,cAAA,CACA,cAAA,CACA,kBAAA,CACA,eAAA,CACA,2CAAA,CAGJ,4BACI,oCAAA,CACA,eAAA\",\"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-2dbd45b5]{display:flex;align-items:center;height:44px}.sharing-entry__summary[data-v-2dbd45b5]{padding:8px;padding-inline-start:10px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;flex:1 0;min-width:0}.sharing-entry__summary__desc[data-v-2dbd45b5]{display:inline-block;padding-bottom:0;line-height:1.2em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sharing-entry__summary__desc p[data-v-2dbd45b5],.sharing-entry__summary__desc small[data-v-2dbd45b5]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-2dbd45b5]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,yCACC,WAAA,CACA,yBAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,sBAAA,CACA,QAAA,CACA,WAAA,CAEA,+CACC,oBAAA,CACA,gBAAA,CACA,iBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,sGAEC,mCAAA,CAGD,sDACC,mCAAA\",\"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-fe8ed59e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-fe8ed59e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;padding-inline-start:10px;line-height:1.2em}.sharing-entry__desc p[data-v-fe8ed59e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-fe8ed59e]{margin-inline-start: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,yBAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,wBAAA\",\"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-57874406]{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-57874406]{opacity:1;color:var(--color-success)}`, \"\",{\"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,CACA,0BAAA\",\"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-43291a73]{display:flex;align-items:center;min-height:44px}.sharing-entry__summary[data-v-43291a73]{padding:8px;padding-inline-start:10px;display:flex;justify-content:space-between;flex:1 0;min-width:0}.sharing-entry__desc[data-v-43291a73]{display:flex;flex-direction:column;line-height:1.2em}.sharing-entry__desc p[data-v-43291a73]{color:var(--color-text-maxcontrast)}.sharing-entry__desc__title[data-v-43291a73]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__actions[data-v-43291a73]{display:flex;align-items:center;margin-inline-start:auto}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-43291a73]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-43291a73] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-43291a73]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-43291a73]{width:44px;height:44px;margin:0;padding:14px;margin-inline-start:auto}.sharing-entry .action-item~.action-item[data-v-43291a73],.sharing-entry .action-item~.sharing-entry__loading[data-v-43291a73]{margin-inline-start:0}.sharing-entry .icon-checkmark-color[data-v-43291a73]{opacity:1;color:var(--color-success)}.qr-code-dialog[data-v-43291a73]{display:flex;width:100%;justify-content:center}.qr-code-dialog__img[data-v-43291a73]{width:100%;height:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAEA,yCACC,WAAA,CACA,yBAAA,CACA,YAAA,CACA,6BAAA,CACA,QAAA,CACA,WAAA,CAGA,sCACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,wCACC,mCAAA,CAGD,6CACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIF,yCACC,YAAA,CACA,kBAAA,CACA,wBAAA,CAID,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,wBAAA,CAOA,+HAEC,qBAAA,CAIF,sDACC,SAAA,CACA,0BAAA,CAKF,iCACC,YAAA,CACA,UAAA,CACA,sBAAA,CAEA,sCACC,UAAA,CACA,WAAA\",\"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, `.share-select[data-v-2aa230f1]{display:block}.share-select[data-v-2aa230f1] .action-item__menutoggle{color:var(--color-primary-element) !important;font-size:12.5px !important;height:auto !important;min-height:auto !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__text{font-weight:normal !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__icon{height:24px !important;min-height:24px !important;width:24px !important;min-width:24px !important}.share-select[data-v-2aa230f1] .action-item__menutoggle .button-vue__wrapper{flex-direction:row-reverse !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,aAAA,CAIA,wDACC,6CAAA,CACA,2BAAA,CACA,sBAAA,CACA,0BAAA,CAEA,0EACC,6BAAA,CAGD,0EACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAGD,6EAEC,qCAAA\",\"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-44339fa4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-44339fa4]{padding:8px;padding-inline-start:10px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-44339fa4]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-44339fa4]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-44339fa4]{margin-inline-start: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,yBAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,mCAAA\",\"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 .avatardiv__initials-wrapper{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,wEACC,YAAA\",\"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, `.sharingTabDetailsView[data-v-53f964d4]{display:flex;flex-direction:column;width:100%;margin:0 auto;position:relative;height:100%;overflow:hidden}.sharingTabDetailsView__header[data-v-53f964d4]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-53f964d4]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-53f964d4]{font-size:15px;padding-inline-start:.3em}.sharingTabDetailsView__wrapper[data-v-53f964d4]{position:relative;overflow:scroll;flex-shrink:1;padding:4px;padding-inline-end:12px}.sharingTabDetailsView__quick-permissions[data-v-53f964d4]{display:flex;justify-content:center;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-53f964d4]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-53f964d4]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-53f964d4]:nth-child(1){align-items:center;justify-content:center;padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-53f964d4] label span{display:flex;flex-direction:column}.sharingTabDetailsView__quick-permissions div span[data-v-53f964d4] span.checkbox-content__text.checkbox-radio-switch__text{flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-53f964d4] span.checkbox-content__text.checkbox-radio-switch__text .subline{display:block;flex-basis:100%}.sharingTabDetailsView__advanced-control[data-v-53f964d4]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-53f964d4]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-53f964d4]{width:100%;margin-bottom:.5em;text-align:start;padding-inline-start:0}.sharingTabDetailsView__advanced section textarea[data-v-53f964d4],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-53f964d4]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-53f964d4]{height:80px;margin:0}.sharingTabDetailsView__advanced section span[data-v-53f964d4] label{padding-inline-start:0 !important;background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-53f964d4]{padding-inline-start:1.5em}.sharingTabDetailsView__label[data-v-53f964d4]{padding-block-end:6px}.sharingTabDetailsView__delete>button[data-v-53f964d4]:first-child{color:#df0707}.sharingTabDetailsView__footer[data-v-53f964d4]{width:100%;display:flex;position:sticky;bottom:0;flex-direction:column;justify-content:space-between;align-items:flex-start;background:linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background))}.sharingTabDetailsView__footer .button-group[data-v-53f964d4]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-53f964d4]{margin-inline-start:16px}.sharingTabDetailsView__footer .button-group button[data-v-53f964d4]:first-child{margin-inline-start:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingDetailsTab.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,aAAA,CACA,iBAAA,CACA,WAAA,CACA,eAAA,CAEA,gDACC,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,WAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,wDACC,cAAA,CACA,yBAAA,CAMH,iDACC,iBAAA,CACA,eAAA,CACA,aAAA,CACA,WAAA,CACA,uBAAA,CAGD,2DACC,YAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,YAAA,CAGD,+EACC,YAAA,CACA,qBAAA,CAID,4HACC,cAAA,CAEA,qIACC,aAAA,CACA,eAAA,CAQL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,gBAAA,CACA,sBAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CACA,QAAA,CAYD,qEACC,iCAAA,CACA,mCAAA,CACA,sBAAA,CAGD,2FACC,0BAAA,CAKH,+CACC,qBAAA,CAIA,mEACC,aAAA,CAIF,gDACC,UAAA,CACA,YAAA,CACA,eAAA,CACA,QAAA,CACA,qBAAA,CACA,6BAAA,CACA,sBAAA,CACA,2FAAA,CAEA,8DACC,YAAA,CACA,6BAAA,CACA,UAAA,CACA,eAAA,CAEA,qEACC,wBAAA,CAEA,iFACC,qBAAA\",\"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-a6cc72e6]{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\",\"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-630c7354]{margin:1rem auto}.sharingTab[data-v-630c7354]{position:relative;height:100%}.sharingTab__content[data-v-630c7354]{padding:0 6px}.sharingTab__content section[data-v-630c7354]{padding-bottom:16px}.sharingTab__content section .section-header[data-v-630c7354]{margin-top:2px;margin-bottom:2px;display:flex;align-items:center;padding-bottom:4px}.sharingTab__content section .section-header h4[data-v-630c7354]{margin:0;font-size:16px}.sharingTab__content section .section-header .visually-hidden[data-v-630c7354]{display:none}.sharingTab__content section .section-header .hint-icon[data-v-630c7354]{color:var(--color-primary-element)}.sharingTab__content>section[data-v-630c7354]:not(:last-child){border-bottom:2px solid var(--color-border)}.sharingTab__additionalContent[data-v-630c7354]{margin:44px 0}.hint-body[data-v-630c7354]{max-width:300px;padding:var(--border-radius-element)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,gBAAA,CAGD,6BACC,iBAAA,CACA,WAAA,CAEA,sCACC,aAAA,CAEA,8CACC,mBAAA,CAEA,8DACC,cAAA,CACA,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,iEACC,QAAA,CACA,cAAA,CAGD,+EACC,YAAA,CAGD,yEACC,kCAAA,CAOH,+DACC,2CAAA,CAKF,gDACC,aAAA,CAIF,4BACC,eAAA,CACA,oCAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**!\n * url-search-params-polyfill\n *\n * @author Jerry Bendy (https://github.com/jerrybendy)\n * @licence MIT\n */\n(function(self) {\n 'use strict';\n\n var nativeURLSearchParams = (function() {\n // #41 Fix issue in RN\n try {\n if (self.URLSearchParams && (new self.URLSearchParams('foo=bar')).get('foo') === 'bar') {\n return self.URLSearchParams;\n }\n } catch (e) {}\n return null;\n })(),\n isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === 'a=1',\n // There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.\n decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams('s=%2B').get('s') === '+'),\n isSupportSize = nativeURLSearchParams && 'size' in nativeURLSearchParams.prototype,\n __URLSearchParams__ = \"__URLSearchParams__\",\n // Fix bug in Edge which cannot encode ' &' correctly\n encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {\n var ampersandTest = new nativeURLSearchParams();\n ampersandTest.append('s', ' &');\n return ampersandTest.toString() === 's=+%26';\n })() : true,\n prototype = URLSearchParamsPolyfill.prototype,\n iterable = !!(self.Symbol && self.Symbol.iterator);\n\n if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly && isSupportSize) {\n return;\n }\n\n\n /**\n * Make a URLSearchParams instance\n *\n * @param {object|string|URLSearchParams} search\n * @constructor\n */\n function URLSearchParamsPolyfill(search) {\n search = search || \"\";\n\n // support construct object with another URLSearchParams instance\n if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {\n search = search.toString();\n }\n this [__URLSearchParams__] = parseToDict(search);\n }\n\n\n /**\n * Appends a specified key/value pair as a new search parameter.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.append = function(name, value) {\n appendTo(this [__URLSearchParams__], name, value);\n };\n\n /**\n * Deletes the given search parameter, and its associated value,\n * from the list of all search parameters.\n *\n * @param {string} name\n */\n prototype['delete'] = function(name) {\n delete this [__URLSearchParams__] [name];\n };\n\n /**\n * Returns the first value associated to the given search parameter.\n *\n * @param {string} name\n * @returns {string|null}\n */\n prototype.get = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict[name][0] : null;\n };\n\n /**\n * Returns all the values association with a given search parameter.\n *\n * @param {string} name\n * @returns {Array}\n */\n prototype.getAll = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict [name].slice(0) : [];\n };\n\n /**\n * Returns a Boolean indicating if such a search parameter exists.\n *\n * @param {string} name\n * @returns {boolean}\n */\n prototype.has = function(name) {\n return hasOwnProperty(this [__URLSearchParams__], name);\n };\n\n /**\n * Sets the value associated to a given search parameter to\n * the given value. If there were several values, delete the\n * others.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.set = function set(name, value) {\n this [__URLSearchParams__][name] = ['' + value];\n };\n\n /**\n * Returns a string containg a query string suitable for use in a URL.\n *\n * @returns {string}\n */\n prototype.toString = function() {\n var dict = this[__URLSearchParams__], query = [], i, key, name, value;\n for (key in dict) {\n name = encode(key);\n for (i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]));\n }\n }\n return query.join('&');\n };\n\n // There is a bug in Safari 10.1 and `Proxy`ing it is not enough.\n var useProxy = self.Proxy && nativeURLSearchParams && (!decodesPlusesCorrectly || !encodesAmpersandsCorrectly || !isSupportObjectConstructor || !isSupportSize);\n var propValue;\n if (useProxy) {\n // Safari 10.0 doesn't support Proxy, so it won't extend URLSearchParams on safari 10.0\n propValue = new Proxy(nativeURLSearchParams, {\n construct: function (target, args) {\n return new target((new URLSearchParamsPolyfill(args[0]).toString()));\n }\n })\n // Chrome <=60 .toString() on a function proxy got error \"Function.prototype.toString is not generic\"\n propValue.toString = Function.prototype.toString.bind(URLSearchParamsPolyfill);\n } else {\n propValue = URLSearchParamsPolyfill;\n }\n\n /*\n * Apply polyfill to global object and append other prototype into it\n */\n Object.defineProperty(self, 'URLSearchParams', {\n value: propValue\n });\n\n var USPProto = self.URLSearchParams.prototype;\n\n USPProto.polyfill = true;\n\n // Fix #54, `toString.call(new URLSearchParams)` will return correct value when Proxy not used\n if (!useProxy && self.Symbol) {\n USPProto[self.Symbol.toStringTag] = 'URLSearchParams';\n }\n\n /**\n *\n * @param {function} callback\n * @param {object} thisArg\n */\n if (!('forEach' in USPProto)) {\n USPProto.forEach = function(callback, thisArg) {\n var dict = parseToDict(this.toString());\n Object.getOwnPropertyNames(dict).forEach(function(name) {\n dict[name].forEach(function(value) {\n callback.call(thisArg, value, name, this);\n }, this);\n }, this);\n };\n }\n\n /**\n * Sort all name-value pairs\n */\n if (!('sort' in USPProto)) {\n USPProto.sort = function() {\n var dict = parseToDict(this.toString()), keys = [], k, i, j;\n for (k in dict) {\n keys.push(k);\n }\n keys.sort();\n\n for (i = 0; i < keys.length; i++) {\n this['delete'](keys[i]);\n }\n for (i = 0; i < keys.length; i++) {\n var key = keys[i], values = dict[key];\n for (j = 0; j < values.length; j++) {\n this.append(key, values[j]);\n }\n }\n };\n }\n\n /**\n * Returns an iterator allowing to go through all keys of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('keys' in USPProto)) {\n USPProto.keys = function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push(name);\n });\n return makeIterator(items);\n };\n }\n\n /**\n * Returns an iterator allowing to go through all values of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('values' in USPProto)) {\n USPProto.values = function() {\n var items = [];\n this.forEach(function(item) {\n items.push(item);\n });\n return makeIterator(items);\n };\n }\n\n /**\n * Returns an iterator allowing to go through all key/value\n * pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('entries' in USPProto)) {\n USPProto.entries = function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push([name, item]);\n });\n return makeIterator(items);\n };\n }\n\n if (iterable) {\n USPProto[self.Symbol.iterator] = USPProto[self.Symbol.iterator] || USPProto.entries;\n }\n\n if (!('size' in USPProto)) {\n Object.defineProperty(USPProto, 'size', {\n get: function () {\n var dict = parseToDict(this.toString())\n if (USPProto === this) {\n throw new TypeError('Illegal invocation at URLSearchParams.invokeGetter')\n }\n return Object.keys(dict).reduce(function (prev, cur) {\n return prev + dict[cur].length;\n }, 0);\n }\n });\n }\n\n function encode(str) {\n var replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function(match) {\n return replace[match];\n });\n }\n\n function decode(str) {\n return str\n .replace(/[ +]/g, '%20')\n .replace(/(%[a-f0-9]{2})+/ig, function(match) {\n return decodeURIComponent(match);\n });\n }\n\n function makeIterator(arr) {\n var iterator = {\n next: function() {\n var value = arr.shift();\n return {done: value === undefined, value: value};\n }\n };\n\n if (iterable) {\n iterator[self.Symbol.iterator] = function() {\n return iterator;\n };\n }\n\n return iterator;\n }\n\n function parseToDict(search) {\n var dict = {};\n\n if (typeof search === \"object\") {\n // if `search` is an array, treat it as a sequence\n if (isArray(search)) {\n for (var i = 0; i < search.length; i++) {\n var item = search[i];\n if (isArray(item) && item.length === 2) {\n appendTo(dict, item[0], item[1]);\n } else {\n throw new TypeError(\"Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements\");\n }\n }\n\n } else {\n for (var key in search) {\n if (search.hasOwnProperty(key)) {\n appendTo(dict, key, search[key]);\n }\n }\n }\n\n } else {\n // remove first '?'\n if (search.indexOf(\"?\") === 0) {\n search = search.slice(1);\n }\n\n var pairs = search.split(\"&\");\n for (var j = 0; j < pairs.length; j++) {\n var value = pairs [j],\n index = value.indexOf('=');\n\n if (-1 < index) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n\n } else {\n if (value) {\n appendTo(dict, decode(value), '');\n }\n }\n }\n }\n\n return dict;\n }\n\n function appendTo(dict, name, value) {\n var val = typeof value === 'string' ? value : (\n value !== null && value !== undefined && typeof value.toString === 'function' ? value.toString() : JSON.stringify(value)\n );\n\n // #47 Prevent using `hasOwnProperty` as a property name\n if (hasOwnProperty(dict, name)) {\n dict[name].push(val);\n } else {\n dict[name] = [val];\n }\n }\n\n function isArray(val) {\n return !!val && '[object Array]' === Object.prototype.toString.call(val);\n }\n\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n})(typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : this));\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharingTab\",class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showSharingDetailsView),expression:\"!showSharingDetailsView\"}],staticClass:\"sharingTab__content\"},[(_vm.isSharedWithMe)?_c('ul',[_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))],1):_vm._e(),_vm._v(\" \"),_c('section',[_c('div',{staticClass:\"section-header\"},[_c('h4',[_vm._v(_vm._s(_vm.t('files_sharing', 'Internal shares')))]),_vm._v(\" \"),_c('NcPopover',{attrs:{\"popup-role\":\"dialog\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcButton',{staticClass:\"hint-icon\",attrs:{\"type\":\"tertiary-no-background\",\"aria-label\":_vm.t('files_sharing', 'Internal shares explanation')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InfoIcon',{attrs:{\"size\":20}})]},proxy:true}])})]},proxy:true}])},[_vm._v(\" \"),_c('p',{staticClass:\"hint-body\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.internalSharesHelpText)+\"\\n\\t\\t\\t\\t\\t\")])])],1),_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,\"placeholder\":_vm.t('files_sharing', 'Share with accounts and teams')},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_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}})],1),_vm._v(\" \"),_c('section',[_c('div',{staticClass:\"section-header\"},[_c('h4',[_vm._v(_vm._s(_vm.t('files_sharing', 'External shares')))]),_vm._v(\" \"),_c('NcPopover',{attrs:{\"popup-role\":\"dialog\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcButton',{staticClass:\"hint-icon\",attrs:{\"type\":\"tertiary-no-background\",\"aria-label\":_vm.t('files_sharing', 'External shares explanation')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InfoIcon',{attrs:{\"size\":20}})]},proxy:true}])})]},proxy:true}])},[_vm._v(\" \"),_c('p',{staticClass:\"hint-body\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.externalSharesHelpText)+\"\\n\\t\\t\\t\\t\\t\")])])],1),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"is-external\":true,\"placeholder\":_vm.t('files_sharing', 'Email, federated cloud id'),\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e()],1),_vm._v(\" \"),(_vm.sections.length > 0 && !_vm.showSharingDetailsView)?_c('section',[_c('div',{staticClass:\"section-header\"},[_c('h4',[_vm._v(_vm._s(_vm.t('files_sharing', 'Additional shares')))]),_vm._v(\" \"),_c('NcPopover',{attrs:{\"popup-role\":\"dialog\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcButton',{staticClass:\"hint-icon\",attrs:{\"type\":\"tertiary-no-background\",\"aria-label\":_vm.t('files_sharing', 'Additional shares explanation')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InfoIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,915383693)})]},proxy:true}],null,false,1027936137)},[_vm._v(\" \"),_c('p',{staticClass:\"hint-body\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.additionalSharesHelpText)+\"\\n\\t\\t\\t\\t\\t\")])])],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)}),_vm._v(\" \"),(_vm.projectsEnabled)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showSharingDetailsView && _vm.fileInfo),expression:\"!showSharingDetailsView && fileInfo\"}],staticClass:\"sharingTab__additionalContent\"},[_c('CollectionList',{attrs:{\"id\":`${_vm.fileInfo.id}`,\"type\":\"file\",\"name\":_vm.fileInfo.name}})],1):_vm._e()],2):_vm._e()]),_vm._v(\" \"),(_vm.showSharingDetailsView)?_c('SharingDetailsTab',{attrs:{\"file-info\":_vm.shareDetailsData.fileInfo,\"share\":_vm.shareDetailsData.share},on:{\"close-sharing-details\":_vm.toggleShareDetailsView,\"add:share\":_vm.addShare,\"remove:share\":_vm.removeShare}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../css-loader/dist/cjs.js!./index-CJAYjuyf.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../css-loader/dist/cjs.js!./index-CJAYjuyf.css\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import './assets/index-CJAYjuyf.css';\nimport { t } from \"@nextcloud/l10n\";\nimport NcAvatar from \"@nextcloud/vue/dist/Components/NcAvatar.js\";\nimport NcSelect from \"@nextcloud/vue/dist/Components/NcSelect.js\";\nimport debounce from \"lodash-es/debounce.js\";\nimport NcActions from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport NcActionButton from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport { reactive, set } from \"vue\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nclass CollectionService {\n constructor() {\n this.http = axios;\n }\n listCollection(collectionId) {\n return this.http.get(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }));\n }\n renameCollection(collectionId, collectionName) {\n return this.http.put(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), {\n collectionName\n }).then((result) => {\n return result.data.ocs.data;\n });\n }\n getCollectionsByResource(resourceType, resourceId) {\n return this.http.get(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId })).then((result) => {\n return result.data.ocs.data;\n });\n }\n createCollection(resourceType, resourceId, name) {\n return this.http.post(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId }), {\n name\n }).then((response) => {\n return response.data.ocs.data;\n });\n }\n addResource(collectionId, resourceType, resourceId) {\n resourceId = \"\" + resourceId;\n return this.http.post(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), {\n resourceType,\n resourceId\n }).then((response) => {\n return response.data.ocs.data;\n });\n }\n removeResource(collectionId, resourceType, resourceId) {\n return this.http.delete(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { params: { resourceType, resourceId } }).then((response) => {\n return response.data.ocs.data;\n });\n }\n search(query) {\n return this.http.get(generateOcsUrl(\"collaboration/resources/collections/search/{query}\", { query })).then((response) => {\n return response.data.ocs.data;\n });\n }\n}\nconst service = new CollectionService();\nconst state = reactive({\n collections: []\n});\nconst mutations = {\n addCollections(collections) {\n set(state, \"collections\", collections);\n },\n addCollection(collection) {\n state.collections.push(collection);\n },\n removeCollection(collectionId) {\n set(state, \"collections\", state.collections.filter((item) => item.id !== collectionId));\n },\n updateCollection(collection) {\n const index = state.collections.findIndex((_item) => _item.id === collection.id);\n if (index !== -1) {\n set(state.collections, index, collection);\n } else {\n state.collections.push(collection);\n }\n }\n};\nconst actions = {\n fetchCollectionsByResource({ resourceType, resourceId }) {\n return service.getCollectionsByResource(resourceType, resourceId).then((collections) => {\n mutations.addCollections(collections);\n return collections;\n });\n },\n createCollection({ baseResourceType, baseResourceId, resourceType, resourceId, name }) {\n return service.createCollection(baseResourceType, baseResourceId, name).then((collection) => {\n mutations.addCollection(collection);\n actions.addResourceToCollection({\n collectionId: collection.id,\n resourceType,\n resourceId\n });\n });\n },\n renameCollection({ collectionId, name }) {\n return service.renameCollection(collectionId, name).then((collection) => {\n mutations.updateCollection(collection);\n return collection;\n });\n },\n addResourceToCollection({ collectionId, resourceType, resourceId }) {\n return service.addResource(collectionId, resourceType, resourceId).then((collection) => {\n mutations.updateCollection(collection);\n return collection;\n });\n },\n removeResource({ collectionId, resourceType, resourceId }) {\n return service.removeResource(collectionId, resourceType, resourceId).then((collection) => {\n if (collection.resources.length > 0) {\n mutations.updateCollection(collection);\n } else {\n mutations.removeCollection(collection);\n }\n });\n },\n search(query) {\n return service.search(query);\n }\n};\nfunction normalizeComponent(scriptExports, render3, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render3) {\n options.render = render3;\n options.staticRenderFns = staticRenderFns;\n options._compiled = true;\n }\n if (functionalTemplate) {\n options.functional = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n var hook;\n if (moduleIdentifier) {\n hook = function(context) {\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext;\n if (!context && typeof __VUE_SSR_CONTEXT__ !== \"undefined\") {\n context = __VUE_SSR_CONTEXT__;\n }\n if (injectStyles) {\n injectStyles.call(this, context);\n }\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n };\n options._ssrRegister = hook;\n } else if (injectStyles) {\n hook = shadowMode ? function() {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n );\n } : injectStyles;\n }\n if (hook) {\n if (options.functional) {\n options._injectStyles = hook;\n var originalRender = options.render;\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst _sfc_main$1 = {\n name: \"CollectionListItem\",\n components: {\n NcAvatar,\n NcActions,\n NcActionButton\n },\n props: {\n collection: {\n type: Object,\n default: null\n }\n },\n data() {\n return {\n detailsOpen: false,\n newName: null,\n error: {}\n };\n },\n computed: {\n getIcon() {\n return (resource) => [resource.iconClass];\n },\n typeClass() {\n return (resource) => \"resource-type-\" + resource.type;\n },\n limitedResources() {\n return (collection) => collection.resources ? collection.resources.slice(0, 2) : [];\n },\n iconUrl() {\n return (resource) => {\n if (resource.mimetype) {\n return OC.MimeType.getIconUrl(resource.mimetype);\n }\n if (resource.iconUrl) {\n return resource.iconUrl;\n }\n return \"\";\n };\n }\n },\n methods: {\n t,\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = true;\n },\n hideDetails() {\n this.detailsOpen = false;\n },\n removeResource(collection, resource) {\n actions.removeResource({\n collectionId: collection.id,\n resourceType: resource.type,\n resourceId: resource.id\n });\n },\n openRename() {\n this.newName = this.collection.name;\n },\n renameCollection() {\n if (this.newName === \"\") {\n this.newName = null;\n return;\n }\n actions.renameCollection({\n collectionId: this.collection.id,\n name: this.newName\n }).then((collection) => {\n this.newName = null;\n }).catch((e) => {\n this.$set(this.error, \"rename\", t(\"core\", \"Failed to rename the project\"));\n console.error(e);\n setTimeout(() => {\n set(this.error, \"rename\", null);\n }, 3e3);\n });\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"collection-list-item\" }, [_c(\"NcAvatar\", { staticClass: \"collection-avatar\", attrs: { \"display-name\": _vm.collection.name, \"allow-placeholder\": \"\" } }), _vm.newName === null ? _c(\"span\", { staticClass: \"collection-item-name\", attrs: { \"title\": \"\" }, on: { \"click\": _vm.showDetails } }, [_vm._v(_vm._s(_vm.collection.name))]) : _c(\"form\", { class: { \"shouldshake\": _vm.error.rename }, on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.renameCollection.apply(null, arguments);\n } } }, [_c(\"input\", { directives: [{ name: \"model\", rawName: \"v-model\", value: _vm.newName, expression: \"newName\" }], attrs: { \"type\": \"text\", \"autocomplete\": \"off\", \"autocapitalize\": \"off\" }, domProps: { \"value\": _vm.newName }, on: { \"input\": function($event) {\n if ($event.target.composing) return;\n _vm.newName = $event.target.value;\n } } }), _c(\"input\", { staticClass: \"icon-confirm\", attrs: { \"type\": \"submit\", \"value\": \"\" } })]), !_vm.detailsOpen && _vm.newName === null ? _c(\"div\", { staticClass: \"linked-icons\" }, _vm._l(_vm.limitedResources(_vm.collection), function(resource) {\n return _c(\"a\", { key: resource.type + \"|\" + resource.id, class: _vm.typeClass(resource), attrs: { \"title\": resource.name, \"href\": resource.link } }, [_c(\"img\", { attrs: { \"src\": _vm.iconUrl(resource) } })]);\n }), 0) : _vm._e(), _vm.newName === null ? _c(\"span\", { staticClass: \"sharingOptionsGroup\" }, [_c(\"NcActions\", [_c(\"NcActionButton\", { attrs: { \"icon\": \"icon-info\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.toggleDetails.apply(null, arguments);\n } } }, [_vm._v(\" \" + _vm._s(_vm.detailsOpen ? _vm.t(\"core\", \"Hide details\") : _vm.t(\"core\", \"Show details\")) + \" \")]), _c(\"NcActionButton\", { attrs: { \"icon\": \"icon-rename\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.openRename.apply(null, arguments);\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"core\", \"Rename project\")) + \" \")])], 1)], 1) : _vm._e(), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.error.rename ? _c(\"div\", { staticClass: \"error\" }, [_vm._v(\" \" + _vm._s(_vm.error.rename) + \" \")]) : _vm._e()]), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.detailsOpen ? _c(\"ul\", { staticClass: \"resource-list-details\" }, _vm._l(_vm.collection.resources, function(resource) {\n return _c(\"li\", { key: resource.type + \"|\" + resource.id, class: _vm.typeClass(resource) }, [_c(\"a\", { attrs: { \"href\": resource.link } }, [_c(\"img\", { attrs: { \"src\": _vm.iconUrl(resource) } }), _c(\"span\", { staticClass: \"resource-name\" }, [_vm._v(_vm._s(resource.name || \"\"))])]), _c(\"span\", { staticClass: \"icon-close\", on: { \"click\": function($event) {\n return _vm.removeResource(_vm.collection, resource);\n } } })]);\n }), 0) : _vm._e()])], 1);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"42733c12\",\n null,\n null\n);\nconst CollectionListItem = __component__$1.exports;\nconst METHOD_CREATE_COLLECTION = 0;\nconst METHOD_ADD_TO_COLLECTION = 1;\nconst _debouncedSearch = debounce(\n function(query, loading) {\n if (query !== \"\") {\n loading(true);\n actions.search(query).then((collections) => {\n this.searchCollections = collections;\n }).catch((e) => {\n console.error(\"Failed to search for collections\", e);\n }).finally(() => {\n loading(false);\n });\n }\n },\n 500,\n {}\n);\nconst _sfc_main = {\n name: \"CollectionList\",\n components: {\n CollectionListItem,\n NcAvatar,\n NcSelect\n },\n props: {\n /**\n * Resource type identifier\n */\n type: {\n type: String,\n default: null\n },\n /**\n * Unique id of the resource\n */\n id: {\n type: String,\n default: null\n },\n /**\n * Name of the resource\n */\n name: {\n type: String,\n default: \"\"\n },\n isActive: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n return {\n state\n };\n },\n data() {\n return {\n selectIsOpen: false,\n generatingCodes: false,\n codes: void 0,\n value: null,\n model: {},\n searchCollections: [],\n error: null,\n isSelectOpen: false\n };\n },\n computed: {\n collections() {\n return this.state.collections.filter((collection) => {\n return typeof collection.resources.find((resource) => resource && resource.id === \"\" + this.id && resource.type === this.type) !== \"undefined\";\n });\n },\n placeholder() {\n return this.isSelectOpen ? t(\"core\", \"Type to search for existing projects\") : t(\"core\", \"Add to a project\");\n },\n options() {\n const options = [];\n window.OCP.Collaboration.getTypes().sort().forEach((type) => {\n options.push({\n method: METHOD_CREATE_COLLECTION,\n type,\n title: window.OCP.Collaboration.getLabel(type),\n class: window.OCP.Collaboration.getIcon(type),\n action: () => window.OCP.Collaboration.trigger(type)\n });\n });\n for (const index in this.searchCollections) {\n if (this.collections.findIndex((collection) => collection.id === this.searchCollections[index].id) === -1) {\n options.push({\n method: METHOD_ADD_TO_COLLECTION,\n title: this.searchCollections[index].name,\n collectionId: this.searchCollections[index].id\n });\n }\n }\n return options;\n }\n },\n watch: {\n type() {\n if (this.isActive) {\n actions.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n }\n },\n id() {\n if (this.isActive) {\n actions.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n }\n },\n isActive(isActive) {\n if (isActive) {\n actions.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n }\n }\n },\n mounted() {\n actions.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n },\n methods: {\n t,\n select(selectedOption, id) {\n if (selectedOption.method === METHOD_CREATE_COLLECTION) {\n selectedOption.action().then((id2) => {\n actions.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: selectedOption.type,\n resourceId: id2,\n name: this.name\n }).catch((e) => {\n this.setError(t(\"core\", \"Failed to create a project\"), e);\n });\n }).catch((e) => {\n console.error(\"No resource selected\", e);\n });\n }\n if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n actions.addResourceToCollection({\n collectionId: selectedOption.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((e) => {\n this.setError(t(\"core\", \"Failed to add the item to the project\"), e);\n });\n }\n },\n search(query, loading) {\n _debouncedSearch.bind(this)(query, loading);\n },\n showSelect() {\n this.selectIsOpen = true;\n this.$refs.select.$el.focus();\n },\n hideSelect() {\n this.selectIsOpen = false;\n },\n isVueComponent(object) {\n return object._isVue;\n },\n setError(error, e) {\n console.error(error, e);\n this.error = error;\n setTimeout(() => {\n this.error = null;\n }, 5e3);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _vm.collections && _vm.type && _vm.id ? _c(\"ul\", { staticClass: \"collection-list\", attrs: { \"id\": \"collection-list\" } }, [_c(\"li\", { on: { \"click\": _vm.showSelect } }, [_vm._m(0), _c(\"div\", { attrs: { \"id\": \"collection-select-container\" } }, [_c(\"NcSelect\", { ref: \"select\", attrs: { \"aria-label-combobox\": _vm.t(\"core\", \"Add to a project\"), \"options\": _vm.options, \"placeholder\": _vm.placeholder, \"label\": \"title\", \"limit\": 5 }, on: { \"close\": function($event) {\n _vm.isSelectOpen = false;\n }, \"open\": function($event) {\n _vm.isSelectOpen = true;\n }, \"option:selected\": _vm.select, \"search\": _vm.search }, scopedSlots: _vm._u([{ key: \"selected-option\", fn: function(option) {\n return [_c(\"span\", { staticClass: \"option__desc\" }, [_c(\"span\", { staticClass: \"option__title\" }, [_vm._v(_vm._s(option.title))])])];\n } }, { key: \"option\", fn: function(option) {\n return [_c(\"span\", { staticClass: \"option__wrapper\" }, [option.class ? _c(\"span\", { staticClass: \"avatar\", class: option.class }) : option.method !== 2 ? _c(\"NcAvatar\", { attrs: { \"allow-placeholder\": \"\", \"display-name\": option.title } }) : _vm._e(), _c(\"span\", { staticClass: \"option__title\" }, [_vm._v(_vm._s(option.title))])], 1)];\n } }], null, false, 2397208459), model: { value: _vm.value, callback: function($$v) {\n _vm.value = $$v;\n }, expression: \"value\" } }, [_c(\"p\", { staticClass: \"hint\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"core\", \"Connect items to a project to make them easier to find\")) + \" \")])])], 1)]), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.error ? _c(\"li\", { staticClass: \"error\" }, [_vm._v(\" \" + _vm._s(_vm.error) + \" \")]) : _vm._e()]), _vm._l(_vm.collections, function(collection) {\n return _c(\"CollectionListItem\", { key: collection.id, attrs: { \"collection\": collection } });\n })], 2) : _vm._e();\n};\nvar _sfc_staticRenderFns = [function() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"avatar\" }, [_c(\"span\", { staticClass: \"icon-projects\" })]);\n}];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"8ebb2593\",\n null,\n null\n);\nconst CollectionList = __component__.exports;\nexport {\n CollectionList,\n CollectionListItem\n};\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCapabilities } from '@nextcloud/capabilities';\nexport default class Config {\n _capabilities;\n constructor() {\n this._capabilities = getCapabilities();\n }\n /**\n * Get default share permissions, if any\n */\n get defaultPermissions() {\n return this._capabilities.files_sharing?.default_permissions;\n }\n /**\n * Is public upload allowed on link shares ?\n * This covers File request and Full upload/edit option.\n */\n get isPublicUploadEnabled() {\n return this._capabilities.files_sharing?.public?.upload === true;\n }\n /**\n * Get the federated sharing documentation link\n */\n get federatedShareDocLink() {\n return window.OC.appConfig.core.federatedCloudShareDoc;\n }\n /**\n * Get the default link share expiration date\n */\n get defaultExpirationDate() {\n if (this.isDefaultExpireDateEnabled && this.defaultExpireDate !== null) {\n return new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate));\n }\n return null;\n }\n /**\n * Get the default internal expiration date\n */\n get defaultInternalExpirationDate() {\n if (this.isDefaultInternalExpireDateEnabled && this.defaultInternalExpireDate !== null) {\n return new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate));\n }\n return null;\n }\n /**\n * Get the default remote expiration date\n */\n get defaultRemoteExpirationDateString() {\n if (this.isDefaultRemoteExpireDateEnabled && this.defaultRemoteExpireDate !== null) {\n return new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate));\n }\n return null;\n }\n /**\n * Are link shares password-enforced ?\n */\n get enforcePasswordForPublicLink() {\n return window.OC.appConfig.core.enforcePasswordForPublicLink === true;\n }\n /**\n * Is password asked by default on link shares ?\n */\n get enableLinkPasswordByDefault() {\n return window.OC.appConfig.core.enableLinkPasswordByDefault === true;\n }\n /**\n * Is link shares expiration enforced ?\n */\n get isDefaultExpireDateEnforced() {\n return window.OC.appConfig.core.defaultExpireDateEnforced === true;\n }\n /**\n * Is there a default expiration date for new link shares ?\n */\n get isDefaultExpireDateEnabled() {\n return window.OC.appConfig.core.defaultExpireDateEnabled === true;\n }\n /**\n * Is internal shares expiration enforced ?\n */\n get isDefaultInternalExpireDateEnforced() {\n return window.OC.appConfig.core.defaultInternalExpireDateEnforced === true;\n }\n /**\n * Is there a default expiration date for new internal shares ?\n */\n get isDefaultInternalExpireDateEnabled() {\n return window.OC.appConfig.core.defaultInternalExpireDateEnabled === true;\n }\n /**\n * Is remote shares expiration enforced ?\n */\n get isDefaultRemoteExpireDateEnforced() {\n return window.OC.appConfig.core.defaultRemoteExpireDateEnforced === true;\n }\n /**\n * Is there a default expiration date for new remote shares ?\n */\n get isDefaultRemoteExpireDateEnabled() {\n return window.OC.appConfig.core.defaultRemoteExpireDateEnabled === true;\n }\n /**\n * Are users on this server allowed to send shares to other servers ?\n */\n get isRemoteShareAllowed() {\n return window.OC.appConfig.core.remoteShareAllowed === true;\n }\n /**\n * Is public sharing enabled ?\n */\n get isPublicShareAllowed() {\n return this._capabilities?.files_sharing?.public?.enabled === true;\n }\n /**\n * Is sharing my mail (link share) enabled ?\n */\n get isMailShareAllowed() {\n // eslint-disable-next-line camelcase\n return this._capabilities?.files_sharing?.sharebymail?.enabled === true\n // eslint-disable-next-line camelcase\n && this.isPublicShareAllowed === true;\n }\n /**\n * Get the default days to link shares expiration\n */\n get defaultExpireDate() {\n return window.OC.appConfig.core.defaultExpireDate;\n }\n /**\n * Get the default days to internal shares expiration\n */\n get defaultInternalExpireDate() {\n return window.OC.appConfig.core.defaultInternalExpireDate;\n }\n /**\n * Get the default days to remote shares expiration\n */\n get defaultRemoteExpireDate() {\n return window.OC.appConfig.core.defaultRemoteExpireDate;\n }\n /**\n * Is resharing allowed ?\n */\n get isResharingAllowed() {\n return window.OC.appConfig.core.resharingAllowed === true;\n }\n /**\n * Is password enforced for mail shares ?\n */\n get isPasswordForMailSharesRequired() {\n return this._capabilities.files_sharing?.sharebymail?.password?.enforced === true;\n }\n /**\n * Always show the email or userid unique sharee label if enabled by the admin\n */\n get shouldAlwaysShowUnique() {\n return this._capabilities.files_sharing?.sharee?.always_show_unique === true;\n }\n /**\n * Is sharing with groups allowed ?\n */\n get allowGroupSharing() {\n return window.OC.appConfig.core.allowGroupSharing === true;\n }\n /**\n * Get the maximum results of a share search\n */\n get maxAutocompleteResults() {\n return parseInt(window.OC.config['sharing.maxAutocompleteResults'], 10) || 25;\n }\n /**\n * Get the minimal string length\n * to initiate a share search\n */\n get minSearchStringLength() {\n return parseInt(window.OC.config['sharing.minSearchStringLength'], 10) || 0;\n }\n /**\n * Get the password policy configuration\n */\n get passwordPolicy() {\n return this._capabilities?.password_policy || {};\n }\n /**\n * Returns true if custom tokens are allowed\n */\n get allowCustomTokens() {\n return this._capabilities?.files_sharing?.public?.custom_tokens;\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { isFileRequest } from '../services/SharingService';\nexport default class Share {\n _share;\n /**\n * Create the share object\n *\n * @param {object} ocsData ocs request response\n */\n constructor(ocsData) {\n if (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n ocsData = ocsData.ocs.data[0];\n }\n // string to int\n if (typeof ocsData.id === 'string') {\n ocsData.id = Number.parseInt(ocsData.id);\n }\n // convert int into boolean\n ocsData.hide_download = !!ocsData.hide_download;\n ocsData.mail_send = !!ocsData.mail_send;\n if (ocsData.attributes && typeof ocsData.attributes === 'string') {\n try {\n ocsData.attributes = JSON.parse(ocsData.attributes);\n }\n catch (e) {\n console.warn('Could not parse share attributes returned by server', ocsData.attributes);\n }\n }\n ocsData.attributes = ocsData.attributes ?? [];\n // store state\n this._share = ocsData;\n }\n /**\n * Get the share state\n * ! used for reactivity purpose\n * Do not remove. It allow vuejs to\n * inject its watchers into the #share\n * state and make the whole class reactive\n *\n * @return {object} the share raw state\n */\n get state() {\n return this._share;\n }\n /**\n * get the share id\n */\n get id() {\n return this._share.id;\n }\n /**\n * Get the share type\n */\n get type() {\n return this._share.share_type;\n }\n /**\n * Get the share permissions\n * See window.OC.PERMISSION_* variables\n */\n get permissions() {\n return this._share.permissions;\n }\n /**\n * Get the share attributes\n */\n get attributes() {\n return this._share.attributes || [];\n }\n /**\n * Set the share permissions\n * See window.OC.PERMISSION_* variables\n */\n set permissions(permissions) {\n this._share.permissions = permissions;\n }\n // SHARE OWNER --------------------------------------------------\n /**\n * Get the share owner uid\n */\n get owner() {\n return this._share.uid_owner;\n }\n /**\n * Get the share owner's display name\n */\n get ownerDisplayName() {\n return this._share.displayname_owner;\n }\n // SHARED WITH --------------------------------------------------\n /**\n * Get the share with entity uid\n */\n get shareWith() {\n return this._share.share_with;\n }\n /**\n * Get the share with entity display name\n * fallback to its uid if none\n */\n get shareWithDisplayName() {\n return this._share.share_with_displayname\n || this._share.share_with;\n }\n /**\n * Unique display name in case of multiple\n * duplicates results with the same name.\n */\n get shareWithDisplayNameUnique() {\n return this._share.share_with_displayname_unique\n || this._share.share_with;\n }\n /**\n * Get the share with entity link\n */\n get shareWithLink() {\n return this._share.share_with_link;\n }\n /**\n * Get the share with avatar if any\n */\n get shareWithAvatar() {\n return this._share.share_with_avatar;\n }\n // SHARED FILE OR FOLDER OWNER ----------------------------------\n /**\n * Get the shared item owner uid\n */\n get uidFileOwner() {\n return this._share.uid_file_owner;\n }\n /**\n * Get the shared item display name\n * fallback to its uid if none\n */\n get displaynameFileOwner() {\n return this._share.displayname_file_owner\n || this._share.uid_file_owner;\n }\n // TIME DATA ----------------------------------------------------\n /**\n * Get the share creation timestamp\n */\n get createdTime() {\n return this._share.stime;\n }\n /**\n * Get the expiration date\n * @return {string} date with YYYY-MM-DD format\n */\n get expireDate() {\n return this._share.expiration;\n }\n /**\n * Set the expiration date\n * @param {string} date the share expiration date with YYYY-MM-DD format\n */\n set expireDate(date) {\n this._share.expiration = date;\n }\n // EXTRA DATA ---------------------------------------------------\n /**\n * Get the public share token\n */\n get token() {\n return this._share.token;\n }\n /**\n * Set the public share token\n */\n set token(token) {\n this._share.token = token;\n }\n /**\n * Get the share note if any\n */\n get note() {\n return this._share.note;\n }\n /**\n * Set the share note if any\n */\n set note(note) {\n this._share.note = note;\n }\n /**\n * Get the share label if any\n * Should only exist on link shares\n */\n get label() {\n return this._share.label ?? '';\n }\n /**\n * Set the share label if any\n * Should only be set on link shares\n */\n set label(label) {\n this._share.label = label;\n }\n /**\n * Have a mail been sent\n */\n get mailSend() {\n return this._share.mail_send === true;\n }\n /**\n * Hide the download button on public page\n */\n get hideDownload() {\n return this._share.hide_download === true\n || this.attributes.find?.(({ scope, key, value }) => scope === 'permissions' && key === 'download' && !value) !== undefined;\n }\n /**\n * Hide the download button on public page\n */\n set hideDownload(state) {\n this._share.hide_download = state === true;\n }\n /**\n * Password protection of the share\n */\n get password() {\n return this._share.password;\n }\n /**\n * Password protection of the share\n */\n set password(password) {\n this._share.password = password;\n }\n /**\n * Password expiration time\n * @return {string} date with YYYY-MM-DD format\n */\n get passwordExpirationTime() {\n return this._share.password_expiration_time;\n }\n /**\n * Password expiration time\n * @param {string} passwordExpirationTime date with YYYY-MM-DD format\n */\n set passwordExpirationTime(passwordExpirationTime) {\n this._share.password_expiration_time = passwordExpirationTime;\n }\n /**\n * Password protection by Talk of the share\n */\n get sendPasswordByTalk() {\n return this._share.send_password_by_talk;\n }\n /**\n * Password protection by Talk of the share\n *\n * @param {boolean} sendPasswordByTalk whether to send the password by Talk or not\n */\n set sendPasswordByTalk(sendPasswordByTalk) {\n this._share.send_password_by_talk = sendPasswordByTalk;\n }\n // SHARED ITEM DATA ---------------------------------------------\n /**\n * Get the shared item absolute full path\n */\n get path() {\n return this._share.path;\n }\n /**\n * Return the item type: file or folder\n * @return {string} 'folder' | 'file'\n */\n get itemType() {\n return this._share.item_type;\n }\n /**\n * Get the shared item mimetype\n */\n get mimetype() {\n return this._share.mimetype;\n }\n /**\n * Get the shared item id\n */\n get fileSource() {\n return this._share.file_source;\n }\n /**\n * Get the target path on the receiving end\n * e.g the file /xxx/aaa will be shared in\n * the receiving root as /aaa, the fileTarget is /aaa\n */\n get fileTarget() {\n return this._share.file_target;\n }\n /**\n * Get the parent folder id if any\n */\n get fileParent() {\n return this._share.file_parent;\n }\n // PERMISSIONS Shortcuts\n /**\n * Does this share have READ permissions\n */\n get hasReadPermission() {\n return !!((this.permissions & window.OC.PERMISSION_READ));\n }\n /**\n * Does this share have CREATE permissions\n */\n get hasCreatePermission() {\n return !!((this.permissions & window.OC.PERMISSION_CREATE));\n }\n /**\n * Does this share have DELETE permissions\n */\n get hasDeletePermission() {\n return !!((this.permissions & window.OC.PERMISSION_DELETE));\n }\n /**\n * Does this share have UPDATE permissions\n */\n get hasUpdatePermission() {\n return !!((this.permissions & window.OC.PERMISSION_UPDATE));\n }\n /**\n * Does this share have SHARE permissions\n */\n get hasSharePermission() {\n return !!((this.permissions & window.OC.PERMISSION_SHARE));\n }\n /**\n * Does this share have download permissions\n */\n get hasDownloadPermission() {\n const hasDisabledDownload = (attribute) => {\n return attribute.scope === 'permissions' && attribute.key === 'download' && attribute.value === false;\n };\n return this.attributes.some(hasDisabledDownload);\n }\n /**\n * Is this mail share a file request ?\n */\n get isFileRequest() {\n return isFileRequest(JSON.stringify(this.attributes));\n }\n set hasDownloadPermission(enabled) {\n this.setAttribute('permissions', 'download', !!enabled);\n }\n setAttribute(scope, key, value) {\n const attrUpdate = {\n scope,\n key,\n value,\n };\n // try and replace existing\n for (const i in this._share.attributes) {\n const attr = this._share.attributes[i];\n if (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n this._share.attributes.splice(i, 1, attrUpdate);\n return;\n }\n }\n this._share.attributes.push(attrUpdate);\n }\n // PERMISSIONS Shortcuts for the CURRENT USER\n // ! the permissions above are the share settings,\n // ! meaning the permissions for the recipient\n /**\n * Can the current user EDIT this share ?\n */\n get canEdit() {\n return this._share.can_edit === true;\n }\n /**\n * Can the current user DELETE this share ?\n */\n get canDelete() {\n return this._share.can_delete === true;\n }\n /**\n * Top level accessible shared folder fileid for the current user\n */\n get viaFileid() {\n return this._share.via_fileid;\n }\n /**\n * Top level accessible shared folder path for the current user\n */\n get viaPath() {\n return this._share.via_path;\n }\n // TODO: SORT THOSE PROPERTIES\n get parent() {\n return this._share.parent;\n }\n get storageId() {\n return this._share.storage_id;\n }\n get storage() {\n return this._share.storage;\n }\n get itemSource() {\n return this._share.item_source;\n }\n get status() {\n return this._share.status;\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n// TODO: Fix this instead of disabling ESLint!!!\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { Folder, File, Permission, davRemoteURL, davRootPath } from '@nextcloud/files';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport axios from '@nextcloud/axios';\nimport logger from './logger';\nconst headers = {\n 'Content-Type': 'application/json',\n};\nconst ocsEntryToNode = async function (ocsEntry) {\n try {\n // Federated share handling\n if (ocsEntry?.remote_id !== undefined) {\n if (!ocsEntry.mimetype) {\n const mime = (await import('mime')).default;\n // This won't catch files without an extension, but this is the best we can do\n ocsEntry.mimetype = mime.getType(ocsEntry.name);\n }\n ocsEntry.item_type = ocsEntry.type || (ocsEntry.mimetype ? 'file' : 'folder');\n // different naming for remote shares\n ocsEntry.item_mtime = ocsEntry.mtime;\n ocsEntry.file_target = ocsEntry.file_target || ocsEntry.mountpoint;\n if (ocsEntry.file_target.includes('TemporaryMountPointName')) {\n ocsEntry.file_target = ocsEntry.name;\n }\n // If the share is not accepted yet we don't know which permissions it will have\n if (!ocsEntry.accepted) {\n // Need to set permissions to NONE for federated shares\n ocsEntry.item_permissions = Permission.NONE;\n ocsEntry.permissions = Permission.NONE;\n }\n ocsEntry.uid_owner = ocsEntry.owner;\n // TODO: have the real display name stored somewhere\n ocsEntry.displayname_owner = ocsEntry.owner;\n }\n const isFolder = ocsEntry?.item_type === 'folder';\n const hasPreview = ocsEntry?.has_preview === true;\n const Node = isFolder ? Folder : File;\n // If this is an external share that is not yet accepted,\n // we don't have an id. We can fallback to the row id temporarily\n // local shares (this server) use `file_source`, but remote shares (federated) use `file_id`\n const fileid = ocsEntry.file_source || ocsEntry.file_id || ocsEntry.id;\n // Generate path and strip double slashes\n const path = ocsEntry.path || ocsEntry.file_target || ocsEntry.name;\n const source = `${davRemoteURL}${davRootPath}/${path.replace(/^\\/+/, '')}`;\n let mtime = ocsEntry.item_mtime ? new Date((ocsEntry.item_mtime) * 1000) : undefined;\n // Prefer share time if more recent than item mtime\n if (ocsEntry?.stime > (ocsEntry?.item_mtime || 0)) {\n mtime = new Date((ocsEntry.stime) * 1000);\n }\n let sharees;\n if ('share_with' in ocsEntry) {\n sharees = {\n sharee: {\n id: ocsEntry.share_with,\n 'display-name': ocsEntry.share_with_displayname || ocsEntry.share_with,\n type: ocsEntry.share_type,\n },\n };\n }\n return new Node({\n id: fileid,\n source,\n owner: ocsEntry?.uid_owner,\n mime: ocsEntry?.mimetype || 'application/octet-stream',\n mtime,\n size: ocsEntry?.item_size,\n permissions: ocsEntry?.item_permissions || ocsEntry?.permissions,\n root: davRootPath,\n attributes: {\n ...ocsEntry,\n 'has-preview': hasPreview,\n // Also check the sharingStatusAction.ts code\n 'owner-id': ocsEntry?.uid_owner,\n 'owner-display-name': ocsEntry?.displayname_owner,\n 'share-types': ocsEntry?.share_type,\n 'share-attributes': ocsEntry?.attributes || '[]',\n sharees,\n favorite: ocsEntry?.tags?.includes(window.OC.TAG_FAVORITE) ? 1 : 0,\n },\n });\n }\n catch (error) {\n logger.error('Error while parsing OCS entry', { error });\n return null;\n }\n};\nconst getShares = function (shareWithMe = false) {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares');\n return axios.get(url, {\n headers,\n params: {\n shared_with_me: shareWithMe,\n include_tags: true,\n },\n });\n};\nconst getSharedWithYou = function () {\n return getShares(true);\n};\nconst getSharedWithOthers = function () {\n return getShares();\n};\nconst getRemoteShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getPendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getRemotePendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getDeletedShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\n/**\n * Check if a file request is enabled\n * @param attributes the share attributes json-encoded array\n */\nexport const isFileRequest = (attributes = '[]') => {\n const isFileRequest = (attribute) => {\n return attribute.scope === 'fileRequest' && attribute.key === 'enabled' && attribute.value === true;\n };\n try {\n const attributesArray = JSON.parse(attributes);\n return attributesArray.some(isFileRequest);\n }\n catch (error) {\n logger.error('Error while parsing share attributes', { error });\n return false;\n }\n};\n/**\n * Group an array of objects (here Nodes) by a key\n * and return an array of arrays of them.\n * @param nodes Nodes to group\n * @param key The attribute to group by\n */\nconst groupBy = function (nodes, key) {\n return Object.values(nodes.reduce(function (acc, curr) {\n (acc[curr[key]] = acc[curr[key]] || []).push(curr);\n return acc;\n }, {}));\n};\nexport const getContents = async (sharedWithYou = true, sharedWithOthers = true, pendingShares = false, deletedshares = false, filterTypes = []) => {\n const promises = [];\n if (sharedWithYou) {\n promises.push(getSharedWithYou(), getRemoteShares());\n }\n if (sharedWithOthers) {\n promises.push(getSharedWithOthers());\n }\n if (pendingShares) {\n promises.push(getPendingShares(), getRemotePendingShares());\n }\n if (deletedshares) {\n promises.push(getDeletedShares());\n }\n const responses = await Promise.all(promises);\n const data = responses.map((response) => response.data.ocs.data).flat();\n let contents = (await Promise.all(data.map(ocsEntryToNode)))\n .filter((node) => node !== null);\n if (filterTypes.length > 0) {\n contents = contents.filter((node) => filterTypes.includes(node.attributes?.share_type));\n }\n // Merge duplicate shares and group their attributes\n // Also check the sharingStatusAction.ts code\n contents = groupBy(contents, 'source').map((nodes) => {\n const node = nodes[0];\n node.attributes['share-types'] = nodes.map(node => node.attributes['share-types']);\n return node;\n });\n return {\n folder: new Folder({\n id: 0,\n source: `${davRemoteURL}${davRootPath}`,\n owner: getCurrentUser()?.uid || null,\n }),\n contents,\n };\n};\n","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('NcActionButton',{attrs:{\"title\":_vm.copyLinkTooltip,\"aria-label\":_vm.copyLinkTooltip},on:{\"click\":_vm.copyLink},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.copied && _vm.copySuccess)?_c('CheckIcon',{staticClass:\"icon-checkmark-color\",attrs:{\"size\":20}}):_c('ClipboardIcon',{attrs:{\"size\":20}})]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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 v-if=\"$slots['default']\"\n\t\t\tref=\"actionsComponent\"\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/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\tpadding-inline-start: 10px;\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-inline-start: auto !important;\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!./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 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=44339fa4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=44339fa4&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=44339fa4&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=44339fa4&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 \"44339fa4\",\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 }","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 - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\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<NcActionButton :title=\"copyLinkTooltip\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t@click=\"copyLink\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CheckIcon v-if=\"copied && copySuccess\"\n\t\t\t\t\t\t:size=\"20\"\n\t\t\t\t\t\tclass=\"icon-checkmark-color\" />\n\t\t\t\t\t<ClipboardIcon v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcActionButton>\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showSuccess } from '@nextcloud/dialogs'\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\n\nimport CheckIcon from 'vue-material-design-icons/Check.vue'\nimport ClipboardIcon from 'vue-material-design-icons/ContentCopy.vue'\n\nimport SharingEntrySimple from './SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tSharingEntrySimple,\n\t\tCheckIcon,\n\t\tClipboardIcon,\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 people with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for people 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\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\tcolor: var(--color-success);\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!./SharingEntryInternal.vue?vue&type=style&index=0&id=57874406&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=57874406&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=57874406&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=57874406&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 \"57874406\",\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',{staticClass:\"hidden-visually\",attrs:{\"for\":_vm.shareInputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.isExternal ? _vm.t('files_sharing', 'Enter external recipients')\n\t\t\t: _vm.t('files_sharing', 'Search for internal recipients'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",staticClass:\"sharing-search__input\",attrs:{\"input-id\":_vm.shareInputId,\"disabled\":!_vm.canReshare,\"loading\":_vm.loading,\"filterable\":false,\"placeholder\":_vm.inputPlaceholder,\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options,\"label-outside\":true},on:{\"search\":_vm.asyncFind,\"option:selected\":_vm.onSelected},scopedSlots:_vm._u([{key:\"no-options\",fn:function({ search }){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(search ? _vm.noResultText : _vm.placeholder)+\"\\n\\t\\t\")]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { emit } from '@nextcloud/event-bus'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share.ts'\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] 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] 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] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate] expire the share automatically after\n\t\t * @param {string} [data.label] custom label\n\t\t * @param {string} [data.attributes] Share attributes encoded as json\n\t\t * @param {string} data.note custom note to recipient\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, note, attributes }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, note, 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\tconst share = new Share(request.data.ocs.data)\n\t\t\t\temit('files_sharing:share:created', { share })\n\t\t\t\treturn share\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\tshowError(\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\temit('files_sharing:share:deleted', { id })\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\temit('files_sharing:share:updated', { id })\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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Share from '../models/Share.ts'\nimport Config from '../services/ConfigService.ts'\n\nexport default {\n\tmethods: {\n\t\tasync openSharingDetails(shareRequestObject) {\n\t\t\tlet share = {}\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\t// TODO : Better name/interface for handler required\n\t\t\t// For example `externalAppCreateShareHook` with proper documentation\n\t\t\tif (shareRequestObject.handler) {\n\t\t\t\tconst handlerInput = {}\n\t\t\t\tif (this.suggestions) {\n\t\t\t\t\thandlerInput.suggestions = this.suggestions\n\t\t\t\t\thandlerInput.fileInfo = this.fileInfo\n\t\t\t\t\thandlerInput.query = this.query\n\t\t\t\t}\n\t\t\t\tconst externalShareRequestObject = await shareRequestObject.handler(handlerInput)\n\t\t\t\tshare = this.mapShareRequestToShareObject(externalShareRequestObject)\n\t\t\t} else {\n\t\t\t\tshare = this.mapShareRequestToShareObject(shareRequestObject)\n\t\t\t}\n\n\t\t\tconst shareDetails = {\n\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\tshare,\n\t\t\t}\n\n\t\t\tthis.$emit('open-sharing-details', shareDetails)\n\t\t},\n\t\topenShareDetailsForCustomSettings(share) {\n\t\t\tshare.setCustomPermissions = true\n\t\t\tthis.openSharingDetails(share)\n\t\t},\n\t\tmapShareRequestToShareObject(shareRequestObject) {\n\n\t\t\tif (shareRequestObject.id) {\n\t\t\t\treturn shareRequestObject\n\t\t\t}\n\n\t\t\tconst share = {\n\t\t\t\tattributes: [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\tkey: 'download',\n\t\t\t\t\t\tscope: 'permissions',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\thideDownload: false,\n\t\t\t\tshare_type: shareRequestObject.shareType,\n\t\t\t\tshare_with: shareRequestObject.shareWith,\n\t\t\t\tis_no_user: shareRequestObject.isNoUser,\n\t\t\t\tuser: shareRequestObject.shareWith,\n\t\t\t\tshare_with_displayname: shareRequestObject.displayName,\n\t\t\t\tsubtitle: shareRequestObject.subtitle,\n\t\t\t\tpermissions: shareRequestObject.permissions ?? new Config().defaultPermissions,\n\t\t\t\texpiration: '',\n\t\t\t}\n\n\t\t\treturn new Share(share)\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!./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 - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"sharing-search\">\n\t\t<label class=\"hidden-visually\" :for=\"shareInputId\">\n\t\t\t{{ isExternal ? t('files_sharing', 'Enter external recipients')\n\t\t\t\t: t('files_sharing', 'Search for internal recipients') }}\n\t\t</label>\n\t\t<NcSelect ref=\"select\"\n\t\t\tv-model=\"value\"\n\t\t\t:input-id=\"shareInputId\"\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\t:label-outside=\"true\"\n\t\t\t@search=\"asyncFind\"\n\t\t\t@option:selected=\"onSelected\">\n\t\t\t<template #no-options=\"{ search }\">\n\t\t\t\t{{ search ? noResultText : placeholder }}\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 { getCapabilities } from '@nextcloud/capabilities'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\n\nimport Config from '../services/ConfigService.ts'\nimport Share from '../models/Share.ts'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport { ShareType } from '@nextcloud/sharing'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tmixins: [ShareRequests, ShareDetails],\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\tisExternal: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tsetup() {\n\t\treturn {\n\t\t\tshareInputId: `share-input-${Math.random().toString(36).slice(2, 7)}`,\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\tif (this.placeholder) {\n\t\t\t\treturn this.placeholder\n\t\t\t}\n\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\tif (!this.isExternal) {\n\t\t\t// We can only recommend users, groups etc for internal shares\n\t\t\tthis.getRecommendations()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonSelected(option) {\n\t\t\tthis.value = null // Reset selected option\n\t\t\tthis.openSharingDetails(option)\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] 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 (getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tlet shareType = []\n\n\t\t\tif (this.isExternal) {\n\t\t\t\tshareType.push(ShareType.Remote)\n\t\t\t\tshareType.push(ShareType.RemoteGroup)\n\t\t\t} else {\n\t\t\t\t// Merge shareType array\n\t\t\t\tshareType = shareType.concat([\n\t\t\t\t\tShareType.User,\n\t\t\t\t\tShareType.Group,\n\t\t\t\t\tShareType.Team,\n\t\t\t\t\tShareType.Room,\n\t\t\t\t\tShareType.Guest,\n\t\t\t\t\tShareType.Deck,\n\t\t\t\t\tShareType.ScienceMesh,\n\t\t\t\t])\n\n\t\t\t}\n\n\t\t\tif (getCapabilities().files_sharing.public.enabled === true && this.isExternal) {\n\t\t\t\tshareType.push(ShareType.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 === ShareType.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 === ShareType.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 ShareType.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 ShareType.Remote:\n\t\t\t\t// case ShareType.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 ShareType.RemoteGroup:\n\t\t\tcase ShareType.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 ShareType.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 ShareType.Team:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-teams',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Team'),\n\t\t\t\t}\n\t\t\tcase ShareType.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 ShareType.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 ShareType.Sciencemesh:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-sciencemesh',\n\t\t\t\t\ticonTitle: t('files_sharing', 'ScienceMesh'),\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 subname\n\t\t\tif (result.value.shareType === ShareType.User && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubname = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === ShareType.Remote\n\t\t\t\t\t|| result.value.shareType === ShareType.RemoteGroup\n\t\t\t) && result.value.server) {\n\t\t\t\tsubname = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === ShareType.Email) {\n\t\t\t\tsubname = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubname = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\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 !== ShareType.User,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubname,\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\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\t.avatardiv__initials-wrapper {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=272b9f81&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=272b9f81&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=272b9f81\"\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=272b9f81&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 (_vm.shares.length)?_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}],null,false,1184892072)},[_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):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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\tALL_FILE: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.READ | 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 { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\nexport const fetchNode = async (path) => {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n};\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { ShareType } from '@nextcloud/sharing'\nimport { emit } from '@nextcloud/event-bus'\n\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share.ts'\nimport SharesRequests from './ShareRequests.js'\nimport Config from '../services/ConfigService.ts'\nimport logger from '../services/logger.ts'\n\nimport {\n\tBUNDLED_PERMISSIONS,\n} from '../lib/SharePermissionsToolBox.js'\nimport { fetchNode } from '../../../files/src/services/WebdavClient.ts'\n\nexport default {\n\tmixins: [SharesRequests],\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\t\t\tnode: null,\n\t\t\tShareType,\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\t\tpath() {\n\t\t\treturn (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t},\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\t\tisNewShare() {\n\t\t\treturn !this.share.id\n\t\t},\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\t\tisPublicShare() {\n\t\t\tconst shareType = this.share.shareType ?? this.share.type\n\t\t\treturn [ShareType.Link, ShareType.Email].includes(shareType)\n\t\t},\n\t\tisRemoteShare() {\n\t\t\treturn this.share.type === ShareType.RemoteGroup || this.share.type === ShareType.Remote\n\t\t},\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\t\tisExpiryDateEnforced() {\n\t\t\tif (this.isPublicShare) {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t}\n\t\t\tif (this.isRemoteShare) {\n\t\t\t\treturn this.config.isDefaultRemoteExpireDateEnforced\n\t\t\t}\n\t\t\treturn this.config.isDefaultInternalExpireDateEnforced\n\t\t},\n\t\thasCustomPermissions() {\n\t\t\tconst bundledPermissions = [\n\t\t\t\tBUNDLED_PERMISSIONS.ALL,\n\t\t\t\tBUNDLED_PERMISSIONS.READ_ONLY,\n\t\t\t\tBUNDLED_PERMISSIONS.FILE_DROP,\n\t\t\t]\n\t\t\treturn !bundledPermissions.includes(this.share.permissions)\n\t\t},\n\t\tmaxExpirationDateEnforced() {\n\t\t\tif (this.isExpiryDateEnforced) {\n\t\t\t\tif (this.isPublicShare) {\n\t\t\t\t\treturn this.config.defaultExpirationDate\n\t\t\t\t}\n\t\t\t\tif (this.isRemoteShare) {\n\t\t\t\t\treturn this.config.defaultRemoteExpirationDateString\n\t\t\t\t}\n\t\t\t\t// If it get's here then it must be an internal share\n\t\t\t\treturn this.config.defaultInternalExpirationDate\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Fetch WebDAV node\n\t\t *\n\t\t * @return {Node}\n\t\t */\n\t\tasync getNode() {\n\t\t\tconst node = { path: this.path }\n\t\t\ttry {\n\t\t\t\tthis.node = await fetchNode(node.path)\n\t\t\t\tlogger.info('Fetched node:', { node: this.node })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Error:', error)\n\t\t\t}\n\t\t},\n\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 {Date} date the date to format\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\tconst formattedDate = date ? this.formatDateToString(new Date(date)) : ''\n\t\t\tthis.share.expireDate = formattedDate\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\tawait this.getNode()\n\t\t\t\temit('files:node:updated', this.node)\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 (this.share[name] === null || this.share[name] === undefined) {\n\t\t\t\t\t\tproperties[name] = ''\n\t\t\t\t\t} else if ((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\treturn this.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(this.updateSuccessMessage(propertyNames))\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tlogger.error('Could not update share', { error, share: this.share, propertyNames })\n\n\t\t\t\t\t\tconst { message } = error\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(message)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// We do not have information what happened, but we should still inform the user\n\t\t\t\t\t\t\tshowError(t('files_sharing', 'Could not update share'))\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}\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 * @param {string[]} names Properties changed\n\t\t */\n\t\tupdateSuccessMessage(names) {\n\t\t\tif (names.length !== 1) {\n\t\t\t\treturn t('files_sharing', 'Share saved')\n\t\t\t}\n\n\t\t\tswitch (names[0]) {\n\t\t\tcase 'expireDate':\n\t\t\t\treturn t('files_sharing', 'Share expiry date saved')\n\t\t\tcase 'hideDownload':\n\t\t\t\treturn t('files_sharing', 'Share hide-download state saved')\n\t\t\tcase 'label':\n\t\t\t\treturn t('files_sharing', 'Share label saved')\n\t\t\tcase 'note':\n\t\t\t\treturn t('files_sharing', 'Share note for recipient saved')\n\t\t\tcase 'password':\n\t\t\t\treturn t('files_sharing', 'Share password saved')\n\t\t\tcase 'permissions':\n\t\t\t\treturn t('files_sharing', 'Share permissions saved')\n\t\t\tdefault:\n\t\t\t\treturn t('files_sharing', 'Share saved')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\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 - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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/components/NcAvatar'\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActionLink from '@nextcloud/vue/components/NcActionLink'\nimport NcActionText from '@nextcloud/vue/components/NcActionText'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\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\tpadding-inline-start: 10px;\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-inline-start: 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=fe8ed59e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=fe8ed59e&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=fe8ed59e&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=fe8ed59e&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 \"fe8ed59e\",\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 }","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 - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<ul v-if=\"shares.length\" 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/components/NcActionButton'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share.ts'\nimport SharingEntryInherited from '../components/SharingEntryInherited.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\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 accounts 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","\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=a6cc72e6&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=a6cc72e6&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=a6cc72e6&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=a6cc72e6&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 \"a6cc72e6\",\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\",attrs:{\"aria-label\":_vm.t('files_sharing', 'Link shares')}},[(!_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,\"open-sharing-details\":function($event){return _vm.openSharingDetails(share)}}})}):_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon tune-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TuneIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tune.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tune.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Tune.vue?vue&type=template&id=18d04e6a\"\nimport script from \"./Tune.vue?vue&type=script&lang=js\"\nexport * from \"./Tune.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon tune-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarBlank.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarBlank.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon calendar-blank-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CalendarBlankIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./CalendarBlank.vue?vue&type=template&id=41fe7db9\"\nimport script from \"./CalendarBlank.vue?vue&type=script&lang=js\"\nexport * from \"./CalendarBlank.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon calendar-blank-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Qrcode.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Qrcode.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon qrcode-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"QrcodeIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Qrcode.vue?vue&type=template&id=aba87788\"\nimport script from \"./Qrcode.vue?vue&type=script&lang=js\"\nexport * from \"./Qrcode.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon qrcode-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Exclamation.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Exclamation.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon exclamation-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M 11,4L 13,4L 13,15L 11,15L 11,4 Z M 13,18L 13,20L 11,20L 11,18L 13,18 Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ExclamationIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Exclamation.vue?vue&type=template&id=03239926\"\nimport script from \"./Exclamation.vue?vue&type=script&lang=js\"\nexport * from \"./Exclamation.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon exclamation-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M 11,4L 13,4L 13,15L 11,15L 11,4 Z M 13,18L 13,20L 11,20L 11,18L 13,18 Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Lock.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Lock.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon lock-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"LockIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Lock.vue?vue&type=template&id=6d856da2\"\nimport script from \"./Lock.vue?vue&type=script&lang=js\"\nexport * from \"./Lock.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon lock-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckBold.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckBold.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon check-bold-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CheckBoldIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./CheckBold.vue?vue&type=template&id=5603f41f\"\nimport script from \"./CheckBold.vue?vue&type=script&lang=js\"\nexport * from \"./CheckBold.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon check-bold-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon triangle-small-down-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M8 9H16L12 16\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TriangleSmallDownIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TriangleSmallDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TriangleSmallDown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TriangleSmallDown.vue?vue&type=template&id=1eed3dd9\"\nimport script from \"./TriangleSmallDown.vue?vue&type=script&lang=js\"\nexport * from \"./TriangleSmallDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon triangle-small-down-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M8 9H16L12 16\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./EyeOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./EyeOutline.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./EyeOutline.vue?vue&type=template&id=e26de6f6\"\nimport script from \"./EyeOutline.vue?vue&type=script&lang=js\"\nexport * from \"./EyeOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon eye-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon file-upload-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13.5,16V19H10.5V16H8L12,12L16,16H13.5M13,9V3.5L18.5,9H13Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FileUploadIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FileUpload.vue?vue&type=template&id=caa55e94\"\nimport script from \"./FileUpload.vue?vue&type=script&lang=js\"\nexport * from \"./FileUpload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon file-upload-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13.5,16V19H10.5V16H8L12,12L16,16H13.5M13,9V3.5L18.5,9H13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<NcActions ref=\"quickShareActions\"\n\t\tclass=\"share-select\"\n\t\t:menu-name=\"selectedOption\"\n\t\t:aria-label=\"ariaLabel\"\n\t\ttype=\"tertiary-no-background\"\n\t\t:disabled=\"!share.canEdit\"\n\t\tforce-name>\n\t\t<template #icon>\n\t\t\t<DropdownIcon :size=\"15\" />\n\t\t</template>\n\t\t<NcActionButton v-for=\"option in options\"\n\t\t\t:key=\"option.label\"\n\t\t\ttype=\"radio\"\n\t\t\t:model-value=\"option.label === selectedOption\"\n\t\t\tclose-after-click\n\t\t\t@click=\"selectOption(option.label)\">\n\t\t\t<template #icon>\n\t\t\t\t<component :is=\"option.icon\" />\n\t\t\t</template>\n\t\t\t{{ option.label }}\n\t\t</NcActionButton>\n\t</NcActions>\n</template>\n\n<script>\nimport { ShareType } from '@nextcloud/sharing'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport DropdownIcon from 'vue-material-design-icons/TriangleSmallDown.vue'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport NcActions from '@nextcloud/vue/components/NcActions'\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport IconEyeOutline from 'vue-material-design-icons/EyeOutline.vue'\nimport IconPencil from 'vue-material-design-icons/Pencil.vue'\nimport IconFileUpload from 'vue-material-design-icons/FileUpload.vue'\nimport IconTune from 'vue-material-design-icons/Tune.vue'\n\nimport {\n\tBUNDLED_PERMISSIONS,\n\tATOMIC_PERMISSIONS,\n} from '../lib/SharePermissionsToolBox.js'\n\nexport default {\n\tname: 'SharingEntryQuickShareSelect',\n\n\tcomponents: {\n\t\tDropdownIcon,\n\t\tNcActions,\n\t\tNcActionButton,\n\t},\n\n\tmixins: [SharesMixin, ShareDetails],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\temits: ['open-sharing-details'],\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedOption: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tariaLabel() {\n\t\t\treturn t('files_sharing', 'Quick share options, the current selected is \"{selectedOption}\"', { selectedOption: this.selectedOption })\n\t\t},\n\t\tcanViewText() {\n\t\t\treturn t('files_sharing', 'View only')\n\t\t},\n\t\tcanEditText() {\n\t\t\treturn t('files_sharing', 'Can edit')\n\t\t},\n\t\tfileDropText() {\n\t\t\treturn t('files_sharing', 'File request')\n\t\t},\n\t\tcustomPermissionsText() {\n\t\t\treturn t('files_sharing', 'Custom permissions')\n\t\t},\n\t\tpreSelectedOption() {\n\t\t\t// We remove the share permission for the comparison as it is not relevant for bundled permissions.\n\t\t\tif ((this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === BUNDLED_PERMISSIONS.READ_ONLY) {\n\t\t\t\treturn this.canViewText\n\t\t\t} else if (this.share.permissions === BUNDLED_PERMISSIONS.ALL || this.share.permissions === BUNDLED_PERMISSIONS.ALL_FILE) {\n\t\t\t\treturn this.canEditText\n\t\t\t} else if ((this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === BUNDLED_PERMISSIONS.FILE_DROP) {\n\t\t\t\treturn this.fileDropText\n\t\t\t}\n\n\t\t\treturn this.customPermissionsText\n\n\t\t},\n\t\toptions() {\n\t\t\tconst options = [{\n\t\t\t\tlabel: this.canViewText,\n\t\t\t\ticon: IconEyeOutline,\n\t\t\t}, {\n\t\t\t\tlabel: this.canEditText,\n\t\t\t\ticon: IconPencil,\n\t\t\t}]\n\t\t\tif (this.supportsFileDrop) {\n\t\t\t\toptions.push({\n\t\t\t\t\tlabel: this.fileDropText,\n\t\t\t\t\ticon: IconFileUpload,\n\t\t\t\t})\n\t\t\t}\n\t\t\toptions.push({\n\t\t\t\tlabel: this.customPermissionsText,\n\t\t\t\ticon: IconTune,\n\t\t\t})\n\n\t\t\treturn options\n\t\t},\n\t\tsupportsFileDrop() {\n\t\t\tif (this.isFolder && this.config.isPublicUploadEnabled) {\n\t\t\t\tconst shareType = this.share.type ?? this.share.shareType\n\t\t\t\treturn [ShareType.Link, ShareType.Email].includes(shareType)\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tdropDownPermissionValue() {\n\t\t\tswitch (this.selectedOption) {\n\t\t\tcase this.canEditText:\n\t\t\t\treturn this.isFolder ? BUNDLED_PERMISSIONS.ALL : BUNDLED_PERMISSIONS.ALL_FILE\n\t\t\tcase this.fileDropText:\n\t\t\t\treturn BUNDLED_PERMISSIONS.FILE_DROP\n\t\t\tcase this.customPermissionsText:\n\t\t\t\treturn 'custom'\n\t\t\tcase this.canViewText:\n\t\t\tdefault:\n\t\t\t\treturn BUNDLED_PERMISSIONS.READ_ONLY\n\t\t\t}\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.selectedOption = this.preSelectedOption\n\t},\n\tmounted() {\n\t\tsubscribe('update:share', (share) => {\n\t\t\tif (share.id === this.share.id) {\n\t\t\t\tthis.share.permissions = share.permissions\n\t\t\t\tthis.selectedOption = this.preSelectedOption\n\t\t\t}\n\t\t})\n\t},\n\tunmounted() {\n\t\tunsubscribe('update:share')\n\t},\n\tmethods: {\n\t\tselectOption(optionLabel) {\n\t\t\tthis.selectedOption = optionLabel\n\t\t\tif (optionLabel === this.customPermissionsText) {\n\t\t\t\tthis.$emit('open-sharing-details')\n\t\t\t} else {\n\t\t\t\tthis.share.permissions = this.dropDownPermissionValue\n\t\t\t\tthis.queueUpdate('permissions')\n\t\t\t\t// TODO: Add a focus method to NcActions or configurable returnFocus enabling to NcActionButton with closeAfterClick\n\t\t\t\tthis.$refs.quickShareActions.$refs.menuButton.$el.focus()\n\t\t\t}\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.share-select {\n\tdisplay: block;\n\n\t// TODO: NcActions should have a slot for custom trigger button like NcPopover\n\t// Overrider NcActionms button to make it small\n\t:deep(.action-item__menutoggle) {\n\t\tcolor: var(--color-primary-element) !important;\n\t\tfont-size: 12.5px !important;\n\t\theight: auto !important;\n\t\tmin-height: auto !important;\n\n\t\t.button-vue__text {\n\t\t\tfont-weight: normal !important;\n\t\t}\n\n\t\t.button-vue__icon {\n\t\t\theight: 24px !important;\n\t\t\tmin-height: 24px !important;\n\t\t\twidth: 24px !important;\n\t\t\tmin-width: 24px !important;\n\t\t}\n\n\t\t.button-vue__wrapper {\n\t\t\t// Emulate NcButton's alignment=center-reverse\n\t\t\tflex-direction: row-reverse !important;\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!./SharingEntryQuickShareSelect.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!./SharingEntryQuickShareSelect.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!./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=2aa230f1&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=2aa230f1&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryQuickShareSelect.vue?vue&type=template&id=2aa230f1&scoped=true\"\nimport script from \"./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js\"\nexport * from \"./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js\"\nimport style0 from \"./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=2aa230f1&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 \"2aa230f1\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',{ref:\"quickShareActions\",staticClass:\"share-select\",attrs:{\"menu-name\":_vm.selectedOption,\"aria-label\":_vm.ariaLabel,\"type\":\"tertiary-no-background\",\"disabled\":!_vm.share.canEdit,\"force-name\":\"\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DropdownIcon',{attrs:{\"size\":15}})]},proxy:true}])},[_vm._v(\" \"),_vm._l((_vm.options),function(option){return _c('NcActionButton',{key:option.label,attrs:{\"type\":\"radio\",\"model-value\":option.label === _vm.selectedOption,\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.selectOption(option.label)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(option.icon,{tag:\"component\"})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\"+_vm._s(option.label)+\"\\n\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"share-expiry-time\"},[_c('NcPopover',{attrs:{\"popup-role\":\"dialog\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [(_vm.expiryTime)?_c('NcButton',{staticClass:\"hint-icon\",attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('files_sharing', 'Share expiration: ') + new Date(_vm.expiryTime).toLocaleString()},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ClockIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,3754271979)}):_vm._e()]},proxy:true}])},[_vm._v(\" \"),_c('h3',{staticClass:\"hint-heading\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share Expiration'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.expiryTime)?_c('p',{staticClass:\"hint-body\"},[_c('NcDateTime',{attrs:{\"timestamp\":_vm.expiryTime,\"format\":_vm.timeFormat,\"relative-time\":false}}),_vm._v(\" (\"),_c('NcDateTime',{attrs:{\"timestamp\":_vm.expiryTime}}),_vm._v(\")\\n\\t\\t\")],1):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon clock-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ClockIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clock.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clock.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Clock.vue?vue&type=template&id=539578bc\"\nimport script from \"./Clock.vue?vue&type=script&lang=js\"\nexport * from \"./Clock.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon clock-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareExpiryTime.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!./ShareExpiryTime.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<div class=\"share-expiry-time\">\n\t\t<NcPopover popup-role=\"dialog\">\n\t\t\t<template #trigger>\n\t\t\t\t<NcButton v-if=\"expiryTime\"\n\t\t\t\t\tclass=\"hint-icon\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t:aria-label=\"t('files_sharing', 'Share expiration: ') + new Date(expiryTime).toLocaleString()\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<ClockIcon :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\t\t\t</template>\n\t\t\t<h3 class=\"hint-heading\">\n\t\t\t\t{{ t('files_sharing', 'Share Expiration') }}\n\t\t\t</h3>\n\t\t\t<p v-if=\"expiryTime\" class=\"hint-body\">\n\t\t\t\t<NcDateTime :timestamp=\"expiryTime\"\n\t\t\t\t\t:format=\"timeFormat\"\n\t\t\t\t\t:relative-time=\"false\" /> (<NcDateTime :timestamp=\"expiryTime\" />)\n\t\t\t</p>\n\t\t</NcPopover>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcPopover from '@nextcloud/vue/components/NcPopover'\nimport NcDateTime from '@nextcloud/vue/components/NcDateTime'\nimport ClockIcon from 'vue-material-design-icons/Clock.vue'\n\nexport default {\n\tname: 'ShareExpiryTime',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcPopover,\n\t\tNcDateTime,\n\t\tClockIcon,\n\t},\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\texpiryTime() {\n\t\t\treturn this.share?.expireDate ? new Date(this.share.expireDate).getTime() : null\n\t\t},\n\t\ttimeFormat() {\n\t\t\treturn { dateStyle: 'full', timeStyle: 'short' }\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.share-expiry-time {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n .hint-icon {\n padding: 0;\n margin: 0;\n width: 24px;\n height: 24px;\n }\n}\n\n.hint-heading {\n text-align: center;\n font-size: 1rem;\n margin-top: 8px;\n padding-bottom: 8px;\n margin-bottom: 0;\n border-bottom: 1px solid var(--color-border);\n}\n\n.hint-body {\n padding: var(--border-radius-element);\n max-width: 300px;\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!./ShareExpiryTime.vue?vue&type=style&index=0&id=66d8c844&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./ShareExpiryTime.vue?vue&type=style&index=0&id=66d8c844&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ShareExpiryTime.vue?vue&type=template&id=66d8c844&scoped=true\"\nimport script from \"./ShareExpiryTime.vue?vue&type=script&lang=js\"\nexport * from \"./ShareExpiryTime.vue?vue&type=script&lang=js\"\nimport style0 from \"./ShareExpiryTime.vue?vue&type=style&index=0&id=66d8c844&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 \"66d8c844\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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 - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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.ts'\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=2812a40a\"\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 * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport Config from '../services/ConfigService.ts';\nimport { showError, showSuccess } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nconst config = new Config();\n// note: some chars removed on purpose to make them human friendly when read out\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789';\n/**\n * Generate a valid policy password or request a valid password if password_policy is enabled\n *\n * @param {boolean} verbose If enabled the the status is shown to the user via toast\n */\nexport default async function (verbose = false) {\n // password policy is enabled, let's request a pass\n if (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n try {\n const request = await axios.get(config.passwordPolicy.api.generate);\n if (request.data.ocs.data.password) {\n if (verbose) {\n showSuccess(t('files_sharing', 'Password created successfully'));\n }\n return request.data.ocs.data.password;\n }\n }\n catch (error) {\n console.info('Error generating password from password_policy', error);\n if (verbose) {\n showError(t('files_sharing', 'Error generating password from password policy'));\n }\n }\n }\n const array = new Uint8Array(10);\n const ratio = passwordSet.length / 255;\n self.crypto.getRandomValues(array);\n let password = '';\n for (let i = 0; i < array.length; i++) {\n password += passwordSet.charAt(array[i] * ratio);\n }\n return password;\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<li :class=\"{ 'sharing-entry--share': share }\"\n\t\tclass=\"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\n\t\t<div class=\"sharing-entry__summary\">\n\t\t\t<div class=\"sharing-entry__desc\">\n\t\t\t\t<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t\t{{ title }}\n\t\t\t\t</span>\n\t\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t\t{{ subtitle }}\n\t\t\t\t</p>\n\t\t\t\t<SharingEntryQuickShareSelect v-if=\"share && share.permissions !== undefined\"\n\t\t\t\t\t:share=\"share\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t@open-sharing-details=\"openShareDetailsForCustomSettings(share)\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"sharing-entry__actions\">\n\t\t\t\t<ShareExpiryTime v-if=\"share && share.expireDate\" :share=\"share\" />\n\n\t\t\t\t<!-- clipboard -->\n\t\t\t\t<div>\n\t\t\t\t\t<NcActions v-if=\"share && (!isEmailShareType || isFileRequest) && share.token\" ref=\"copyButton\" class=\"sharing-entry__copy\">\n\t\t\t\t\t\t<NcActionButton :aria-label=\"copyLinkTooltip\"\n\t\t\t\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\t\t\t\t:href=\"shareLink\"\n\t\t\t\t\t\t\t@click.prevent=\"copyLink\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<CheckIcon v-if=\"copied && copySuccess\"\n\t\t\t\t\t\t\t\t\t:size=\"20\"\n\t\t\t\t\t\t\t\t\tclass=\"icon-checkmark-color\" />\n\t\t\t\t\t\t\t\t<ClipboardIcon v-else :size=\"20\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t</NcActions>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && pendingDataIsMissing\"\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=\"onCancel\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<NcActionText v-if=\"errors.pending\"\n\t\t\t\tclass=\"error\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<ErrorIcon :size=\"20\" />\n\t\t\t\t</template>\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<NcActionCheckbox v-if=\"pendingPassword\"\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{{ config.enforcePasswordForPublicLink ? t('files_sharing', 'Password protection (enforced)') : t('files_sharing', 'Password protection') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<NcActionInput v-if=\"pendingEnforcedPassword || share.password\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:label=\"t('files_sharing', 'Enter a 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\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare(true)\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<LockIcon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcActionInput>\n\n\t\t\t<NcActionCheckbox v-if=\"pendingDefaultExpirationDate\"\n\t\t\t\t:checked.sync=\"defaultExpirationDateEnabled\"\n\t\t\t\t:disabled=\"pendingEnforcedExpirationDate || saving\"\n\t\t\t\tclass=\"share-link-expiration-date-checkbox\"\n\t\t\t\t@update:model-value=\"onExpirationDateToggleUpdate\">\n\t\t\t\t{{ config.isDefaultExpireDateEnforced ? t('files_sharing', 'Enable link expiration (enforced)') : t('files_sharing', 'Enable link expiration') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<NcActionInput v-if=\"(pendingDefaultExpirationDate || pendingEnforcedExpirationDate) && defaultExpirationDateEnabled\"\n\t\t\t\tdata-cy-files-sharing-expiration-date-input\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:label=\"pendingEnforcedExpirationDate ? t('files_sharing', 'Enter expiration date (enforced)') : t('files_sharing', 'Enter expiration 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=\"maxExpirationDateEnforced\"\n\t\t\t\t@change=\"expirationDateChanged($event)\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconCalendarBlank :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcActionInput>\n\n\t\t\t<NcActionButton @click.prevent.stop=\"onNewLinkShare(true)\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CheckIcon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton @click.prevent.stop=\"onCancel\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon :size=\"20\" />\n\t\t\t\t</template>\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<NcActionButton :disabled=\"saving\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t@click.prevent=\"openSharingDetails\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Customize link') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<NcActionButton :close-after-click=\"true\"\n\t\t\t\t\t@click.prevent=\"showQRCode = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconQr :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_sharing', 'Generate QR code') }}\n\t\t\t\t</NcActionButton>\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 }, actionIndex) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"actionIndex\"\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=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<PlusIcon :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</NcActionButton>\n\n\t\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<CloseIcon :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\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\n\t\t<!-- Modal to open whenever we have a QR code -->\n\t\t<NcDialog v-if=\"showQRCode\"\n\t\t\tsize=\"normal\"\n\t\t\t:open.sync=\"showQRCode\"\n\t\t\t:name=\"title\"\n\t\t\t:close-on-click-outside=\"true\"\n\t\t\t@close=\"showQRCode = false\">\n\t\t\t<div class=\"qr-code-dialog\">\n\t\t\t\t<VueQrcode tag=\"img\"\n\t\t\t\t\t:value=\"shareLink\"\n\t\t\t\t\tclass=\"qr-code-dialog__img\" />\n\t\t\t</div>\n\t\t</NcDialog>\n\t</li>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport { generateUrl, getBaseUrl } from '@nextcloud/router'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { ShareType } from '@nextcloud/sharing'\nimport VueQrcode from '@chenfengyuan/vue-qrcode'\nimport moment from '@nextcloud/moment'\nimport Vue from 'vue'\n\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActionCheckbox from '@nextcloud/vue/components/NcActionCheckbox'\nimport NcActionInput from '@nextcloud/vue/components/NcActionInput'\nimport NcActionLink from '@nextcloud/vue/components/NcActionLink'\nimport NcActionText from '@nextcloud/vue/components/NcActionText'\nimport NcActionSeparator from '@nextcloud/vue/components/NcActionSeparator'\nimport NcActions from '@nextcloud/vue/components/NcActions'\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport NcDialog from '@nextcloud/vue/components/NcDialog'\n\nimport Tune from 'vue-material-design-icons/Tune.vue'\nimport IconCalendarBlank from 'vue-material-design-icons/CalendarBlank.vue'\nimport IconQr from 'vue-material-design-icons/Qrcode.vue'\nimport ErrorIcon from 'vue-material-design-icons/Exclamation.vue'\nimport LockIcon from 'vue-material-design-icons/Lock.vue'\nimport CheckIcon from 'vue-material-design-icons/CheckBold.vue'\nimport ClipboardIcon from 'vue-material-design-icons/ContentCopy.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\nimport PlusIcon from 'vue-material-design-icons/Plus.vue'\n\nimport SharingEntryQuickShareSelect from './SharingEntryQuickShareSelect.vue'\nimport ShareExpiryTime from './ShareExpiryTime.vue'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport GeneratePassword from '../utils/GeneratePassword.ts'\nimport Share from '../models/Share.ts'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tExternalShareAction,\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcActionSeparator,\n\t\tNcAvatar,\n\t\tNcDialog,\n\t\tVueQrcode,\n\t\tTune,\n\t\tIconCalendarBlank,\n\t\tIconQr,\n\t\tErrorIcon,\n\t\tLockIcon,\n\t\tCheckIcon,\n\t\tClipboardIcon,\n\t\tCloseIcon,\n\t\tPlusIcon,\n\t\tSharingEntryQuickShareSelect,\n\t\tShareExpiryTime,\n\t},\n\n\tmixins: [SharesMixin, ShareDetails],\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\tshareCreationComplete: false,\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\t\t\tdefaultExpirationDateEnabled: 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\tlogger: getLoggerBuilder()\n\t\t\t\t.setApp('files_sharing')\n\t\t\t\t.detectUser()\n\t\t\t\t.build(),\n\n\t\t\t// tracks whether modal should be opened or not\n\t\t\tshowQRCode: false,\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\tif (this.isFileRequest) {\n\t\t\t\t\t\t\treturn t('files_sharing', 'File request ({label})', {\n\t\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\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\tif (!this.share.shareWith || this.share.shareWith.trim() === '') {\n\t\t\t\t\t\treturn this.isFileRequest\n\t\t\t\t\t\t\t? t('files_sharing', 'File request')\n\t\t\t\t\t\t\t: t('files_sharing', 'Mail share')\n\t\t\t\t\t}\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\n\t\t\t\tif (this.index === null) {\n\t\t\t\t\treturn t('files_sharing', 'Share link')\n\t\t\t\t}\n\t\t\t}\n\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\n\t\t\treturn t('files_sharing', 'Create public 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\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(true) : '')\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 === ShareType.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\tpendingDataIsMissing() {\n\t\t\treturn this.pendingPassword || this.pendingEnforcedPassword || this.pendingDefaultExpirationDate || this.pendingEnforcedExpirationDate\n\t\t},\n\t\tpendingPassword() {\n\t\t\treturn this.config.enableLinkPasswordByDefault && this.isPendingShare\n\t\t},\n\t\tpendingEnforcedPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.isPendingShare\n\t\t},\n\t\tpendingEnforcedExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.isPendingShare\n\t\t},\n\t\tpendingDefaultExpirationDate() {\n\t\t\treturn (this.config.defaultExpirationDate instanceof Date || !isNaN(new Date(this.config.defaultExpirationDate).getTime())) && this.isPendingShare\n\t\t},\n\t\tisPendingShare() {\n\t\t\treturn !!(this.share && !this.share.id)\n\t\t},\n\t\tsharePolicyHasEnforcedProperties() {\n\t\t\treturn this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced\n\t\t},\n\n\t\tenforcedPropertiesMissing() {\n\t\t\t// Ensure share exist and the share policy has required properties\n\t\t\tif (!this.sharePolicyHasEnforcedProperties) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif (!this.share) {\n\t\t\t\t// if no share, we can't tell if properties are missing or not so we assume properties are missing\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// If share has ID, then this is an incoming link share created from the existing link share\n\t\t\t// Hence assume required properties\n\t\t\tif (this.share.id) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Check if either password or expiration date is missing and enforced\n\t\t\tconst isPasswordMissing = this.config.enforcePasswordForPublicLink && !this.share.password\n\t\t\tconst isExpireDateMissing = this.config.isDefaultExpireDateEnforced && !this.share.expireDate\n\n\t\t\treturn isPasswordMissing || isExpireDateMissing\n\t\t},\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 generateUrl('/s/{token}', { token: this.share.token }, { baseURL: getBaseUrl() })\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\tconst filterValidAction = (action) => (action.shareType.includes(ShareType.Link) || action.shareType.includes(ShareType.Email)) && !action.advanced\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(filterValidAction)\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.scope === 'permissions' && shareAttribute.key === 'download' && shareAttribute.value === false\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\n\t\tisFileRequest() {\n\t\t\treturn this.share.isFileRequest\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.defaultExpirationDateEnabled = this.config.defaultExpirationDate instanceof Date\n\t\tif (this.share && this.isNewShare) {\n\t\t\tthis.share.expireDate = this.defaultExpirationDateEnabled ? this.formatDateToString(this.config.defaultExpirationDate) : ''\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if the share requires review\n\t\t *\n\t\t * @param {boolean} shareReviewComplete if the share was reviewed\n\t\t * @return {boolean}\n\t\t */\n\t\tshareRequiresReview(shareReviewComplete) {\n\t\t\t// If a user clicks 'Create share' it means they have reviewed the share\n\t\t\tif (shareReviewComplete) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.defaultExpirationDateEnabled || this.config.enableLinkPasswordByDefault\n\t\t},\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t * @param {boolean} shareReviewComplete if the share was reviewed\n\t\t */\n\t\tasync onNewLinkShare(shareReviewComplete = false) {\n\t\t\tthis.logger.debug('onNewLinkShare called (with this.share)', this.share)\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: ShareType.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\n\t\t\tthis.logger.debug('Missing required properties?', this.enforcedPropertiesMissing)\n\t\t\t// Do not push yet if we need a password or an expiration date: show pending menu\n\t\t\t// A share would require a review for example is default expiration date is set but not enforced, this allows\n\t\t\t// the user to review the share and remove the expiration date if they don't want it\n\t\t\tif ((this.sharePolicyHasEnforcedProperties && this.enforcedPropertiesMissing) || this.shareRequiresReview(shareReviewComplete === true)) {\n\t\t\t\tthis.pending = true\n\t\t\t\tthis.shareCreationComplete = false\n\n\t\t\t\tthis.logger.info('Share policy requires a review or has mandated properties (password, expirationDate)...')\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password default or enforced, pre-fill with random one\n\t\t\t\tif (this.config.enableLinkPasswordByDefault || this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword(true)\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\t// Nothing is enforced, creating share directly\n\t\t\t} else {\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\tthis.logger.info('Sending existing share to server', this.share)\n\t\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\t\tthis.shareCreationComplete = true\n\t\t\t\t\t\t\tthis.logger.info('Share created on server', this.share)\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\tthis.logger.error('Error creating share', 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\tshowError(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\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t\tthis.shareCreationComplete = true\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] 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: ShareType.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 requests\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\tthis.shareCreationComplete = true\n\t\t\t\tconsole.debug('Link share created', newShare)\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\tawait this.getNode()\n\t\t\t\temit('files:node:updated', this.node)\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('files_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('files_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\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t\tthis.shareCreationComplete = true\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 * @param enabled True if expiration is enabled\n\t\t */\n\t\tonExpirationDateToggleUpdate(enabled) {\n\t\t\tthis.share.expireDate = enabled ? this.formatDateToString(this.config.defaultExpirationDate) : ''\n\t\t},\n\n\t\texpirationDateChanged(event) {\n\t\t\tconst date = event.target.value\n\t\t\tthis.onExpirationChange(date)\n\t\t\tthis.defaultExpirationDateEnabled = !!date\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\tif (!this.shareCreationComplete) {\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t}\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\n\t&__summary {\n\t\tpadding: 8px;\n\t\tpadding-inline-start: 10px;\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tflex: 1 0;\n\t\tmin-width: 0;\n\t}\n\n\t\t&__desc {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tline-height: 1.2em;\n\n\t\t\tp {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\n\t\t\t&__title {\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\t\t}\n\n\t\t&__actions {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tmargin-inline-start: auto;\n\t\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:deep(.avatar-link-share) {\n\t\tbackground-color: var(--color-primary-element);\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-inline-start: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\n\t\t~.action-item,\n\t\t~.sharing-entry__loading {\n\t\t\tmargin-inline-start: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t\tcolor: var(--color-success);\n\t}\n}\n\n// styling for the qr-code container\n.qr-code-dialog {\n\tdisplay: flex;\n\twidth: 100%;\n\tjustify-content: center;\n\n\t&__img {\n\t\twidth: 100%;\n\t\theight: 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!./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=43291a73&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=43291a73&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=43291a73&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=43291a73&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 \"43291a73\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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 - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<ul v-if=\"canLinkShare\"\n\t\t:aria-label=\"t('files_sharing', 'Link shares')\"\n\t\tclass=\"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\t\t@open-sharing-details=\"openSharingDetails(share)\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\nimport { getCapabilities } from '@nextcloud/capabilities'\n\nimport { t } from '@nextcloud/l10n'\n\nimport Share from '../models/Share.js'\nimport SharingEntryLink from '../components/SharingEntryLink.vue'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport { ShareType } from '@nextcloud/sharing'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareDetails],\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: 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 === ShareType.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\tt,\n\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.push(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","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__summary\"},[_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\",attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share && _vm.share.permissions !== undefined)?_c('SharingEntryQuickShareSelect',{attrs:{\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"open-sharing-details\":function($event){return _vm.openShareDetailsForCustomSettings(_vm.share)}}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__actions\"},[(_vm.share && _vm.share.expireDate)?_c('ShareExpiryTime',{attrs:{\"share\":_vm.share}}):_vm._e(),_vm._v(\" \"),_c('div',[(_vm.share && (!_vm.isEmailShareType || _vm.isFileRequest) && _vm.share.token)?_c('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionButton',{attrs:{\"aria-label\":_vm.copyLinkTooltip,\"title\":_vm.copyLinkTooltip,\"href\":_vm.shareLink},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.copied && _vm.copySuccess)?_c('CheckIcon',{staticClass:\"icon-checkmark-color\",attrs:{\"size\":20}}):_c('ClipboardIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,4269614823)})],1):_vm._e()],1)],1)]),_vm._v(\" \"),(!_vm.pending && _vm.pendingDataIsMissing)?_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.onCancel}},[(_vm.errors.pending)?_c('NcActionText',{staticClass:\"error\",scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ErrorIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,1966124155)},[_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('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.config.enforcePasswordForPublicLink ? _vm.t('files_sharing', 'Password protection (enforced)') : _vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingEnforcedPassword || _vm.share.password)?_c('NcActionInput',{staticClass:\"share-link-password\",attrs:{\"label\":_vm.t('files_sharing', 'Enter a password'),\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":function($event){return _vm.onNewLinkShare(true)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('LockIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2056568168)}):_vm._e(),_vm._v(\" \"),(_vm.pendingDefaultExpirationDate)?_c('NcActionCheckbox',{staticClass:\"share-link-expiration-date-checkbox\",attrs:{\"checked\":_vm.defaultExpirationDateEnabled,\"disabled\":_vm.pendingEnforcedExpirationDate || _vm.saving},on:{\"update:checked\":function($event){_vm.defaultExpirationDateEnabled=$event},\"update:model-value\":_vm.onExpirationDateToggleUpdate}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced ? _vm.t('files_sharing', 'Enable link expiration (enforced)') : _vm.t('files_sharing', 'Enable link expiration'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),((_vm.pendingDefaultExpirationDate || _vm.pendingEnforcedExpirationDate) && _vm.defaultExpirationDateEnabled)?_c('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"data-cy-files-sharing-expiration-date-input\":\"\",\"label\":_vm.pendingEnforcedExpirationDate ? _vm.t('files_sharing', 'Enter expiration date (enforced)') : _vm.t('files_sharing', 'Enter expiration date'),\"disabled\":_vm.saving,\"is-native-picker\":true,\"hide-label\":true,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.maxExpirationDateEnforced},on:{\"change\":function($event){return _vm.expirationDateChanged($event)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconCalendarBlank',{attrs:{\"size\":20}})]},proxy:true}],null,false,3418578971)}):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare(true)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CheckIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2630571749)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CloseIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2428343285)},[_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('NcActionButton',{attrs:{\"disabled\":_vm.saving,\"close-after-click\":true},on:{\"click\":function($event){$event.preventDefault();return _vm.openSharingDetails.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune',{attrs:{\"size\":20}})]},proxy:true}],null,false,1300586850)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Customize link'))+\"\\n\\t\\t\\t\\t\")])]:_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){$event.preventDefault();_vm.showQRCode = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconQr',{attrs:{\"size\":20}})]},proxy:true}],null,false,1082198240)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Generate QR code'))+\"\\n\\t\\t\\t\")]),_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 },actionIndex){return _c('NcActionLink',{key:actionIndex,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.isEmailShareType && _vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PlusIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2953566425)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CloseIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2428343285)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\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\"}),_vm._v(\" \"),(_vm.showQRCode)?_c('NcDialog',{attrs:{\"size\":\"normal\",\"open\":_vm.showQRCode,\"name\":_vm.title,\"close-on-click-outside\":true},on:{\"update:open\":function($event){_vm.showQRCode=$event},\"close\":function($event){_vm.showQRCode = false}}},[_c('div',{staticClass:\"qr-code-dialog\"},[_c('VueQrcode',{staticClass:\"qr-code-dialog__img\",attrs:{\"tag\":\"img\",\"value\":_vm.shareLink}})],1)]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=5f722665\"\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 _c('ul',{staticClass:\"sharing-sharee-list\",attrs:{\"aria-label\":_vm.t('files_sharing', 'Shares')}},_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:{\"open-sharing-details\":function($event){return _vm.openSharingDetails(share)}}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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 !== ShareType.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<div class=\"sharing-entry__summary\">\n\t\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\t\t:title=\"tooltip\"\n\t\t\t\t:aria-label=\"tooltip\"\n\t\t\t\t:href=\"share.shareWithLink\"\n\t\t\t\tclass=\"sharing-entry__summary__desc\">\n\t\t\t\t<span>{{ title }}\n\t\t\t\t\t<span v-if=\"!isUnique\" class=\"sharing-entry__summary__desc-unique\"> ({{\n\t\t\t\t\t\tshare.shareWithDisplayNameUnique }})</span>\n\t\t\t\t\t<small v-if=\"hasStatus && share.status.message\">({{ share.status.message }})</small>\n\t\t\t\t</span>\n\t\t\t</component>\n\t\t\t<SharingEntryQuickShareSelect :share=\"share\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@open-sharing-details=\"openShareDetailsForCustomSettings(share)\" />\n\t\t</div>\n\t\t<ShareExpiryTime v-if=\"share && share.expireDate\" :share=\"share\" />\n\t\t<NcButton v-if=\"share.canEdit\"\n\t\t\tclass=\"sharing-entry__action\"\n\t\t\tdata-cy-files-sharing-share-actions\n\t\t\t:aria-label=\"t('files_sharing', 'Open Sharing Details')\"\n\t\t\ttype=\"tertiary\"\n\t\t\t@click=\"openSharingDetails(share)\">\n\t\t\t<template #icon>\n\t\t\t\t<DotsHorizontalIcon :size=\"20\" />\n\t\t\t</template>\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport { ShareType } from '@nextcloud/sharing'\n\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\n\nimport ShareExpiryTime from './ShareExpiryTime.vue'\nimport SharingEntryQuickShareSelect from './SharingEntryQuickShareSelect.vue'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcAvatar,\n\t\tDotsHorizontalIcon,\n\t\tNcSelect,\n\t\tShareExpiryTime,\n\t\tSharingEntryQuickShareSelect,\n\t},\n\n\tmixins: [SharesMixin, ShareDetails],\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === ShareType.Group) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === ShareType.Room) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === ShareType.Remote) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === ShareType.RemoteGroup) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === ShareType.Guest) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\ttitle += ' ' + t('files_sharing', 'by {initiator}', {\n\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn title\n\t\t},\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 === ShareType.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 === ShareType.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\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== ShareType.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\t},\n\n\tmethods: {\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&__summary {\n\t\tpadding: 8px;\n\t\tpadding-inline-start: 10px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: flex-start;\n\t\tflex: 1 0;\n\t\tmin-width: 0;\n\n\t\t&__desc {\n\t\t\tdisplay: inline-block;\n\t\t\tpadding-bottom: 0;\n\t\t\tline-height: 1.2em;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\n\t\t\tp,\n\t\t\tsmall {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\n\t\t\t&-unique {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\t\t}\n\t}\n\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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=2dbd45b5&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=2dbd45b5&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=2dbd45b5&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=2dbd45b5&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 \"2dbd45b5\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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\"","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<ul class=\"sharing-sharee-list\" :aria-label=\"t('files_sharing', 'Shares')\">\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@open-sharing-details=\"openSharingDetails(share)\" />\n\t</ul>\n</template>\n\n<script>\nimport { t } from '@nextcloud/l10n'\nimport SharingEntry from '../components/SharingEntry.vue'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport { ShareType } from '@nextcloud/sharing'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareDetails],\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\tsetup() {\n\t\treturn {\n\t\t\tt,\n\t\t}\n\t},\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 === ShareType.User && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n","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.ShareType.User,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__summary\"},[_c(_vm.share.shareWithLink ? 'a' : 'div',{tag:\"component\",staticClass:\"sharing-entry__summary__desc\",attrs:{\"title\":_vm.tooltip,\"aria-label\":_vm.tooltip,\"href\":_vm.share.shareWithLink}},[_c('span',[_vm._v(_vm._s(_vm.title)+\"\\n\\t\\t\\t\\t\"),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__summary__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e(),_vm._v(\" \"),(_vm.hasStatus && _vm.share.status.message)?_c('small',[_vm._v(\"(\"+_vm._s(_vm.share.status.message)+\")\")]):_vm._e()])]),_vm._v(\" \"),_c('SharingEntryQuickShareSelect',{attrs:{\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"open-sharing-details\":function($event){return _vm.openShareDetailsForCustomSettings(_vm.share)}}})],1),_vm._v(\" \"),(_vm.share && _vm.share.expireDate)?_c('ShareExpiryTime',{attrs:{\"share\":_vm.share}}):_vm._e(),_vm._v(\" \"),(_vm.share.canEdit)?_c('NcButton',{staticClass:\"sharing-entry__action\",attrs:{\"data-cy-files-sharing-share-actions\":\"\",\"aria-label\":_vm.t('files_sharing', 'Open Sharing Details'),\"type\":\"tertiary\"},on:{\"click\":function($event){return _vm.openSharingDetails(_vm.share)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DotsHorizontalIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,1700783217)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=5b9a3a03\"\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('div',{staticClass:\"sharingTabDetailsView\"},[_c('div',{staticClass:\"sharingTabDetailsView__header\"},[_c('span',[(_vm.isUserShare)?_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.shareType !== _vm.ShareType.User,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}):_vm._e(),_vm._v(\" \"),_c(_vm.getShareTypeIcon(_vm.share.type),{tag:\"component\",attrs:{\"size\":32}})],1),_vm._v(\" \"),_c('span',[_c('h1',[_vm._v(_vm._s(_vm.title))])])]),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__wrapper\"},[_c('div',{ref:\"quickPermissions\",staticClass:\"sharingTabDetailsView__quick-permissions\"},[_c('div',[_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"data-cy-files-sharing-share-permissions-bundle\":\"read-only\",\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.READ_ONLY.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ViewIcon',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'View only'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"data-cy-files-sharing-share-permissions-bundle\":\"upload-edit\",\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.ALL.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('EditIcon',{attrs:{\"size\":20}})]},proxy:true}])},[(_vm.allowsFileDrop)?[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\\t\\t\")]:[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\\t\\t\")]],2),_vm._v(\" \"),(_vm.allowsFileDrop)?_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-sharing-share-permissions-bundle\":\"file-drop\",\"button-variant\":true,\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.FILE_DROP.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('UploadIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,1083194048)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File request'))+\"\\n\\t\\t\\t\\t\\t\"),_c('small',{staticClass:\"subline\"},[_vm._v(_vm._s(_vm.t('files_sharing', 'Upload only')))])]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"data-cy-files-sharing-share-permissions-bundle\":\"custom\",\"checked\":_vm.sharingPermission,\"value\":'custom',\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.expandCustomPermissions]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DotsHorizontalIcon',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Custom permissions'))+\"\\n\\t\\t\\t\\t\\t\"),_c('small',{staticClass:\"subline\"},[_vm._v(_vm._s(_vm.customPermissionsList))])])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__advanced-control\"},[_c('NcButton',{attrs:{\"id\":\"advancedSectionAccordionAdvancedControl\",\"type\":\"tertiary\",\"alignment\":\"end-reverse\",\"aria-controls\":\"advancedSectionAccordionAdvanced\",\"aria-expanded\":_vm.advancedControlExpandedValue},on:{\"click\":function($event){_vm.advancedSectionAccordionExpanded = !_vm.advancedSectionAccordionExpanded}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!_vm.advancedSectionAccordionExpanded)?_c('MenuDownIcon'):_c('MenuUpIcon')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Advanced settings'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.advancedSectionAccordionExpanded)?_c('div',{staticClass:\"sharingTabDetailsView__advanced\",attrs:{\"id\":\"advancedSectionAccordionAdvanced\",\"aria-labelledby\":\"advancedSectionAccordionAdvancedControl\",\"role\":\"region\"}},[_c('section',[(_vm.isPublicShare)?_c('NcInputField',{staticClass:\"sharingTabDetailsView__label\",attrs:{\"autocomplete\":\"off\",\"label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.label},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"label\", $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.config.allowCustomTokens && _vm.isPublicShare && !_vm.isNewShare)?_c('NcInputField',{attrs:{\"autocomplete\":\"off\",\"label\":_vm.t('files_sharing', 'Share link token'),\"helper-text\":_vm.t('files_sharing', 'Set the public share link token to something easy to remember or generate a new token. It is not recommended to use a guessable token for shares which contain sensitive information.'),\"show-trailing-button\":\"\",\"trailing-button-label\":_vm.loadingToken ? _vm.t('files_sharing', 'Generating…') : _vm.t('files_sharing', 'Generate new token'),\"value\":_vm.share.token},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"token\", $event)},\"trailing-button-click\":_vm.generateNewToken},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [(_vm.loadingToken)?_c('NcLoadingIcon'):_c('Refresh',{attrs:{\"size\":20}})]},proxy:true}],null,false,4228062821)}):_vm._e(),_vm._v(\" \"),(_vm.isPublicShare)?[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.isPasswordEnforced},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Set password'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('NcPasswordField',{attrs:{\"autocomplete\":\"new-password\",\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '',\"error\":_vm.passwordError,\"helper-text\":_vm.errorPasswordLabel || _vm.passwordHint,\"required\":_vm.isPasswordEnforced && _vm.isNewShare,\"label\":_vm.t('files_sharing', 'Password')},on:{\"update:value\":_vm.onPasswordChange}}):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('span',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', { passwordExpirationTime: _vm.passwordExpirationTime }))+\"\\n\\t\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('span',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.canTogglePasswordProtectedByTalkAvailable)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.isPasswordProtectedByTalk},on:{\"update:checked\":[function($event){_vm.isPasswordProtectedByTalk=$event},_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('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.isExpiryDateEnforced},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.isExpiryDateEnforced\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('NcDateTimePickerNative',{attrs:{\"id\":\"share-date-picker\",\"value\":new Date(_vm.share.expireDate ?? _vm.dateTomorrow),\"min\":_vm.dateTomorrow,\"max\":_vm.maxExpirationDateEnforced,\"hide-label\":\"\",\"label\":_vm.t('files_sharing', 'Expiration date'),\"placeholder\":_vm.t('files_sharing', 'Expiration date'),\"type\":\"date\"},on:{\"input\":_vm.onExpirationChange}}):_vm._e(),_vm._v(\" \"),(_vm.isPublicShare)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":_vm.canChangeHideDownload,\"checked\":_vm.share.hideDownload},on:{\"update:checked\":[function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},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\")]):_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetDownload,\"checked\":_vm.canDownload,\"data-cy-files-sharing-share-permissions-checkbox\":\"download\"},on:{\"update:checked\":function($event){_vm.canDownload=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow download and sync'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.writeNoteToRecipientIsChecked},on:{\"update:checked\":function($event){_vm.writeNoteToRecipientIsChecked=$event}}},[_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.writeNoteToRecipientIsChecked)?[_c('NcTextArea',{attrs:{\"label\":_vm.t('files_sharing', 'Note to recipient'),\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.note},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"note\", $event)}}})]:_vm._e(),_vm._v(\" \"),(_vm.isPublicShare && _vm.isFolder)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.showInGridView},on:{\"update:checked\":function($event){_vm.showInGridView=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Show files in grid view'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,ref:\"externalLinkActions\",refInFor:true,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.setCustomPermissions},on:{\"update:checked\":function($event){_vm.setCustomPermissions=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Custom permissions'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.setCustomPermissions)?_c('section',{staticClass:\"custom-permissions-group\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canRemoveReadPermission,\"checked\":_vm.hasRead,\"data-cy-files-sharing-share-permissions-checkbox\":\"read\"},on:{\"update:checked\":function($event){_vm.hasRead=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetCreate,\"checked\":_vm.canCreate,\"data-cy-files-sharing-share-permissions-checkbox\":\"create\"},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetEdit,\"checked\":_vm.canEdit,\"data-cy-files-sharing-share-permissions-checkbox\":\"update\"},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.resharingIsPossible)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetReshare,\"checked\":_vm.canReshare,\"data-cy-files-sharing-share-permissions-checkbox\":\"share\"},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetDelete,\"checked\":_vm.canDelete,\"data-cy-files-sharing-share-permissions-checkbox\":\"delete\"},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__delete\"},[(!_vm.isNewShare)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('files_sharing', 'Delete share'),\"disabled\":false,\"readonly\":false,\"type\":\"tertiary\"},on:{\"click\":function($event){$event.preventDefault();return _vm.removeShare.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CloseIcon',{attrs:{\"size\":16}})]},proxy:true}],null,false,2746485232)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete share'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()],1)],2)]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__footer\"},[_c('div',{staticClass:\"button-group\"},[_c('NcButton',{attrs:{\"data-cy-files-sharing-share-editor-action\":\"cancel\"},on:{\"click\":_vm.cancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"data-cy-files-sharing-share-editor-action\":\"save\",\"disabled\":_vm.creating},on:{\"click\":_vm.saveShare},scopedSlots:_vm._u([(_vm.creating)?{key:\"icon\",fn:function(){return [_c('NcLoadingIcon')]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.shareButtonText)+\"\\n\\t\\t\\t\\t\")])],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon circle-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CircleOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CircleOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CircleOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CircleOutline.vue?vue&type=template&id=c013567c\"\nimport script from \"./CircleOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CircleOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon circle-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon email-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EmailIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Email.vue?vue&type=template&id=7dd7f6aa\"\nimport script from \"./Email.vue?vue&type=script&lang=js\"\nexport * from \"./Email.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon email-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon share-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M14 16V13C10.39 13 7.81 14.43 6 17C6.72 13.33 8.94 9.73 14 9V6L19 11L14 16Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ShareCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ShareCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ShareCircle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ShareCircle.vue?vue&type=template&id=0e958886\"\nimport script from \"./ShareCircle.vue?vue&type=script&lang=js\"\nexport * from \"./ShareCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon share-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M14 16V13C10.39 13 7.81 14.43 6 17C6.72 13.33 8.94 9.73 14 9V6L19 11L14 16Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountCircleOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountCircleOutline.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon account-circle-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.07,18.28C7.5,17.38 10.12,16.5 12,16.5C13.88,16.5 16.5,17.38 16.93,18.28C15.57,19.36 13.86,20 12,20C10.14,20 8.43,19.36 7.07,18.28M18.36,16.83C16.93,15.09 13.46,14.5 12,14.5C10.54,14.5 7.07,15.09 5.64,16.83C4.62,15.5 4,13.82 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,13.82 19.38,15.5 18.36,16.83M12,6C10.06,6 8.5,7.56 8.5,9.5C8.5,11.44 10.06,13 12,13C13.94,13 15.5,11.44 15.5,9.5C15.5,7.56 13.94,6 12,6M12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountCircleOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./AccountCircleOutline.vue?vue&type=template&id=5b2fe1de\"\nimport script from \"./AccountCircleOutline.vue?vue&type=script&lang=js\"\nexport * from \"./AccountCircleOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon account-circle-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.07,18.28C7.5,17.38 10.12,16.5 12,16.5C13.88,16.5 16.5,17.38 16.93,18.28C15.57,19.36 13.86,20 12,20C10.14,20 8.43,19.36 7.07,18.28M18.36,16.83C16.93,15.09 13.46,14.5 12,14.5C10.54,14.5 7.07,15.09 5.64,16.83C4.62,15.5 4,13.82 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,13.82 19.38,15.5 18.36,16.83M12,6C10.06,6 8.5,7.56 8.5,9.5C8.5,11.44 10.06,13 12,13C13.94,13 15.5,11.44 15.5,9.5C15.5,7.56 13.94,6 12,6M12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Eye.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Eye.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Eye.vue?vue&type=template&id=4ae2345c\"\nimport script from \"./Eye.vue?vue&type=script&lang=js\"\nexport * from \"./Eye.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon eye-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon refresh-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"RefreshIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Refresh.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Refresh.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Refresh.vue?vue&type=template&id=2864f909\"\nimport script from \"./Refresh.vue?vue&type=script&lang=js\"\nexport * from \"./Refresh.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon refresh-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.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!./SharingDetailsTab.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<div class=\"sharingTabDetailsView\">\n\t\t<div class=\"sharingTabDetailsView__header\">\n\t\t\t<span>\n\t\t\t\t<NcAvatar v-if=\"isUserShare\"\n\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t:is-no-user=\"share.shareType !== ShareType.User\"\n\t\t\t\t\t:user=\"share.shareWith\"\n\t\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\t\t:menu-position=\"'left'\"\n\t\t\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t\t\t<component :is=\"getShareTypeIcon(share.type)\" :size=\"32\" />\n\t\t\t</span>\n\t\t\t<span>\n\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t</span>\n\t\t</div>\n\t\t<div class=\"sharingTabDetailsView__wrapper\">\n\t\t\t<div ref=\"quickPermissions\" class=\"sharingTabDetailsView__quick-permissions\">\n\t\t\t\t<div>\n\t\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-bundle=\"read-only\"\n\t\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY.toString()\"\n\t\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t\t{{ t('files_sharing', 'View only') }}\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ViewIcon :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-bundle=\"upload-edit\"\n\t\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t\t:value=\"bundledPermissions.ALL.toString()\"\n\t\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t\t<template v-if=\"allowsFileDrop\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<EditIcon :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"allowsFileDrop\"\n\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-bundle=\"file-drop\"\n\t\t\t\t\t\t:button-variant=\"true\"\n\t\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP.toString()\"\n\t\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t\t{{ t('files_sharing', 'File request') }}\n\t\t\t\t\t\t<small class=\"subline\">{{ t('files_sharing', 'Upload only') }}</small>\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<UploadIcon :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-bundle=\"custom\"\n\t\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t\t:value=\"'custom'\"\n\t\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t\t@update:checked=\"expandCustomPermissions\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Custom permissions') }}\n\t\t\t\t\t\t<small class=\"subline\">{{ customPermissionsList }}</small>\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<DotsHorizontalIcon :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"sharingTabDetailsView__advanced-control\">\n\t\t\t\t<NcButton id=\"advancedSectionAccordionAdvancedControl\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\talignment=\"end-reverse\"\n\t\t\t\t\taria-controls=\"advancedSectionAccordionAdvanced\"\n\t\t\t\t\t:aria-expanded=\"advancedControlExpandedValue\"\n\t\t\t\t\t@click=\"advancedSectionAccordionExpanded = !advancedSectionAccordionExpanded\">\n\t\t\t\t\t{{ t('files_sharing', 'Advanced settings') }}\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<MenuDownIcon v-if=\"!advancedSectionAccordionExpanded\" />\n\t\t\t\t\t\t<MenuUpIcon v-else />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<div v-if=\"advancedSectionAccordionExpanded\"\n\t\t\t\tid=\"advancedSectionAccordionAdvanced\"\n\t\t\t\tclass=\"sharingTabDetailsView__advanced\"\n\t\t\t\taria-labelledby=\"advancedSectionAccordionAdvancedControl\"\n\t\t\t\trole=\"region\">\n\t\t\t\t<section>\n\t\t\t\t\t<NcInputField v-if=\"isPublicShare\"\n\t\t\t\t\t\tclass=\"sharingTabDetailsView__label\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t:label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value.sync=\"share.label\" />\n\t\t\t\t\t<NcInputField v-if=\"config.allowCustomTokens && isPublicShare && !isNewShare\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t:label=\"t('files_sharing', 'Share link token')\"\n\t\t\t\t\t\t:helper-text=\"t('files_sharing', 'Set the public share link token to something easy to remember or generate a new token. It is not recommended to use a guessable token for shares which contain sensitive information.')\"\n\t\t\t\t\t\tshow-trailing-button\n\t\t\t\t\t\t:trailing-button-label=\"loadingToken ? t('files_sharing', 'Generating…') : t('files_sharing', 'Generate new token')\"\n\t\t\t\t\t\t:value.sync=\"share.token\"\n\t\t\t\t\t\t@trailing-button-click=\"generateNewToken\">\n\t\t\t\t\t\t<template #trailing-button-icon>\n\t\t\t\t\t\t\t<NcLoadingIcon v-if=\"loadingToken\" />\n\t\t\t\t\t\t\t<Refresh v-else :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcInputField>\n\t\t\t\t\t<template v-if=\"isPublicShare\">\n\t\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"isPasswordProtected\" :disabled=\"isPasswordEnforced\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Set password') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t\t<NcPasswordField v-if=\"isPasswordProtected\"\n\t\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : ''\"\n\t\t\t\t\t\t\t:error=\"passwordError\"\n\t\t\t\t\t\t\t:helper-text=\"errorPasswordLabel || passwordHint\"\n\t\t\t\t\t\t\t:required=\"isPasswordEnforced && isNewShare\"\n\t\t\t\t\t\t\t:label=\"t('files_sharing', 'Password')\"\n\t\t\t\t\t\t\t@update:value=\"onPasswordChange\" />\n\n\t\t\t\t\t\t<!-- Migrate icons and remote -> icon=\"icon-info\"-->\n\t\t\t\t\t\t<span v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', { passwordExpirationTime }) }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"canTogglePasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t@update:checked=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"hasExpirationDate\" :disabled=\"isExpiryDateEnforced\">\n\t\t\t\t\t\t{{ isExpiryDateEnforced\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</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcDateTimePickerNative v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tid=\"share-date-picker\"\n\t\t\t\t\t\t:value=\"new Date(share.expireDate ?? dateTomorrow)\"\n\t\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t\t:max=\"maxExpirationDateEnforced\"\n\t\t\t\t\t\thide-label\n\t\t\t\t\t\t:label=\"t('files_sharing', 'Expiration date')\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Expiration date')\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t@input=\"onExpirationChange\" />\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"isPublicShare\"\n\t\t\t\t\t\t:disabled=\"canChangeHideDownload\"\n\t\t\t\t\t\t:checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t@update:checked=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-else\n\t\t\t\t\t\t:disabled=\"!canSetDownload\"\n\t\t\t\t\t\t:checked.sync=\"canDownload\"\n\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"download\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Allow download and sync') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"writeNoteToRecipientIsChecked\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<template v-if=\"writeNoteToRecipientIsChecked\">\n\t\t\t\t\t\t<NcTextArea :label=\"t('files_sharing', 'Note to recipient')\"\n\t\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t\t:value.sync=\"share.note\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"isPublicShare && isFolder\"\n\t\t\t\t\t\t:checked.sync=\"showInGridView\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Show files in grid view') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t\tref=\"externalLinkActions\"\n\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t\t:share=\"share\" />\n\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"setCustomPermissions\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Custom permissions') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<section v-if=\"setCustomPermissions\" class=\"custom-permissions-group\">\n\t\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!canRemoveReadPermission\"\n\t\t\t\t\t\t\t:checked.sync=\"hasRead\"\n\t\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"read\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"isFolder\"\n\t\t\t\t\t\t\t:disabled=\"!canSetCreate\"\n\t\t\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"create\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Create') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!canSetEdit\"\n\t\t\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"update\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"resharingIsPossible\"\n\t\t\t\t\t\t\t:disabled=\"!canSetReshare\"\n\t\t\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"share\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Share') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!canSetDelete\"\n\t\t\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t\t\tdata-cy-files-sharing-share-permissions-checkbox=\"delete\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t</section>\n\t\t\t\t\t<div class=\"sharingTabDetailsView__delete\">\n\t\t\t\t\t\t<NcButton v-if=\"!isNewShare\"\n\t\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Delete share')\"\n\t\t\t\t\t\t\t:disabled=\"false\"\n\t\t\t\t\t\t\t:readonly=\"false\"\n\t\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t\t@click.prevent=\"removeShare\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<CloseIcon :size=\"16\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Delete share') }}\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"sharingTabDetailsView__footer\">\n\t\t\t<div class=\"button-group\">\n\t\t\t\t<NcButton data-cy-files-sharing-share-editor-action=\"cancel\"\n\t\t\t\t\t@click=\"cancel\">\n\t\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\tdata-cy-files-sharing-share-editor-action=\"save\"\n\t\t\t\t\t:disabled=\"creating\"\n\t\t\t\t\t@click=\"saveShare\">\n\t\t\t\t\t{{ shareButtonText }}\n\t\t\t\t\t<template v-if=\"creating\" #icon>\n\t\t\t\t\t\t<NcLoadingIcon />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport { getLanguage } from '@nextcloud/l10n'\nimport { ShareType } from '@nextcloud/sharing'\nimport { showError } from '@nextcloud/dialogs'\nimport moment from '@nextcloud/moment'\n\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'\nimport NcDateTimePickerNative from '@nextcloud/vue/components/NcDateTimePickerNative'\nimport NcInputField from '@nextcloud/vue/components/NcInputField'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport NcPasswordField from '@nextcloud/vue/components/NcPasswordField'\nimport NcTextArea from '@nextcloud/vue/components/NcTextArea'\n\nimport CircleIcon from 'vue-material-design-icons/CircleOutline.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\nimport EditIcon from 'vue-material-design-icons/Pencil.vue'\nimport EmailIcon from 'vue-material-design-icons/Email.vue'\nimport LinkIcon from 'vue-material-design-icons/Link.vue'\nimport GroupIcon from 'vue-material-design-icons/AccountGroup.vue'\nimport ShareIcon from 'vue-material-design-icons/ShareCircle.vue'\nimport UserIcon from 'vue-material-design-icons/AccountCircleOutline.vue'\nimport ViewIcon from 'vue-material-design-icons/Eye.vue'\nimport UploadIcon from 'vue-material-design-icons/Upload.vue'\nimport MenuDownIcon from 'vue-material-design-icons/MenuDown.vue'\nimport MenuUpIcon from 'vue-material-design-icons/MenuUp.vue'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport Refresh from 'vue-material-design-icons/Refresh.vue'\n\nimport ExternalShareAction from '../components/ExternalShareAction.vue'\n\nimport GeneratePassword from '../utils/GeneratePassword.ts'\nimport Share from '../models/Share.ts'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport { generateToken } from '../services/TokenService.ts'\nimport logger from '../services/logger.ts'\n\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n} from '../lib/SharePermissionsToolBox.js'\n\nexport default {\n\tname: 'SharingDetailsTab',\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcDateTimePickerNative,\n\t\tNcInputField,\n\t\tNcLoadingIcon,\n\t\tNcPasswordField,\n\t\tNcTextArea,\n\t\tCloseIcon,\n\t\tCircleIcon,\n\t\tEditIcon,\n\t\tExternalShareAction,\n\t\tLinkIcon,\n\t\tGroupIcon,\n\t\tShareIcon,\n\t\tUserIcon,\n\t\tUploadIcon,\n\t\tViewIcon,\n\t\tMenuDownIcon,\n\t\tMenuUpIcon,\n\t\tDotsHorizontalIcon,\n\t\tRefresh,\n\t},\n\tmixins: [ShareRequests, SharesMixin],\n\tprops: {\n\t\tshareRequestValue: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\twriteNoteToRecipientIsChecked: false,\n\t\t\tsharingPermission: BUNDLED_PERMISSIONS.ALL.toString(),\n\t\t\trevertSharingPermission: BUNDLED_PERMISSIONS.ALL.toString(),\n\t\t\tsetCustomPermissions: false,\n\t\t\tpasswordError: false,\n\t\t\tadvancedSectionAccordionExpanded: false,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t\tisFirstComponentLoad: true,\n\t\t\ttest: false,\n\t\t\tcreating: false,\n\t\t\tinitialToken: this.share.token,\n\t\t\tloadingToken: false,\n\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tswitch (this.share.type) {\n\t\t\tcase ShareType.User:\n\t\t\t\treturn t('files_sharing', 'Share with {userName}', { userName: this.share.shareWithDisplayName })\n\t\t\tcase ShareType.Email:\n\t\t\t return t('files_sharing', 'Share with email {email}', { email: this.share.shareWith })\n\t\t\tcase ShareType.Link:\n\t\t\t\treturn t('files_sharing', 'Share link')\n\t\t\tcase ShareType.Group:\n\t\t\t\treturn t('files_sharing', 'Share with group')\n\t\t\tcase ShareType.Room:\n\t\t\t\treturn t('files_sharing', 'Share in conversation')\n\t\t\tcase ShareType.Remote: {\n\t\t\t\tconst [user, server] = this.share.shareWith.split('@')\n\t\t\t\treturn t('files_sharing', 'Share with {user} on remote server {server}', { user, server })\n\t\t\t}\n\t\t\tcase ShareType.RemoteGroup:\n\t\t\t\treturn t('files_sharing', 'Share with remote group')\n\t\t\tcase ShareType.Guest:\n\t\t\t\treturn t('files_sharing', 'Share with guest')\n\t\t\tdefault: {\n\t\t\t\tif (this.share.id) {\n\t\t\t\t\t// Share already exists\n\t\t\t\t\treturn t('files_sharing', 'Update share')\n\t\t\t\t} else {\n\t\t\t\t\treturn t('files_sharing', 'Create share')\n\t\t\t\t}\n\t\t\t}\n\t\t\t}\n\t\t},\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.updateAtomicPermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\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.updateAtomicPermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\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.updateAtomicPermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\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.updateAtomicPermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Change the default view for public shares from \"list\" to \"grid\"\n\t\t */\n\t\tshowInGridView: {\n\t\t\tget() {\n\t\t\t\treturn this.getShareAttribute('config', 'grid_view', false)\n\t\t\t},\n\t\t\t/** @param {boolean} value If the default view should be changed to \"grid\" */\n\t\t\tset(value) {\n\t\t\t\tthis.setShareAttribute('config', 'grid_view', value)\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.getShareAttribute('permissions', 'download', true)\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.setShareAttribute('permissions', 'download', checked)\n\t\t\t},\n\t\t},\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 requests 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\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isReadChecked: checked })\n\t\t\t},\n\t\t},\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.isValidShareAttribute(this.share.expireDate)\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(this.defaultExpiryDate)\n\t\t\t\t\t: ''\n\t\t\t},\n\t\t},\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\tif (enabled) {\n\t\t\t\t\tthis.share.password = await GeneratePassword(true)\n\t\t\t\t\tthis.$set(this.share, 'newPassword', this.share.password)\n\t\t\t\t} else {\n\t\t\t\t\tthis.share.password = ''\n\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\t\t\t\t}\n\t\t\t},\n\t\t},\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\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\tisPasswordEnforced() {\n\t\t\treturn this.isPublicShare && this.config.enforcePasswordForPublicLink\n\t\t},\n\t\tdefaultExpiryDate() {\n\t\t\tif ((this.isGroupShare || this.isUserShare) && this.config.isDefaultInternalExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultInternalExpirationDate)\n\t\t\t} else if (this.isRemoteShare && this.config.isDefaultRemoteExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultRemoteExpireDateEnabled)\n\t\t\t} else if (this.isPublicShare && this.config.isDefaultExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultExpirationDate)\n\t\t\t}\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t},\n\t\tisUserShare() {\n\t\t\treturn this.share.type === ShareType.User\n\t\t},\n\t\tisGroupShare() {\n\t\t\treturn this.share.type === ShareType.Group\n\t\t},\n\t\tallowsFileDrop() {\n\t\t\tif (this.isFolder && this.config.isPublicUploadEnabled) {\n\t\t\t\tif (this.share.type === ShareType.Link || this.share.type === ShareType.Email) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\thasFileDropPermissions() {\n\t\t\treturn this.share.permissions === this.bundledPermissions.FILE_DROP\n\t\t},\n\t\tshareButtonText() {\n\t\t\tif (this.isNewShare) {\n\t\t\t\treturn t('files_sharing', 'Save share')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Update share')\n\n\t\t},\n\t\tresharingIsPossible() {\n\t\t\treturn this.config.isResharingAllowed && this.share.type !== ShareType.Link && this.share.type !== ShareType.Email\n\t\t},\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\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\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\t\tcanRemoveReadPermission() {\n\t\t\treturn this.allowsFileDrop && (\n\t\t\t\tthis.share.type === ShareType.Link\n\t\t\t\t\t|| this.share.type === ShareType.Email\n\t\t\t)\n\t\t},\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\t\tpasswordExpirationTime() {\n\t\t\tif (!this.isValidShareAttribute(this.share.passwordExpirationTime)) {\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\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\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 === ShareType.Email\n\t\t\t\t: false\n\t\t},\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPublicShare || !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// Is Talk enabled?\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.value === false\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t\tcustomPermissionsList() {\n\t\t\t// Key order will be different, because ATOMIC_PERMISSIONS are numbers\n\t\t\tconst translatedPermissions = {\n\t\t\t\t[ATOMIC_PERMISSIONS.READ]: this.t('files_sharing', 'Read'),\n\t\t\t\t[ATOMIC_PERMISSIONS.CREATE]: this.t('files_sharing', 'Create'),\n\t\t\t\t[ATOMIC_PERMISSIONS.UPDATE]: this.t('files_sharing', 'Edit'),\n\t\t\t\t[ATOMIC_PERMISSIONS.SHARE]: this.t('files_sharing', 'Share'),\n\t\t\t\t[ATOMIC_PERMISSIONS.DELETE]: this.t('files_sharing', 'Delete'),\n\t\t\t}\n\n\t\t\treturn [ATOMIC_PERMISSIONS.READ, ATOMIC_PERMISSIONS.CREATE, ATOMIC_PERMISSIONS.UPDATE, ...(this.resharingIsPossible ? [ATOMIC_PERMISSIONS.SHARE] : []), ATOMIC_PERMISSIONS.DELETE]\n\t\t\t\t.filter((permission) => hasPermissions(this.share.permissions, permission))\n\t\t\t\t.map((permission, index) => index === 0\n\t\t\t\t\t? translatedPermissions[permission]\n\t\t\t\t\t: translatedPermissions[permission].toLocaleLowerCase(getLanguage()))\n\t\t\t\t.join(', ')\n\t\t},\n\t\tadvancedControlExpandedValue() {\n\t\t\treturn this.advancedSectionAccordionExpanded ? 'true' : 'false'\n\t\t},\n\t\terrorPasswordLabel() {\n\t\t\tif (this.passwordError) {\n\t\t\t\treturn t('files_sharing', 'Password field cannot be empty')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\n\t\tpasswordHint() {\n\t\t\tif (this.isNewShare || this.hasUnsavedPassword) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Replace current password')\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\tconst filterValidAction = (action) => (action.shareType.includes(ShareType.Link) || action.shareType.includes(ShareType.Email)) && action.advanced\n\t\t\t// filter only the advanced registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(filterValidAction)\n\t\t},\n\t},\n\twatch: {\n\t\tsetCustomPermissions(isChecked) {\n\t\t\tif (isChecked) {\n\t\t\t\tthis.sharingPermission = 'custom'\n\t\t\t} else {\n\t\t\t\tthis.sharingPermission = this.revertSharingPermission\n\t\t\t}\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.initializePermissions()\n\t\tthis.initializeAttributes()\n\t\tlogger.debug('Share object received', { share: this.share })\n\t\tlogger.debug('Configuration object received', { config: this.config })\n\t},\n\n\tmounted() {\n\t\tthis.$refs.quickPermissions?.querySelector('input:checked')?.focus()\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Set a share attribute on the current share\n\t\t * @param {string} scope The attribute scope\n\t\t * @param {string} key The attribute key\n\t\t * @param {boolean} value The value\n\t\t */\n\t\tsetShareAttribute(scope, key, value) {\n\t\t\tif (!this.share.attributes) {\n\t\t\t\tthis.$set(this.share, 'attributes', [])\n\t\t\t}\n\n\t\t\tconst attribute = this.share.attributes\n\t\t\t\t.find((attr) => attr.scope === scope || attr.key === key)\n\n\t\t\tif (attribute) {\n\t\t\t\tattribute.value = value\n\t\t\t} else {\n\t\t\t\tthis.share.attributes.push({\n\t\t\t\t\tscope,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get the value of a share attribute\n\t\t * @param {string} scope The attribute scope\n\t\t * @param {string} key The attribute key\n\t\t * @param {undefined|boolean} fallback The fallback to return if not found\n\t\t */\n\t\tgetShareAttribute(scope, key, fallback = undefined) {\n\t\t\tconst attribute = this.share.attributes?.find((attr) => attr.scope === scope && attr.key === key)\n\t\t\treturn attribute?.value ?? fallback\n\t\t},\n\n\t\tasync generateNewToken() {\n\t\t\tif (this.loadingToken) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loadingToken = true\n\t\t\ttry {\n\t\t\t\tthis.share.token = await generateToken()\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('files_sharing', 'Failed to generate a new token'))\n\t\t\t}\n\t\t\tthis.loadingToken = false\n\t\t},\n\n\t\tcancel() {\n\t\t\tthis.share.token = this.initialToken\n\t\t\tthis.$emit('close-sharing-details')\n\t\t},\n\n\t\tupdateAtomicPermissions({\n\t\t\tisReadChecked = this.hasRead,\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} = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (isReadChecked ? ATOMIC_PERMISSIONS.READ : 0)\n\t\t\t\t| (isCreateChecked ? ATOMIC_PERMISSIONS.CREATE : 0)\n\t\t\t\t| (isDeleteChecked ? ATOMIC_PERMISSIONS.DELETE : 0)\n\t\t\t\t| (isEditChecked ? ATOMIC_PERMISSIONS.UPDATE : 0)\n\t\t\t\t| (isReshareChecked ? ATOMIC_PERMISSIONS.SHARE : 0)\n\t\t\tthis.share.permissions = permissions\n\t\t},\n\t\texpandCustomPermissions() {\n\t\t\tif (!this.advancedSectionAccordionExpanded) {\n\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t}\n\t\t\tthis.toggleCustomPermissions()\n\t\t},\n\t\ttoggleCustomPermissions(selectedPermission) {\n\t\t\tconst isCustomPermissions = this.sharingPermission === 'custom'\n\t\t\tthis.revertSharingPermission = !isCustomPermissions ? selectedPermission : 'custom'\n\t\t\tthis.setCustomPermissions = isCustomPermissions\n\t\t},\n\t\tasync initializeAttributes() {\n\n\t\t\tif (this.isNewShare) {\n\t\t\t\tif (this.isPasswordEnforced && this.isPublicShare) {\n\t\t\t\t\tthis.$set(this.share, 'newPassword', await GeneratePassword(true))\n\t\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t\t}\n\t\t\t\t/* Set default expiration dates if configured */\n\t\t\t\tif (this.isPublicShare && this.config.isDefaultExpireDateEnabled) {\n\t\t\t\t\tthis.share.expireDate = this.config.defaultExpirationDate.toDateString()\n\t\t\t\t} else if (this.isRemoteShare && this.config.isDefaultRemoteExpireDateEnabled) {\n\t\t\t\t\tthis.share.expireDate = this.config.defaultRemoteExpirationDateString.toDateString()\n\t\t\t\t} else if (this.config.isDefaultInternalExpireDateEnabled) {\n\t\t\t\t\tthis.share.expireDate = this.config.defaultInternalExpirationDate.toDateString()\n\t\t\t\t}\n\n\t\t\t\tif (this.isValidShareAttribute(this.share.expireDate)) {\n\t\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t\t}\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If there is an enforced expiry date, then existing shares created before enforcement\n\t\t\t// have no expiry date, hence we set it here.\n\t\t\tif (!this.isValidShareAttribute(this.share.expireDate) && this.isExpiryDateEnforced) {\n\t\t\t\tthis.hasExpirationDate = true\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.isValidShareAttribute(this.share.password)\n\t\t\t\t|| this.isValidShareAttribute(this.share.expireDate)\n\t\t\t\t|| this.isValidShareAttribute(this.share.label)\n\t\t\t) {\n\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t}\n\n\t\t\tif (this.share.note) {\n\t\t\t\tthis.writeNoteToRecipientIsChecked = true\n\t\t\t}\n\n\t\t},\n\t\thandleShareType() {\n\t\t\tif ('shareType' in this.share) {\n\t\t\t\tthis.share.type = this.share.shareType\n\t\t\t} else if (this.share.share_type) {\n\t\t\t\tthis.share.type = this.share.share_type\n\t\t\t}\n\t\t},\n\t\thandleDefaultPermissions() {\n\t\t\tif (this.isNewShare) {\n\t\t\t\tconst defaultPermissions = this.config.defaultPermissions\n\t\t\t\tif (defaultPermissions === BUNDLED_PERMISSIONS.READ_ONLY || defaultPermissions === BUNDLED_PERMISSIONS.ALL) {\n\t\t\t\t\tthis.sharingPermission = defaultPermissions.toString()\n\t\t\t\t} else {\n\t\t\t\t\tthis.sharingPermission = 'custom'\n\t\t\t\t\tthis.share.permissions = defaultPermissions\n\t\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t\t\tthis.setCustomPermissions = true\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Read permission required for share creation\n\t\t\tif (!this.canRemoveReadPermission) {\n\t\t\t\tthis.hasRead = true\n\t\t\t}\n\t\t},\n\t\thandleCustomPermissions() {\n\t\t\tif (!this.isNewShare && (this.hasCustomPermissions || this.share.setCustomPermissions)) {\n\t\t\t\tthis.sharingPermission = 'custom'\n\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t\tthis.setCustomPermissions = true\n\t\t\t} else if (this.share.permissions) {\n\t\t\t\tthis.sharingPermission = this.share.permissions.toString()\n\t\t\t}\n\t\t},\n\t\tinitializePermissions() {\n\t\t\tthis.handleShareType()\n\t\t\tthis.handleDefaultPermissions()\n\t\t\tthis.handleCustomPermissions()\n\t\t},\n\t\tasync saveShare() {\n\t\t\tconst permissionsAndAttributes = ['permissions', 'attributes', 'note', 'expireDate']\n\t\t\tconst publicShareAttributes = ['label', 'password', 'hideDownload']\n\t\t\tif (this.config.allowCustomTokens) {\n\t\t\t\tpublicShareAttributes.push('token')\n\t\t\t}\n\t\t\tif (this.isPublicShare) {\n\t\t\t\tpermissionsAndAttributes.push(...publicShareAttributes)\n\t\t\t}\n\t\t\tconst sharePermissionsSet = parseInt(this.sharingPermission)\n\t\t\tif (this.setCustomPermissions) {\n\t\t\t\tthis.updateAtomicPermissions()\n\t\t\t} else {\n\t\t\t\tthis.share.permissions = sharePermissionsSet\n\t\t\t}\n\n\t\t\tif (!this.isFolder && this.share.permissions === BUNDLED_PERMISSIONS.ALL) {\n\t\t\t\t// It's not possible to create an existing file.\n\t\t\t\tthis.share.permissions = BUNDLED_PERMISSIONS.ALL_FILE\n\t\t\t}\n\t\t\tif (!this.writeNoteToRecipientIsChecked) {\n\t\t\t\tthis.share.note = ''\n\t\t\t}\n\t\t\tif (this.isPasswordProtected) {\n\t\t\t\tif (this.hasUnsavedPassword && this.isValidShareAttribute(this.share.newPassword)) {\n\t\t\t\t\tthis.share.password = this.share.newPassword\n\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\t\t\t\t} else if (this.isPasswordEnforced && this.isNewShare && !this.isValidShareAttribute(this.share.password)) {\n\t\t\t\t\tthis.passwordError = true\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.share.password = ''\n\t\t\t}\n\n\t\t\tif (!this.hasExpirationDate) {\n\t\t\t\tthis.share.expireDate = ''\n\t\t\t}\n\n\t\t\tif (this.isNewShare) {\n\t\t\t\tconst incomingShare = {\n\t\t\t\t\tpermissions: this.share.permissions,\n\t\t\t\t\tshareType: this.share.type,\n\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\tattributes: this.share.attributes,\n\t\t\t\t\tnote: this.share.note,\n\t\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\t}\n\n\t\t\t\tincomingShare.expireDate = this.hasExpirationDate ? this.share.expireDate : ''\n\n\t\t\t\tif (this.isPasswordProtected) {\n\t\t\t\t\tincomingShare.password = this.share.password\n\t\t\t\t}\n\n\t\t\t\tlet share\n\t\t\t\ttry {\n\t\t\t\t\tthis.creating = true\n\t\t\t\t\tshare = await this.addShare(incomingShare)\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.creating = false\n\t\t\t\t\t// Error is already handled by ShareRequests mixin\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// ugly hack to make code work - we need the id to be set but at the same time we need to keep values we want to update\n\t\t\t\tthis.share._share.id = share.id\n\t\t\t\tawait this.queueUpdate(...permissionsAndAttributes)\n\t\t\t\t// Also a ugly hack to update the updated permissions\n\t\t\t\tfor (const prop of permissionsAndAttributes) {\n\t\t\t\t\tif (prop in share && prop in this.share) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tshare[prop] = this.share[prop]\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\tshare._share[prop] = this.share[prop]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.share = share\n\t\t\t\tthis.creating = false\n\t\t\t\tthis.$emit('add:share', this.share)\n\t\t\t} else {\n\t\t\t\t// Let's update after creation as some attrs are only available after creation\n\t\t\t\tthis.$emit('update:share', this.share)\n\t\t\t\temit('update:share', this.share)\n\t\t\t\tthis.queueUpdate(...permissionsAndAttributes)\n\t\t\t}\n\n\t\t\tawait this.getNode()\n\t\t\temit('files:node:updated', this.node)\n\n\t\t\tif (this.$refs.externalLinkActions?.length > 0) {\n\t\t\t\tawait Promise.allSettled(this.$refs.externalLinkActions.map((action) => {\n\t\t\t\t\tif (typeof action.$children.at(0)?.onSave !== 'function') {\n\t\t\t\t\t\treturn Promise.resolve()\n\t\t\t\t\t}\n\t\t\t\t\treturn action.$children.at(0)?.onSave?.()\n\t\t\t\t}))\n\t\t\t}\n\n\t\t\tthis.$emit('close-sharing-details')\n\t\t},\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {Share} share incoming share object\n\t\t */\n\t\tasync addShare(share) {\n\t\t\tlogger.debug('Adding a new share from the input for', { share })\n\t\t\tconst path = this.path\n\t\t\ttry {\n\t\t\t\tconst resultingShare = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: share.shareType,\n\t\t\t\t\tshareWith: share.shareWith,\n\t\t\t\t\tpermissions: share.permissions,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\tattributes: JSON.stringify(share.attributes),\n\t\t\t\t\t...(share.note ? { note: share.note } : {}),\n\t\t\t\t\t...(share.password ? { password: share.password } : {}),\n\t\t\t\t})\n\t\t\t\treturn resultingShare\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Error while adding new share', { error })\n\t\t\t} finally {\n\t\t\t\t// this.loading = false // No loader here yet\n\t\t\t}\n\t\t},\n\t\tasync removeShare() {\n\t\t\tawait this.onDelete()\n\t\t\tawait this.getNode()\n\t\t\temit('files:node:updated', this.node)\n\t\t\tthis.$emit('close-sharing-details')\n\t\t},\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\tif (password === '') {\n\t\t\t\tthis.$delete(this.share, 'newPassword')\n\t\t\t\tthis.passwordError = this.isNewShare && this.isPasswordEnforced\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.passwordError = !this.isValidShareAttribute(password)\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\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\t\tisValidShareAttribute(value) {\n\t\t\tif ([null, undefined].includes(value)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif (!(value.trim().length > 0)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn true\n\t\t},\n\t\tgetShareTypeIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase ShareType.Link:\n\t\t\t\treturn LinkIcon\n\t\t\tcase ShareType.Guest:\n\t\t\t\treturn UserIcon\n\t\t\tcase ShareType.RemoteGroup:\n\t\t\tcase ShareType.Group:\n\t\t\t\treturn GroupIcon\n\t\t\tcase ShareType.Email:\n\t\t\t\treturn EmailIcon\n\t\t\tcase ShareType.Team:\n\t\t\t\treturn CircleIcon\n\t\t\tcase ShareType.Room:\n\t\t\t\treturn ShareIcon\n\t\t\tcase ShareType.Deck:\n\t\t\t\treturn ShareIcon\n\t\t\tcase ShareType.ScienceMesh:\n\t\t\t\treturn ShareIcon\n\t\t\tdefault:\n\t\t\t\treturn null // Or a default icon component if needed\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharingTabDetailsView {\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\tmargin: 0 auto;\n\tposition: relative;\n\theight: 100%;\n\toverflow: hidden;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0.2em;\n\n\t\tspan {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\th1 {\n\t\t\t\tfont-size: 15px;\n\t\t\t\tpadding-inline-start: 0.3em;\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__wrapper {\n\t\tposition: relative;\n\t\toverflow: scroll;\n\t\tflex-shrink: 1;\n\t\tpadding: 4px;\n\t\tpadding-inline-end: 12px;\n\t}\n\n\t&__quick-permissions {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\tmargin: 0 auto;\n\t\tborder-radius: 0;\n\n\t\tdiv {\n\t\t\twidth: 100%;\n\n\t\t\tspan {\n\t\t\t\twidth: 100%;\n\n\t\t\t\tspan:nth-child(1) {\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tpadding: 0.1em;\n\t\t\t\t}\n\n\t\t\t\t:deep(label span) {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-direction: column;\n\t\t\t\t}\n\n\t\t\t\t/* Target component based style in NcCheckboxRadioSwitch slot content*/\n\t\t\t\t:deep(span.checkbox-content__text.checkbox-radio-switch__text) {\n\t\t\t\t\tflex-wrap: wrap;\n\n\t\t\t\t\t.subline {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tflex-basis: 100%;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__advanced-control {\n\t\twidth: 100%;\n\n\t\tbutton {\n\t\t\tmargin-top: 0.5em;\n\t\t}\n\n\t}\n\n\t&__advanced {\n\t\twidth: 100%;\n\t\tmargin-bottom: 0.5em;\n\t\ttext-align: start;\n\t\tpadding-inline-start: 0;\n\n\t\tsection {\n\n\t\t\ttextarea,\n\t\t\tdiv.mx-datepicker {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttextarea {\n\t\t\t\theight: 80px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t The following style is applied out of the component's scope\n\t\t\t to remove padding from the label.checkbox-radio-switch__label,\n\t\t\t which is used to group radio checkbox items. The use of ::v-deep\n\t\t\t ensures that the padding is modified without being affected by\n\t\t\t the component's scoping.\n\t\t\t Without this achieving left alignment for the checkboxes would not\n\t\t\t be possible.\n\t\t\t*/\n\t\t\tspan :deep(label) {\n\t\t\t\tpadding-inline-start: 0 !important;\n\t\t\t\tbackground-color: initial !important;\n\t\t\t\tborder: none !important;\n\t\t\t}\n\n\t\t\tsection.custom-permissions-group {\n\t\t\t\tpadding-inline-start: 1.5em;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__label {\n\t\tpadding-block-end: 6px;\n\t}\n\n\t&__delete {\n\t\t> button:first-child {\n\t\t\tcolor: rgb(223, 7, 7);\n\t\t}\n\t}\n\n\t&__footer {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\talign-items: flex-start;\n\t\tbackground: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));\n\n\t\t.button-group {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t\twidth: 100%;\n\t\t\tmargin-top: 16px;\n\n\t\t\tbutton {\n\t\t\t\tmargin-inline-start: 16px;\n\n\t\t\t\t&:first-child {\n\t\t\t\t\tmargin-inline-start: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { generateOcsUrl } from '@nextcloud/router';\nexport const generateToken = async () => {\n const { data } = await axios.get(generateOcsUrl('/apps/files_sharing/api/v1/token'));\n return data.ocs.data.token;\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=style&index=0&id=53f964d4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./SharingDetailsTab.vue?vue&type=style&index=0&id=53f964d4&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingDetailsTab.vue?vue&type=template&id=53f964d4&scoped=true\"\nimport script from \"./SharingDetailsTab.vue?vue&type=script&lang=js\"\nexport * from \"./SharingDetailsTab.vue?vue&type=script&lang=js\"\nimport style0 from \"./SharingDetailsTab.vue?vue&type=style&index=0&id=53f964d4&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 \"53f964d4\",\n null\n \n)\n\nexport default component.exports","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"sharingTab\" :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-show=\"!showSharingDetailsView\"\n\t\t\tclass=\"sharingTab__content\">\n\t\t\t<!-- shared with me information -->\n\t\t\t<ul v-if=\"isSharedWithMe\">\n\t\t\t\t<SharingEntrySimple v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t\t<template #avatar>\n\t\t\t\t\t\t<NcAvatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t\t\t\t</template>\n\t\t\t\t</SharingEntrySimple>\n\t\t\t</ul>\n\n\t\t\t<section>\n\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t<h4>{{ t('files_sharing', 'Internal shares') }}</h4>\n\t\t\t\t\t<NcPopover popup-role=\"dialog\">\n\t\t\t\t\t\t<template #trigger>\n\t\t\t\t\t\t\t<NcButton class=\"hint-icon\"\n\t\t\t\t\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Internal shares explanation')\">\n\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t<InfoIcon :size=\"20\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<p class=\"hint-body\">\n\t\t\t\t\t\t\t{{ internalSharesHelpText }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</NcPopover>\n\t\t\t\t</div>\n\t\t\t\t<!-- add new share input -->\n\t\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t\t:shares=\"shares\"\n\t\t\t\t\t:placeholder=\"t('files_sharing', 'Share with accounts and teams')\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t\t<!-- other shares list -->\n\t\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\t\tref=\"shareList\"\n\t\t\t\t\t:shares=\"shares\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t\t<!-- inherited shares -->\n\t\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t\t<!-- internal link copy -->\n\t\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\t\t\t</section>\n\n\t\t\t<section>\n\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t<h4>{{ t('files_sharing', 'External shares') }}</h4>\n\t\t\t\t\t<NcPopover popup-role=\"dialog\">\n\t\t\t\t\t\t<template #trigger>\n\t\t\t\t\t\t\t<NcButton class=\"hint-icon\"\n\t\t\t\t\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'External shares explanation')\">\n\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t<InfoIcon :size=\"20\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<p class=\"hint-body\">\n\t\t\t\t\t\t\t{{ externalSharesHelpText }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</NcPopover>\n\t\t\t\t</div>\n\t\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t\t:is-external=\"true\"\n\t\t\t\t\t:placeholder=\"t('files_sharing', 'Email, federated cloud id')\"\n\t\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t\t:shares=\"shares\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\t\t\t\t<!-- link shares list -->\n\t\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\t\tref=\"linkShareList\"\n\t\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:shares=\"linkShares\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\t\t\t</section>\n\n\t\t\t<section v-if=\"sections.length > 0 && !showSharingDetailsView\">\n\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t<h4>{{ t('files_sharing', 'Additional shares') }}</h4>\n\t\t\t\t\t<NcPopover popup-role=\"dialog\">\n\t\t\t\t\t\t<template #trigger>\n\t\t\t\t\t\t\t<NcButton class=\"hint-icon\"\n\t\t\t\t\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Additional shares explanation')\">\n\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t<InfoIcon :size=\"20\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<p class=\"hint-body\">\n\t\t\t\t\t\t\t{{ additionalSharesHelpText }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</NcPopover>\n\t\t\t\t</div>\n\t\t\t\t<!-- additional entries, use it with cautious -->\n\t\t\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t\t\t:ref=\"'section-' + index\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t\t\t</div>\n\n\t\t\t\t<!-- projects (deprecated as of NC25 (replaced by related_resources) - see instance config \"projects.enabled\" ; ignore this / remove it / move into own section) -->\n\t\t\t\t<div v-if=\"projectsEnabled\"\n\t\t\t\t\tv-show=\"!showSharingDetailsView && fileInfo\"\n\t\t\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t\t\t<CollectionList :id=\"`${fileInfo.id}`\"\n\t\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t\t:name=\"fileInfo.name\" />\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t</div>\n\n\t\t<!-- share details -->\n\t\t<SharingDetailsTab v-if=\"showSharingDetailsView\"\n\t\t\t:file-info=\"shareDetailsData.fileInfo\"\n\t\t\t:share=\"shareDetailsData.share\"\n\t\t\t@close-sharing-details=\"toggleShareDetailsView\"\n\t\t\t@add:share=\"addShare\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { orderBy } from '@nextcloud/files'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { ShareType } from '@nextcloud/sharing'\n\nimport InfoIcon from 'vue-material-design-icons/Information.vue'\nimport NcPopover from '@nextcloud/vue/components/NcPopover'\n\nimport axios from '@nextcloud/axios'\nimport moment from '@nextcloud/moment'\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport NcButton from '@nextcloud/vue/components/NcButton'\n\nimport { shareWithTitle } from '../utils/SharedWithMe.js'\n\nimport Config from '../services/ConfigService.ts'\nimport Share from '../models/Share.ts'\nimport SharingEntryInternal from '../components/SharingEntryInternal.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\nimport SharingInput from '../components/SharingInput.vue'\n\nimport SharingInherited from './SharingInherited.vue'\nimport SharingLinkList from './SharingLinkList.vue'\nimport SharingList from './SharingList.vue'\nimport SharingDetailsTab from './SharingDetailsTab.vue'\n\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tCollectionList,\n\t\tInfoIcon,\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tNcPopover,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t\tSharingDetailsTab,\n\t},\n\tmixins: [ShareDetails],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tdeleteEvent: null,\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\tshowSharingDetailsView: false,\n\t\t\tshareDetailsData: {},\n\t\t\treturnFocusElement: null,\n\n\t\t\tinternalSharesHelpText: t('files_sharing', 'Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access.'),\n\t\t\texternalSharesHelpText: t('files_sharing', 'Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID.'),\n\t\t\tadditionalSharesHelpText: t('files_sharing', 'Shares that are not part of the internal or external shares. This can be shares from apps or other sources.'),\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\tthis.showSharingDetailsView = false\n\t\t\tthis.shareDetailsData = {}\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: moment(expiration * 1000).fromNow(),\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\tconst shares = orderBy(\n\t\t\t\t\tdata.ocs.data.map(share => new Share(share)),\n\t\t\t\t\t[\n\t\t\t\t\t\t// First order by the \"share with\" label\n\t\t\t\t\t\t(share) => share.shareWithDisplayName,\n\t\t\t\t\t\t// Then by the label\n\t\t\t\t\t\t(share) => share.label,\n\t\t\t\t\t\t// And last resort order by createdTime\n\t\t\t\t\t\t(share) => share.createdTime,\n\t\t\t\t\t],\n\t\t\t\t)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === ShareType.Link || share.type === ShareType.Email)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== ShareType.Link && share.type !== ShareType.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 !== getCurrentUser().uid : 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 === ShareType.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\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\t// Get reference for this.linkShares or this.shares\n\t\t\tconst shareList\n\t\t\t\t= share.type === ShareType.Email\n\t\t\t\t\t|| share.type === ShareType.Link\n\t\t\t\t\t? this.linkShares\n\t\t\t\t\t: this.shares\n\t\t\tconst index = shareList.findIndex(item => item.id === share.id)\n\t\t\tif (index !== -1) {\n\t\t\t\tshareList.splice(index, 1)\n\t\t\t}\n\t\t},\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\tlet listComponent = this.$refs.shareList\n\t\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t\t// are managed internally in the SharingLinkList component\n\t\t\t\tif (share.type === ShareType.Email) {\n\t\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t\t}\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\n\t\ttoggleShareDetailsView(eventData) {\n\t\t\tif (!this.showSharingDetailsView) {\n\t\t\t\tconst isAction = Array.from(document.activeElement.classList)\n\t\t\t\t\t.some(className => className.startsWith('action-'))\n\t\t\t\tif (isAction) {\n\t\t\t\t\tconst menuId = document.activeElement.closest('[role=\"menu\"]')?.id\n\t\t\t\t\tthis.returnFocusElement = document.querySelector(`[aria-controls=\"${menuId}\"]`)\n\t\t\t\t} else {\n\t\t\t\t\tthis.returnFocusElement = document.activeElement\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (eventData) {\n\t\t\t\tthis.shareDetailsData = eventData\n\t\t\t}\n\n\t\t\tthis.showSharingDetailsView = !this.showSharingDetailsView\n\n\t\t\tif (!this.showSharingDetailsView) {\n\t\t\t\tthis.$nextTick(() => { // Wait for next tick as the element must be visible to be focused\n\t\t\t\t\tthis.returnFocusElement?.focus()\n\t\t\t\t\tthis.returnFocusElement = null\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\tposition: relative;\n\theight: 100%;\n\n\t&__content {\n\t\tpadding: 0 6px;\n\n\t\tsection {\n\t\t\tpadding-bottom: 16px;\n\n\t\t\t.section-header {\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tmargin-bottom: 2px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tpadding-bottom: 4px;\n\n\t\t\t\th4 {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t}\n\n\t\t\t\t.visually-hidden {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\n\t\t\t\t.hint-icon {\n\t\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t& > section:not(:last-child) {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\n\t}\n\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n\n.hint-body {\n\tmax-width: 300px;\n\tpadding: var(--border-radius-element);\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { ShareType } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareType.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 === ShareType.Team) {\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 === ShareType.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=630c7354&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=630c7354&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=630c7354&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=630c7354&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 \"630c7354\",\n null\n \n)\n\nexport default component.exports","import { o as logger } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator = {};\nvar util = {};\nvar hasRequiredUtil;\nfunction requireUtil() {\n if (hasRequiredUtil) return util;\n hasRequiredUtil = 1;\n (function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n })(util);\n return util;\n}\nvar hasRequiredValidator;\nfunction requireValidator() {\n if (hasRequiredValidator) return validator;\n hasRequiredValidator = 1;\n const util2 = requireUtil();\n const defaultOptions = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n };\n validator.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n };\n function isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n }\n function readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n }\n function readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n }\n const doubleQuote = '\"';\n const singleQuote = \"'\";\n function readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n }\n const validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\n function validateAttributeString(attrStr, options) {\n const matches = util2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n }\n function validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n }\n function validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n }\n function getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n }\n function validateAttrName(attrName) {\n return util2.isName(attrName);\n }\n function validateTagName(tagname) {\n return util2.isName(tagname);\n }\n function getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n }\n function getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n }\n return validator;\n}\nvar OptionsBuilder = {};\nvar hasRequiredOptionsBuilder;\nfunction requireOptionsBuilder() {\n if (hasRequiredOptionsBuilder) return OptionsBuilder;\n hasRequiredOptionsBuilder = 1;\n const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n };\n const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n };\n OptionsBuilder.buildOptions = buildOptions;\n OptionsBuilder.defaultOptions = defaultOptions;\n return OptionsBuilder;\n}\nvar xmlNode;\nvar hasRequiredXmlNode;\nfunction requireXmlNode() {\n if (hasRequiredXmlNode) return xmlNode;\n hasRequiredXmlNode = 1;\n class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n }\n xmlNode = XmlNode;\n return xmlNode;\n}\nvar DocTypeReader;\nvar hasRequiredDocTypeReader;\nfunction requireDocTypeReader() {\n if (hasRequiredDocTypeReader) return DocTypeReader;\n hasRequiredDocTypeReader = 1;\n const util2 = requireUtil();\n function readDocType(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n let entityName, val;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else comment = true;\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n }\n function readEntityExp(xmlData, i2) {\n let entityName = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName += xmlData[i2];\n }\n entityName = entityName.trim();\n if (entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val += xmlData[i2];\n }\n return [entityName, val, i2];\n }\n function isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n }\n function isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n }\n function validateEntityName(name) {\n if (util2.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n }\n DocTypeReader = readDocType;\n return DocTypeReader;\n}\nvar strnum;\nvar hasRequiredStrnum;\nfunction requireStrnum() {\n if (hasRequiredStrnum) return strnum;\n hasRequiredStrnum = 1;\n const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\n const numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n if (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n }\n if (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n }\n const consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n };\n function toNumber(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n }\n function trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n }\n strnum = toNumber;\n return strnum;\n}\nvar ignoreAttributes;\nvar hasRequiredIgnoreAttributes;\nfunction requireIgnoreAttributes() {\n if (hasRequiredIgnoreAttributes) return ignoreAttributes;\n hasRequiredIgnoreAttributes = 1;\n function getIgnoreAttributesFn(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n }\n ignoreAttributes = getIgnoreAttributesFn;\n return ignoreAttributes;\n}\nvar OrderedObjParser_1;\nvar hasRequiredOrderedObjParser;\nfunction requireOrderedObjParser() {\n if (hasRequiredOrderedObjParser) return OrderedObjParser_1;\n hasRequiredOrderedObjParser = 1;\n const util2 = requireUtil();\n const xmlNode2 = requireXmlNode();\n const readDocType = requireDocTypeReader();\n const toNumber = requireStrnum();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n }\n }\n function addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n }\n function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val);\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n }\n function resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n }\n const attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\n function buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util2.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n }\n const parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode2(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode2(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == void 0) val = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode2(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n };\n function addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n }\n const replaceEntitiesValue = function(val) {\n if (this.options.processEntities) {\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n val = val.replace(entity.regx, entity.val);\n }\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n };\n function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n }\n function isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n }\n function tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n }\n function findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n }\n function readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n }\n function readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n }\n function parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === \"string\") {\n const newval = val.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val, options);\n } else {\n if (util2.isExist(val)) {\n return val;\n } else {\n return \"\";\n }\n }\n }\n OrderedObjParser_1 = OrderedObjParser;\n return OrderedObjParser_1;\n}\nvar node2json = {};\nvar hasRequiredNode2json;\nfunction requireNode2json() {\n if (hasRequiredNode2json) return node2json;\n hasRequiredNode2json = 1;\n function prettify(node, options) {\n return compress(node, options);\n }\n function compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n }\n function assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n }\n function isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n }\n node2json.prettify = prettify;\n return node2json;\n}\nvar XMLParser_1;\nvar hasRequiredXMLParser;\nfunction requireXMLParser() {\n if (hasRequiredXMLParser) return XMLParser_1;\n hasRequiredXMLParser = 1;\n const { buildOptions } = requireOptionsBuilder();\n const OrderedObjParser = requireOrderedObjParser();\n const { prettify } = requireNode2json();\n const validator2 = requireValidator();\n class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator2.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n }\n XMLParser_1 = XMLParser;\n return XMLParser_1;\n}\nvar orderedJs2Xml;\nvar hasRequiredOrderedJs2Xml;\nfunction requireOrderedJs2Xml() {\n if (hasRequiredOrderedJs2Xml) return orderedJs2Xml;\n hasRequiredOrderedJs2Xml = 1;\n const EOL = \"\\n\";\n function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n }\n function arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n }\n function attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n }\n function isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n }\n function replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n }\n orderedJs2Xml = toXml;\n return orderedJs2Xml;\n}\nvar json2xml;\nvar hasRequiredJson2xml;\nfunction requireJson2xml() {\n if (hasRequiredJson2xml) return json2xml;\n hasRequiredJson2xml = 1;\n const buildFromOrderedJs = requireOrderedJs2Xml();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n const defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&amp;\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"&apos;\" },\n { regex: new RegExp('\"', \"g\"), val: \"&quot;\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n };\n function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n }\n Builder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n };\n Builder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val += \"\";\n } else if (key[0] === \"?\") {\n val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val };\n };\n Builder.prototype.buildAttrPairStr = function(attrName, val) {\n val = this.options.attributeValueProcessor(attrName, \"\" + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val + '\"';\n };\n function processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n }\n Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val + this.indentate(level) + tagEndExp;\n }\n }\n };\n Builder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`;\n }\n return closeTag;\n };\n Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \"</\" + key + this.tagEndChar;\n }\n }\n };\n Builder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n };\n function indentate(level) {\n return this.options.indentBy.repeat(level);\n }\n function isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n }\n json2xml = Builder;\n return json2xml;\n}\nvar fxp;\nvar hasRequiredFxp;\nfunction requireFxp() {\n if (hasRequiredFxp) return fxp;\n hasRequiredFxp = 1;\n const validator2 = requireValidator();\n const XMLParser = requireXMLParser();\n const XMLBuilder = requireJson2xml();\n fxp = {\n XMLParser,\n XMLValidator: validator2,\n XMLBuilder\n };\n return fxp;\n}\nvar fxpExports = requireFxp();\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxpExports.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxpExports.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n"],"names":["module","exports","commonjsRequire","Error","qrcode","fn","createCommonjsModule","f","r","e","n","t","o","i","u","a","code","p","call","length","require","Promise","prototype","then","getSymbolSize","getRowColCoords","version","posCount","Math","floor","size","intervals","ceil","positions","push","reverse","getPositions","coords","pos","posLength","j","Mode","ALPHA_NUM_CHARS","AlphanumericData","data","this","mode","ALPHANUMERIC","getBitsLength","getLength","write","bitBuffer","value","indexOf","put","BitBuffer","buffer","get","index","bufIndex","num","putBit","getLengthInBits","bit","BufferUtil","BitMatrix","alloc","reservedBit","set","row","col","reserved","xor","isReserved","ByteData","BYTE","from","l","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","L","M","Q","H","getTotalCodewordsCount","isValid","level","defaultValue","string","toLowerCase","fromString","Utils","G15_BCH","getBCHDigit","getEncodedBits","mask","d","EXP_TABLE","LOG_TABLE","x","log","exp","mul","y","KanjiData","KANJI","toSJIS","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","maskPattern","isNaN","parseInt","undefined","getPenaltyN1","points","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","last","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","abs","applyMask","pattern","getBestMask","setupFormatFunc","numPatterns","Object","keys","bestPattern","lowerPenalty","Infinity","penalty","VersionCheck","Regex","NUMERIC","id","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","toString","NumericData","group","substr","remainingNum","GF","p1","p2","coeff","mod","divident","divisor","result","offset","slice","generateECPolynomial","degree","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","isArray","setupFormatInfo","matrix","bits","createData","segments","forEach","dataTotalCodewordsBits","getSymbolTotalCodewords","remainingByte","totalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","Array","ecData","maxDataSize","b","dataSize","encode","max","createCodewords","createSymbol","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","modules","c","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","dark","setupData","bind","create","options","toSJISFunc","setToSJISFunction","Polynomial","Buffer","genPoly","initialize","pad","paddedData","concat","remainder","start","buff","copy","numeric","kanji","byte","replace","RegExp","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","str","test","dijkstra","getStringByteLength","unescape","encodeURIComponent","getSegments","regex","exec","getSegmentsFromString","byteSegs","kanjiSegs","numSegs","alphaNumSegs","isKanjiModeEnabled","sort","s1","s2","map","obj","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","array","reduce","acc","seg","graph","nodes","table","prevNodeIds","nodeGroup","currentNodeIds","node","key","lastCount","prevNodeId","buildGraph","segs","buildNodes","path","find_path","optimizedSegs","curr","prevSeg","toSJISFunction","CODEWORDS_COUNT","digit","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getCapacity","usableBits","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","text","opts","cb","args","arguments","argsNum","isLastArgCb","getContext","resolve","reject","toCanvas","render","toDataURL","renderToDataURL","_","qrData","canvasEl","document","createElement","getCanvasElement","getOptions","getImageWidth","ctx","image","createImageData","qrToImageData","clearRect","width","height","style","clearCanvas","putImageData","type","rendererOpts","quality","getColorAttrib","color","attrib","alpha","hex","toFixed","svgCmd","cmd","qrcodesize","margin","bg","light","moveBy","newRow","lineLength","qrToPath","viewBox","svgTag","hex2rgba","hexCode","split","apply","hexValue","join","g","scale","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","TYPED_ARRAY_SUPPORT","arr","Uint8Array","__proto__","foo","typedArraySupport","K_MAX_LENGTH","arg","allocUnsafe","that","TypeError","ArrayBuffer","byteOffset","byteLength","RangeError","buf","fromArrayLike","fromArrayBuffer","createBuffer","actual","isBuffer","len","checked","val","fromObject","utf8ToBytes","units","codePoint","leadSurrogate","bytes","charCodeAt","isView","Symbol","species","defineProperty","configurable","enumerable","writable","isFinite","remaining","src","dst","blitBuffer","utf8Write","end","newBuf","subarray","sliceLen","target","targetStart","fill","list","_isBuffer","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","output","base64","ieee754","customInspectSymbol","for","SlowBuffer","INSPECT_MAX_BYTES","setPrototypeOf","encodingOrOffset","encoding","isEncoding","isInstance","valueOf","numberIsNaN","toPrimitive","assertSize","mustMatch","loweredCase","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","hexWrite","Number","strLen","parsed","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","kMaxLength","proto","console","error","poolSize","allocUnsafeSlow","compare","swap16","swap32","swap64","toLocaleString","equals","inspect","trim","thisStart","thisEnd","thisCopy","targetCopy","includes","toJSON","_arr","ret","out","hexSliceLookupTable","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","copyWithin","INVALID_BASE64_RE","base64clean","constructor","name","alphabet","i16","single_source_shortest_paths","s","predecessors","costs","closest","v","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","open","PriorityQueue","make","empty","pop","cost","hasOwnProperty","msg","extract_shortest_path_from_predecessor_list","T","queue","sorter","default_sorter","item","shift","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","props","tag","default","$slots","watch","$props","deep","immediate","handler","$el","generate","methods","_this","url","innerHTML","mounted","factory","___CSS_LOADER_EXPORT___","self","ampersandTest","nativeURLSearchParams","URLSearchParams","isSupportObjectConstructor","decodesPlusesCorrectly","isSupportSize","__URLSearchParams__","encodesAmpersandsCorrectly","append","URLSearchParamsPolyfill","iterable","iterator","appendTo","dict","has","getAll","query","propValue","useProxy","Proxy","construct","Function","USPProto","polyfill","toStringTag","callback","thisArg","parseToDict","getOwnPropertyNames","k","values","items","makeIterator","entries","prev","cur","search","match","decode","decodeURIComponent","next","done","pairs","JSON","stringify","prop","window","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","global","freeSelf","Date","now","reWhitespace","reTrimStart","charAt","objectProto","nativeObjectToString","symToStringTag","isOwn","unmasked","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","isBinary","nativeMax","nativeMin","service","http","listCollection","collectionId","renameCollection","collectionName","ocs","getCollectionsByResource","resourceType","resourceId","createCollection","post","response","addResource","removeResource","delete","params","state","collections","mutations","addCollections","addCollection","collection","removeCollection","filter","updateCollection","findIndex","_item","actions","fetchCollectionsByResource","baseResourceType","baseResourceId","addResourceToCollection","resources","normalizeComponent","scriptExports","render3","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","CollectionListItem","components","NcAvatar","NcActions","NcActionButton","detailsOpen","newName","computed","getIcon","resource","iconClass","typeClass","limitedResources","iconUrl","mimetype","OC","MimeType","getIconUrl","toggleDetails","showDetails","hideDetails","openRename","catch","$set","setTimeout","_vm","_c","_self","staticClass","attrs","on","_v","_s","class","rename","$event","preventDefault","directives","rawName","expression","domProps","composing","_e","_l","link","_debouncedSearch","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","cancel","flush","loading","searchCollections","finally","_sfc_main","NcSelect","isActive","Boolean","setup","selectIsOpen","generatingCodes","codes","model","isSelectOpen","find","placeholder","OCP","Collaboration","getTypes","method","title","getLabel","action","trigger","select","selectedOption","id2","setError","showSelect","$refs","focus","hideSelect","isVueComponent","object","_isVue","CollectionList","_m","ref","scopedSlots","_u","option","$$v","Config","_defineProperty","_capabilities","getCapabilities","defaultPermissions","files_sharing","default_permissions","isPublicUploadEnabled","public","upload","federatedShareDocLink","appConfig","core","federatedCloudShareDoc","defaultExpirationDate","isDefaultExpireDateEnabled","defaultExpireDate","setDate","getDate","defaultInternalExpirationDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","defaultRemoteExpirationDateString","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","defaultExpireDateEnabled","isDefaultInternalExpireDateEnforced","defaultInternalExpireDateEnforced","defaultInternalExpireDateEnabled","isDefaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isPublicShareAllowed","enabled","isMailShareAllowed","sharebymail","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","password","enforced","shouldAlwaysShowUnique","sharee","always_show_unique","allowGroupSharing","maxAutocompleteResults","config","minSearchStringLength","passwordPolicy","password_policy","allowCustomTokens","custom_tokens","getLoggerBuilder","setApp","detectUser","build","Share","ocsData","hide_download","mail_send","attributes","parse","warn","_share","share_type","permissions","owner","uid_owner","ownerDisplayName","displayname_owner","shareWith","share_with","shareWithDisplayName","share_with_displayname","shareWithDisplayNameUnique","share_with_displayname_unique","shareWithLink","share_with_link","shareWithAvatar","share_with_avatar","uidFileOwner","uid_file_owner","displaynameFileOwner","displayname_file_owner","createdTime","stime","expireDate","expiration","date","token","note","label","mailSend","hideDownload","_ref","scope","passwordExpirationTime","password_expiration_time","sendPasswordByTalk","send_password_by_talk","itemType","item_type","fileSource","file_source","fileTarget","file_target","fileParent","file_parent","hasReadPermission","PERMISSION_READ","hasCreatePermission","PERMISSION_CREATE","hasDeletePermission","PERMISSION_DELETE","hasUpdatePermission","PERMISSION_UPDATE","hasSharePermission","PERMISSION_SHARE","hasDownloadPermission","some","attribute","isFileRequest","logger","setAttribute","attrUpdate","attr","splice","canEdit","can_edit","canDelete","can_delete","viaFileid","via_fileid","viaPath","via_path","storageId","storage_id","storage","itemSource","item_source","status","required","subtitle","isUnique","ariaExpanded","ariaExpandedValue","_t","SharingEntrySimple","CheckIcon","ClipboardIcon","fileInfo","copied","copySuccess","internalLink","location","protocol","host","generateUrl","copyLinkTooltip","internalLinkSubtitle","copyLink","navigator","clipboard","writeText","showSuccess","shareEntrySimple","actionsComponent","proxy","shareUrl","generateOcsUrl","createShare","shareType","publicUpload","request","axios","share","emit","errorMessage","meta","message","showError","deleteShare","Notification","showTemporary","updateShare","properties","openSharingDetails","shareRequestObject","handlerInput","suggestions","externalShareRequestObject","mapShareRequestToShareObject","shareDetails","$emit","openShareDetailsForCustomSettings","setCustomPermissions","is_no_user","isNoUser","user","displayName","mixins","ShareRequests","ShareDetails","shares","linkShares","reshare","canReshare","isExternal","shareInputId","random","recommendations","ShareSearch","OCA","Sharing","externalResults","results","inputPlaceholder","allowRemoteSharing","isValidQuery","noResultText","getRecommendations","onSelected","asyncFind","debounceGetSuggestions","getSuggestions","query_lookup_default","ShareType","Remote","RemoteGroup","User","Group","Team","Room","Guest","Deck","ScienceMesh","Email","format","perPage","exact","rawExactSuggestions","elem","rawSuggestions","exactSuggestions","filterOutExistingShares","formatForMultiselect","lookupEntry","lookupEnabled","condition","allSuggestions","nameCounts","desc","info","debounce","rawRecommendations","getCurrentUser","uid","sharesObj","shareTypeToIcon","icon","iconTitle","Sciencemesh","subname","server","shareWithDescription","uuid","clear-search-on-blur","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","ALL_FILE","client","getClient","SharesRequests","errors","saving","updateQueue","PQueue","concurrency","reactiveState","hasNote","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isNewShare","isFolder","isPublicShare","Link","isRemoteShare","isShareOwner","isExpiryDateEnforced","hasCustomPermissions","maxExpirationDateEnforced","getNode","async","propfindPayload","getDefaultPropfind","stat","getRootPath","details","resultToNode","fetchNode","checkShare","expirationDate","formatDateToString","UTC","getFullYear","getMonth","toISOString","onExpirationChange","formattedDate","onNoteChange","onNoteSubmit","newNote","$delete","queueUpdate","onDelete","debug","_len","propertyNames","_key","updatedShare","updateSuccessMessage","onSyncError","names","property","propertyEl","focusable","querySelector","debounceQueueUpdate","NcActionLink","NcActionText","SharesMixin","viaFileTargetUrl","fileid","viaFolderName","basename","initiator","folder","SharingEntryInherited","loaded","showInheritedShares","showInheritedSharesIcon","mainTitle","subTitle","toggleTooltip","fullPath","resetState","toggleInheritedShares","fetchInheritedShares","removeShare","stopPropagation","emits","fillColor","_b","$attrs","DropdownIcon","ariaLabel","canViewText","canEditText","fileDropText","customPermissionsText","preSelectedOption","IconEyeOutline","IconPencil","supportsFileDrop","IconFileUpload","IconTune","dropDownPermissionValue","created","subscribe","unmounted","unsubscribe","selectOption","optionLabel","quickShareActions","menuButton","NcButton","NcPopover","NcDateTime","ClockIcon","expiryTime","getTime","timeFormat","dateStyle","timeStyle","is","_g","handlers","verbose","api","ratio","passwordSet","crypto","getRandomValues","ExternalShareAction","NcActionCheckbox","NcActionInput","NcActionSeparator","NcDialog","VueQrcode","Tune","IconCalendarBlank","IconQr","ErrorIcon","LockIcon","CloseIcon","PlusIcon","SharingEntryQuickShareSelect","ShareExpiryTime","shareCreationComplete","defaultExpirationDateEnabled","pending","ExternalLegacyLinkActions","ExternalLinkActions","ExternalShareActions","showQRCode","isEmailShareType","isPasswordProtected","Vue","GeneratePassword","expirationTime","moment","diff","fromNow","isTalkEnabled","appswebroots","spreed","isPasswordProtectedByTalkAvailable","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","hasUnsavedPassword","pendingDataIsMissing","pendingPassword","pendingEnforcedPassword","pendingDefaultExpirationDate","pendingEnforcedExpirationDate","isPendingShare","sharePolicyHasEnforcedProperties","enforcedPropertiesMissing","isPasswordMissing","isExpireDateMissing","newPassword","shareLink","baseURL","getBaseUrl","actionsTooltip","externalLegacyLinkActions","externalLinkActions","advanced","isPasswordPolicyEnabled","canChangeHideDownload","shareAttributes","shareAttribute","shareRequiresReview","shareReviewComplete","onNewLinkShare","shareDefaults","component","pushNewLinkShare","update","newShare","copyButton","onPasswordChange","onPasswordDisable","onPasswordSubmit","onPasswordProtectedByTalkChange","onMenuClose","onExpirationDateToggleUpdate","expirationDateChanged","event","onCancel","SharingEntryLink","minLength","actionIndex","canLinkShare","hasLinkShares","hasShares","addShare","awaitForShare","$nextTick","$children","DotsHorizontalIcon","tooltip","hasStatus","SharingEntry","NcCheckboxRadioSwitch","NcDateTimePickerNative","NcInputField","NcLoadingIcon","NcPasswordField","NcTextArea","CircleIcon","EditIcon","LinkIcon","GroupIcon","ShareIcon","UserIcon","UploadIcon","ViewIcon","MenuDownIcon","MenuUpIcon","Refresh","shareRequestValue","writeNoteToRecipientIsChecked","sharingPermission","revertSharingPermission","passwordError","advancedSectionAccordionExpanded","bundledPermissions","isFirstComponentLoad","creating","initialToken","loadingToken","userName","email","updateAtomicPermissions","isEditChecked","canCreate","isCreateChecked","isDeleteChecked","isReshareChecked","showInGridView","getShareAttribute","setShareAttribute","canDownload","hasRead","isReadChecked","hasExpirationDate","isValidShareAttribute","defaultExpiryDate","isSetDownloadButtonVisible","isPasswordEnforced","isGroupShare","isUserShare","allowsFileDrop","hasFileDropPermissions","shareButtonText","resharingIsPossible","canSetEdit","sharePermissions","canSetCreate","canSetDelete","canSetReshare","canSetDownload","canRemoveReadPermission","customPermissionsList","translatedPermissions","permission","hasPermissions","initialPermissionSet","permissionsToCheck","toLocaleLowerCase","getLanguage","advancedControlExpandedValue","errorPasswordLabel","passwordHint","isChecked","beforeMount","initializePermissions","initializeAttributes","quickPermissions","fallback","generateNewToken","generateToken","expandCustomPermissions","toggleCustomPermissions","selectedPermission","isCustomPermissions","toDateString","handleShareType","handleDefaultPermissions","handleCustomPermissions","saveShare","permissionsAndAttributes","publicShareAttributes","sharePermissionsSet","incomingShare","allSettled","at","onSave","getShareTypeIcon","EmailIcon","refInFor","InfoIcon","SharingEntryInternal","SharingInherited","SharingInput","SharingLinkList","SharingList","SharingDetailsTab","deleteEvent","expirationInterval","sharedWithMe","sections","ShareTabSections","getSections","projectsEnabled","loadState","showSharingDetailsView","shareDetailsData","returnFocusElement","internalSharesHelpText","externalSharesHelpText","additionalSharesHelpText","isSharedWithMe","getShares","fetchShares","reshares","fetchSharedWithMe","shared_with_me","all","processSharedWithMe","processShares","clearInterval","updateExpirationSubtitle","unix","relativetime","orderBy","_ref2","escape","circle","conversation","shareWithTitle","setInterval","shareOwnerId","shareOwner","unshift","shareList","listComponent","linkShareList","toggleShareDetailsView","eventData","activeElement","classList","className","startsWith","menuId","emptyContentWithSections","section","humanList","humanListBinary","formatFileSize","skipSmallSizes","binaryPrefixes","base1000","order","readableFormat","relativeSize","parseFloat","identifiers2","orders","sorting","collator","Intl","Collator","usage","a2","b2","identifier","sortNodes","sortingOptions","sortingMode","sortingOrder","sortFavoritesFirst","favorite","sortFoldersFirst","basename2","displayname","hasRequiredUtil","hasRequiredValidator","validator","util","requireUtil","nameStartChar","nameRegexp","regexName","isExist","isEmptyObject","merge","arrayMode","i2","getValue","isName","getAllMatches","matches","allmatches","startIndex","lastIndex","requireValidator","util2","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","tagname","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","assign","tags","tagFound","reachedRoot","err","tagStartPos","closingTag","tagName","substring","readAttributeStr","attrStr","attrStrStart","validateAttributeString","line","tagClosed","otg","openPos","afterAmp","validateAmpersand","t2","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","re2","validateNumberAmpersand","count","lineNumber","lines","hasRequiredOptionsBuilder","xmlNode","hasRequiredXmlNode","DocTypeReader","hasRequiredDocTypeReader","strnum","hasRequiredStrnum","ignoreAttributes","hasRequiredIgnoreAttributes","OrderedObjParser_1","hasRequiredOrderedObjParser","OptionsBuilder","requireIgnoreAttributes","ignoreAttributes2","hasRequiredNode2json","XMLParser_1","hasRequiredXMLParser","orderedJs2Xml","hasRequiredOrderedJs2Xml","json2xml","hasRequiredJson2xml","fxp","hasRequiredFxp","debug_1","hasRequiredDebug","constants","hasRequiredConstants","node2json","requireNode2json","compress","jPath","compressedObj","tagObj","propName","newJpath","textNodeName","isLeaf","isLeafTag","assignAttributes","alwaysCreateTextNode","attrMap","jpath","atrrName","propCount","prettify","requireXMLParser","buildOptions","preserveOrder","attributeNamePrefix","attributesGroupName","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","requireOptionsBuilder","OrderedObjParser","xmlNode2","child","addChild","readDocType","readEntityExp","entityName","isEntity","isElement","isAttlist","isNotation","validateEntityName","entities","hasBody","comment","regx","requireDocTypeReader","toNumber","hexRegex","numRegex","consider","decimalPoint","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","requireStrnum","getIgnoreAttributesFn","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","requireOrderedObjParser","validator2","validationOption","orderedObjParser","orderedResult","addEntity","requireOrderedJs2Xml","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attrVal","suppressBooleanAttributes","textValue","jArray","requireDebug","process","env","NODE_DEBUG","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","XMLParser","XMLBuilder","buildFromOrderedJs","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","ajPath","j2x","buildTextValNode","buildObjectNode","repeat","jObj","arrayNodeName","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","Ks","closeTag","tagEndExp","piClosingChar","requireJson2xml","XMLValidator","requireFxp","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","requireSemver","safeRe","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","includePrerelease","m2","LOOSE","FULL","raw","major","minor","patch","prerelease","compareMain","comparePre","compareBuild","release","identifierBase","base","throwErrors","er","requireParse","requireValid","requireMajor"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/4672-4672.js.map.license b/dist/4672-4672.js.map.license
new file mode 120000
index 00000000000..4aad8d72d8e
--- /dev/null
+++ b/dist/4672-4672.js.map.license
@@ -0,0 +1 @@
+4672-4672.js.license \ 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 363ca7b046e..e39db0a38b1 100644
--- a/dist/files_sharing-files_sharing_tab.js
+++ b/dist/files_sharing-files_sharing_tab.js
@@ -1,2 +1,2 @@
-(()=>{"use strict";var e,t,r,i={69196:(e,t,r)=>{var i=r(85471),n=r(21777),o=r(53334);r.nc=(0,n.aV)(),window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new class{constructor(){var e,t,r;e=this,r=void 0,(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t="_state"))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.results=[],console.debug("OCA.Sharing.ShareSearch initialized")}get state(){return this._state}addNewResult(e){return""!==e.displayName.trim()&&"function"==typeof e.handler?(this._state.results.push(e),!0):(console.error("Invalid search result provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new class{constructor(){var e,t,r;e=this,r=void 0,(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t="_state"))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalLinkActions initialized")}get state(){return this._state}registerAction(e){return OC.debug&&console.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"==typeof e&&e.icon&&e.name&&e.url?(this._state.actions.push(e),!0):(console.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new class{constructor(){var e,t,r;e=this,r=void 0,(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t="_state"))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalShareActions initialized")}get state(){return this._state}registerAction(e){return"object"==typeof e&&"string"==typeof e.id&&"function"==typeof e.data&&Array.isArray(e.shareType)&&"object"==typeof e.handlers&&Object.values(e.handlers).every((e=>"function"==typeof e))?this._state.actions.findIndex((t=>t.id===e.id))>-1?(console.error(`An action with the same id ${e.id} already exists`,e),!1):(this._state.actions.push(e),!0):(console.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ShareTabSections:new class{constructor(){var e,t,r;e=this,r=void 0,(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t="_sections"))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._sections=[]}registerSection(e){this._sections.push(e)}getSections(){return this._sections}}}),i.Ay.prototype.t=o.t,i.Ay.prototype.n=o.n;let a=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,o.t)("files_sharing","Sharing"),iconSvg:'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-share-variant" viewBox="0 0 24 24"><path d="M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19A2.92,2.92 0 0,0 18,16.08Z" /></svg>',async mount(e,t,n){const o=(await Promise.all([r.e(4208),r.e(4542)]).then(r.bind(r,58760))).default,s=i.Ay.extend(o);a&&a.$destroy(),a=new s({parent:n}),await a.update(t),a.$mount(e)},update(e){a.update(e)},destroy(){a&&(a.$destroy(),a=null)}}))}))}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=i,e=[],o.O=(t,r,i,n)=>{if(!r){var a=1/0;for(u=0;u<e.length;u++){r=e[u][0],i=e[u][1],n=e[u][2];for(var s=!0,c=0;c<r.length;c++)(!1&n||a>=n)&&Object.keys(o.O).every((e=>o.O[e](r[c])))?r.splice(c--,1):(s=!1,n<a&&(a=n));if(s){e.splice(u--,1);var l=i();void 0!==l&&(t=l)}}return t}n=n||0;for(var u=e.length;u>0&&e[u-1][2]>n;u--)e[u]=e[u-1];e[u]=[r,i,n]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,r)=>(o.f[r](e,t),t)),[])),o.u=e=>e+"-"+e+".js?v="+{857:"89447025dfbc21bc3d51",2441:"abb0f9caea1b27348963",4542:"6ae44488299a7decef00",5862:"142cd48ca8ec32e57725",9904:"a48e2d9b44aa4db82a9e"}[e],o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="nextcloud:",o.l=(e,i,n,a)=>{if(t[e])t[e].push(i);else{var s,c;if(void 0!==n)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var d=l[u];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==r+n){s=d;break}}s||(c=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,o.nc&&s.setAttribute("nonce",o.nc),s.setAttribute("data-webpack",r+n),s.src=e),t[e]=[i];var f=(r,i)=>{s.onerror=s.onload=null,clearTimeout(p);var n=t[e];if(delete t[e],s.parentNode&&s.parentNode.removeChild(s),n&&n.forEach((e=>e(i))),r)return r(i)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=f.bind(null,s.onerror),s.onload=f.bind(null,s.onload),c&&document.head.appendChild(s)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=4958,(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var i=r.length-1;i>-1&&(!e||!/^http(s?):/.test(e));)e=r[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{o.b=document.baseURI||self.location.href;var e={4958:0};o.f.j=(t,r)=>{var i=o.o(e,t)?e[t]:void 0;if(0!==i)if(i)r.push(i[2]);else{var n=new Promise(((r,n)=>i=e[t]=[r,n]));r.push(i[2]=n);var a=o.p+o.u(t),s=new Error;o.l(a,(r=>{if(o.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+n+": "+a+")",s.name="ChunkLoadError",s.type=n,s.request=a,i[1](s)}}),"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,r)=>{var i,n,a=r[0],s=r[1],c=r[2],l=0;if(a.some((t=>0!==e[t]))){for(i in s)o.o(s,i)&&(o.m[i]=s[i]);if(c)var u=c(o)}for(t&&t(r);l<a.length;l++)n=a[l],o.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return o.O(u)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),o.nc=void 0;var a=o.O(void 0,[4208],(()=>o(69196)));a=o.O(a)})();
-//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=5c8d0d8e69a417b9fbb9 \ No newline at end of file
+(()=>{"use strict";var e,t,r,i={69196:(e,t,r)=>{var i=r(85471),n=r(21777),o=r(53334);r.nc=(0,n.aV)(),window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new class{constructor(){var e,t,r;e=this,r=void 0,(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t="_state"))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.results=[],console.debug("OCA.Sharing.ShareSearch initialized")}get state(){return this._state}addNewResult(e){return""!==e.displayName.trim()&&"function"==typeof e.handler?(this._state.results.push(e),!0):(console.error("Invalid search result provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new class{constructor(){var e,t,r;e=this,r=void 0,(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t="_state"))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalLinkActions initialized")}get state(){return this._state}registerAction(e){return OC.debug&&console.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"==typeof e&&e.icon&&e.name&&e.url?(this._state.actions.push(e),!0):(console.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new class{constructor(){var e,t,r;e=this,r=void 0,(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t="_state"))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalShareActions initialized")}get state(){return this._state}registerAction(e){return"object"==typeof e&&"string"==typeof e.id&&"function"==typeof e.data&&Array.isArray(e.shareType)&&"object"==typeof e.handlers&&Object.values(e.handlers).every((e=>"function"==typeof e))?this._state.actions.findIndex((t=>t.id===e.id))>-1?(console.error(`An action with the same id ${e.id} already exists`,e),!1):(this._state.actions.push(e),!0):(console.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ShareTabSections:new class{constructor(){var e,t,r;e=this,r=void 0,(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t="_sections"))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._sections=[]}registerSection(e){this._sections.push(e)}getSections(){return this._sections}}}),i.Ay.prototype.t=o.t,i.Ay.prototype.n=o.n;let a=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,o.t)("files_sharing","Sharing"),iconSvg:'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-share-variant" viewBox="0 0 24 24"><path d="M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19A2.92,2.92 0 0,0 18,16.08Z" /></svg>',async mount(e,t,n){const o=(await Promise.all([r.e(4208),r.e(4672)]).then(r.bind(r,51366))).default,s=i.Ay.extend(o);a&&a.$destroy(),a=new s({parent:n}),await a.update(t),a.$mount(e)},update(e){a.update(e)},destroy(){a&&(a.$destroy(),a=null)}}))}))}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=i,e=[],o.O=(t,r,i,n)=>{if(!r){var a=1/0;for(u=0;u<e.length;u++){r=e[u][0],i=e[u][1],n=e[u][2];for(var s=!0,c=0;c<r.length;c++)(!1&n||a>=n)&&Object.keys(o.O).every((e=>o.O[e](r[c])))?r.splice(c--,1):(s=!1,n<a&&(a=n));if(s){e.splice(u--,1);var l=i();void 0!==l&&(t=l)}}return t}n=n||0;for(var u=e.length;u>0&&e[u-1][2]>n;u--)e[u]=e[u-1];e[u]=[r,i,n]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,r)=>(o.f[r](e,t),t)),[])),o.u=e=>e+"-"+e+".js?v="+{857:"89447025dfbc21bc3d51",2441:"abb0f9caea1b27348963",4672:"65a913263960ef0da3d2",5862:"142cd48ca8ec32e57725",9904:"a48e2d9b44aa4db82a9e"}[e],o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="nextcloud:",o.l=(e,i,n,a)=>{if(t[e])t[e].push(i);else{var s,c;if(void 0!==n)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var d=l[u];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==r+n){s=d;break}}s||(c=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,o.nc&&s.setAttribute("nonce",o.nc),s.setAttribute("data-webpack",r+n),s.src=e),t[e]=[i];var f=(r,i)=>{s.onerror=s.onload=null,clearTimeout(p);var n=t[e];if(delete t[e],s.parentNode&&s.parentNode.removeChild(s),n&&n.forEach((e=>e(i))),r)return r(i)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=f.bind(null,s.onerror),s.onload=f.bind(null,s.onload),c&&document.head.appendChild(s)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=4958,(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var i=r.length-1;i>-1&&(!e||!/^http(s?):/.test(e));)e=r[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{o.b=document.baseURI||self.location.href;var e={4958:0};o.f.j=(t,r)=>{var i=o.o(e,t)?e[t]:void 0;if(0!==i)if(i)r.push(i[2]);else{var n=new Promise(((r,n)=>i=e[t]=[r,n]));r.push(i[2]=n);var a=o.p+o.u(t),s=new Error;o.l(a,(r=>{if(o.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+n+": "+a+")",s.name="ChunkLoadError",s.type=n,s.request=a,i[1](s)}}),"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,r)=>{var i,n,a=r[0],s=r[1],c=r[2],l=0;if(a.some((t=>0!==e[t]))){for(i in s)o.o(s,i)&&(o.m[i]=s[i]);if(c)var u=c(o)}for(t&&t(r);l<a.length;l++)n=a[l],o.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return o.O(u)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),o.nc=void 0;var a=o.O(void 0,[4208],(()=>o(69196)));a=o.O(a)})();
+//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=18257e15e042d68bd151 \ 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 252703979ba..d64c6723915 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=5c8d0d8e69a417b9fbb9","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","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/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (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((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { t, n } from '@nextcloud/l10n'\n\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 n/no-missing-import, import/no-unresolved\nimport ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce()\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\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\tconst SharingTab = (await import('./views/SharingTab.vue')).default\n\t\t\t\tconst View = Vue.extend(SharingTab)\n\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\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\n\t\t\tdestroy() {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t\tTabInstance = null\n\t\t\t\t}\n\t\t\t},\n\t\t}))\n\t}\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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\tOC.debug && console.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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * @typedef ExternalShareActionData\n\t * @property {import('vue').Component} is Vue component to render, for advanced actions the `async onSave` method of the component will be called when saved\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 {(data: any) => ExternalShareActionData & Record<string, unknown>} 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 {boolean} action.advanced `true` if the action entry should be rendered within advanced settings\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.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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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","// 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 = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"857\":\"89447025dfbc21bc3d51\",\"2441\":\"abb0f9caea1b27348963\",\"4542\":\"6ae44488299a7decef00\",\"5862\":\"142cd48ca8ec32e57725\",\"9904\":\"a48e2d9b44aa4db82a9e\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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 = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4958;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4958: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (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((id) => (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, [4208], () => (__webpack_require__(69196)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","__webpack_nonce__","getCSPNonce","window","OCA","Sharing","Object","assign","ShareSearch","constructor","this","_state","results","console","debug","state","addNewResult","result","displayName","trim","handler","push","error","ExternalLinkActions","actions","registerAction","action","OC","warn","icon","name","url","ExternalShareActions","id","data","Array","isArray","shareType","handlers","values","every","findIndex","check","ShareTabSections","_sections","registerSection","section","getSections","Vue","prototype","t","n","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","iconSvg","mount","el","fileInfo","context","SharingTab","default","View","extend","$destroy","parent","update","$mount","destroy","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","key","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_sharing-files_sharing_tab.js?v=18257e15e042d68bd151","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","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/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (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((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { t, n } from '@nextcloud/l10n'\n\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 n/no-missing-import, import/no-unresolved\nimport ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce()\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\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\tconst SharingTab = (await import('./views/SharingTab.vue')).default\n\t\t\t\tconst View = Vue.extend(SharingTab)\n\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\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\n\t\t\tdestroy() {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t\tTabInstance = null\n\t\t\t\t}\n\t\t\t},\n\t\t}))\n\t}\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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\tOC.debug && console.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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * @typedef ExternalShareActionData\n\t * @property {import('vue').Component} is Vue component to render, for advanced actions the `async onSave` method of the component will be called when saved\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 {(data: any) => ExternalShareActionData & Record<string, unknown>} 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 {boolean} action.advanced `true` if the action entry should be rendered within advanced settings\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.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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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","// 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 = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"857\":\"89447025dfbc21bc3d51\",\"2441\":\"abb0f9caea1b27348963\",\"4672\":\"65a913263960ef0da3d2\",\"5862\":\"142cd48ca8ec32e57725\",\"9904\":\"a48e2d9b44aa4db82a9e\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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 = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4958;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4958: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (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((id) => (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, [4208], () => (__webpack_require__(69196)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","__webpack_nonce__","getCSPNonce","window","OCA","Sharing","Object","assign","ShareSearch","constructor","this","_state","results","console","debug","state","addNewResult","result","displayName","trim","handler","push","error","ExternalLinkActions","actions","registerAction","action","OC","warn","icon","name","url","ExternalShareActions","id","data","Array","isArray","shareType","handlers","values","every","findIndex","check","ShareTabSections","_sections","registerSection","section","getSections","Vue","prototype","t","n","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","iconSvg","mount","el","fileInfo","context","SharingTab","default","View","extend","$destroy","parent","update","$mount","destroy","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","key","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/base.php b/lib/base.php
index bda6b6e01a1..c1182e47d61 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -704,7 +704,7 @@ class OC {
if (count($errors) > 0) {
if (!self::$CLI) {
http_response_code(503);
- OC_Util::addStyle('guest');
+ Util::addStyle('guest');
try {
Server::get(ITemplateManager::class)->printGuestPage('', 'error', ['errors' => $errors]);
exit;
diff --git a/lib/l10n/ar.js b/lib/l10n/ar.js
index 76fcb38898c..f0e8d40fd3e 100644
--- a/lib/l10n/ar.js
+++ b/lib/l10n/ar.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "المسار تمّت مشاركته سلفاً مع هذه المجموعة",
"Link sharing is not allowed" : "المشاركة عبر الروابط غير مسموحة",
"Public upload is not allowed" : "الرفع من قِبَل العموم غير مسموح به",
- "Path contains files shared with you" : "يحتوي المسار على ملفات تمّت مشاركتها معك",
"Sharing is disabled" : "المشاركة معطلة",
"Sharing is disabled for you" : "المشاركة معطلة بالنسبة لك",
"Cannot share with the share owner" : "لا يمكنك المشاركة مع مالك المشاركة",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "اضغط على الزر الذي تحته ليتم فتحه.",
"File is currently busy, please try again later" : "إنّ الملف مشغول الآمن، يرجى إعادة المحاولة لاحقًا",
"Cannot download file" : "لا يمكن تنزيل الملف",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "تأكد من وجود ملفٍ باسم \".ocdata\" في جذر دليل البيانات data directory."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "تأكد من وجود ملفٍ باسم \".ocdata\" في جذر دليل البيانات data directory.",
+ "Path contains files shared with you" : "يحتوي المسار على ملفات تمّت مشاركتها معك"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/lib/l10n/ar.json b/lib/l10n/ar.json
index 8a48e9d6ae2..9e57a5fb567 100644
--- a/lib/l10n/ar.json
+++ b/lib/l10n/ar.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "المسار تمّت مشاركته سلفاً مع هذه المجموعة",
"Link sharing is not allowed" : "المشاركة عبر الروابط غير مسموحة",
"Public upload is not allowed" : "الرفع من قِبَل العموم غير مسموح به",
- "Path contains files shared with you" : "يحتوي المسار على ملفات تمّت مشاركتها معك",
"Sharing is disabled" : "المشاركة معطلة",
"Sharing is disabled for you" : "المشاركة معطلة بالنسبة لك",
"Cannot share with the share owner" : "لا يمكنك المشاركة مع مالك المشاركة",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "اضغط على الزر الذي تحته ليتم فتحه.",
"File is currently busy, please try again later" : "إنّ الملف مشغول الآمن، يرجى إعادة المحاولة لاحقًا",
"Cannot download file" : "لا يمكن تنزيل الملف",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "تأكد من وجود ملفٍ باسم \".ocdata\" في جذر دليل البيانات data directory."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "تأكد من وجود ملفٍ باسم \".ocdata\" في جذر دليل البيانات data directory.",
+ "Path contains files shared with you" : "يحتوي المسار على ملفات تمّت مشاركتها معك"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
} \ No newline at end of file
diff --git a/lib/l10n/br.js b/lib/l10n/br.js
index b5b4b818f7c..c923454254d 100644
--- a/lib/l10n/br.js
+++ b/lib/l10n/br.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"Files" : "Restroù",
"View profile" : "Gwelet ar profil",
"today" : "hiziv",
+ "tomorrow" : "arc'hoazh",
"yesterday" : "dec'h",
"_%n day ago_::_%n days ago_" : ["%n deiz zo","%n deiz zo","%n deiz zo","%n deiz zo","%n deiz zo"],
"last month" : "ar miz tremenet",
@@ -27,20 +28,44 @@ OC.L10N.register(
"__language_name__" : "Brezhoneg",
"Apps" : "Meziant",
"Settings" : "Arventennoù",
- "Log out" : "Kuitat",
+ "Log out" : "Digennaskañ",
"Accounts" : "Kontoù",
"Email" : "Postel",
"Twitter" : "Twitter",
- "Website" : "Lec'hien web",
+ "Website" : "Lec'hienn web",
"Address" : "Chom-lec'h",
- "Profile picture" : "Skeudenn trolinenn",
+ "Profile picture" : "Skeudenn brofil",
"About" : "Diwar-benn",
"Display name" : "Anv ardivink",
"Role" : "Roll",
"Additional settings" : "Stummoù ouzhpenn",
"Set an admin password." : "Lakaat ur ger-tremenn merour.",
"Sharing backend for %s not found" : "Rannadenn backend evit %s n'eo ket bet kavet",
+ "Sunday" : "Sul",
"Monday" : "Lun",
+ "Wednesday" : "Merc'her",
+ "Friday" : "Gwener",
+ "Mon." : "Lun",
+ "Fri." : "Gwe.",
+ "Sat." : "Sad.",
+ "January" : "Genver",
+ "February" : "C'hwevrer",
+ "March" : "Meurzh",
+ "April" : "Ebrel",
+ "May" : "Mae",
+ "June" : "Even",
+ "July" : "Gouere",
+ "August" : "Eost",
+ "September" : "Gwengolo",
+ "October" : "Here",
+ "November" : "Du",
+ "December" : "Kerdu",
+ "Feb." : "C'hw.",
+ "May." : "Mae.",
+ "Jun." : "Even",
+ "Aug." : "Eost",
+ "Nov." : "Du",
+ "Dec." : "Ker.",
"Login canceled by app" : "Mont tre arrestet gant ar meziant",
"Application is not enabled" : "N'eo ket aotreet ar meziant",
"Authentication error" : "Fazi dilesa",
@@ -48,6 +73,7 @@ OC.L10N.register(
"PHP module %s not installed." : "Modul %s PHPn n'eo ket staliet.",
"Storage connection error. %s" : "Fazi renkañ kenstag. %s",
"Storage is temporarily not available" : "N'haller ket tizhout ar skor roadennoù evit ar poent",
+ "Text" : "Testenn",
"Summary" : "Diverrañ",
"Translate" : "Treiñ",
"File name contains at least one invalid character" : "Un arouez fall ez eus d'an neubeutañ en anv restr",
diff --git a/lib/l10n/br.json b/lib/l10n/br.json
index df2360c1223..6f80aaa7703 100644
--- a/lib/l10n/br.json
+++ b/lib/l10n/br.json
@@ -10,6 +10,7 @@
"Files" : "Restroù",
"View profile" : "Gwelet ar profil",
"today" : "hiziv",
+ "tomorrow" : "arc'hoazh",
"yesterday" : "dec'h",
"_%n day ago_::_%n days ago_" : ["%n deiz zo","%n deiz zo","%n deiz zo","%n deiz zo","%n deiz zo"],
"last month" : "ar miz tremenet",
@@ -25,20 +26,44 @@
"__language_name__" : "Brezhoneg",
"Apps" : "Meziant",
"Settings" : "Arventennoù",
- "Log out" : "Kuitat",
+ "Log out" : "Digennaskañ",
"Accounts" : "Kontoù",
"Email" : "Postel",
"Twitter" : "Twitter",
- "Website" : "Lec'hien web",
+ "Website" : "Lec'hienn web",
"Address" : "Chom-lec'h",
- "Profile picture" : "Skeudenn trolinenn",
+ "Profile picture" : "Skeudenn brofil",
"About" : "Diwar-benn",
"Display name" : "Anv ardivink",
"Role" : "Roll",
"Additional settings" : "Stummoù ouzhpenn",
"Set an admin password." : "Lakaat ur ger-tremenn merour.",
"Sharing backend for %s not found" : "Rannadenn backend evit %s n'eo ket bet kavet",
+ "Sunday" : "Sul",
"Monday" : "Lun",
+ "Wednesday" : "Merc'her",
+ "Friday" : "Gwener",
+ "Mon." : "Lun",
+ "Fri." : "Gwe.",
+ "Sat." : "Sad.",
+ "January" : "Genver",
+ "February" : "C'hwevrer",
+ "March" : "Meurzh",
+ "April" : "Ebrel",
+ "May" : "Mae",
+ "June" : "Even",
+ "July" : "Gouere",
+ "August" : "Eost",
+ "September" : "Gwengolo",
+ "October" : "Here",
+ "November" : "Du",
+ "December" : "Kerdu",
+ "Feb." : "C'hw.",
+ "May." : "Mae.",
+ "Jun." : "Even",
+ "Aug." : "Eost",
+ "Nov." : "Du",
+ "Dec." : "Ker.",
"Login canceled by app" : "Mont tre arrestet gant ar meziant",
"Application is not enabled" : "N'eo ket aotreet ar meziant",
"Authentication error" : "Fazi dilesa",
@@ -46,6 +71,7 @@
"PHP module %s not installed." : "Modul %s PHPn n'eo ket staliet.",
"Storage connection error. %s" : "Fazi renkañ kenstag. %s",
"Storage is temporarily not available" : "N'haller ket tizhout ar skor roadennoù evit ar poent",
+ "Text" : "Testenn",
"Summary" : "Diverrañ",
"Translate" : "Treiñ",
"File name contains at least one invalid character" : "Un arouez fall ez eus d'an neubeutañ en anv restr",
diff --git a/lib/l10n/ca.js b/lib/l10n/ca.js
index 1ea2550ad48..c56f62842b2 100644
--- a/lib/l10n/ca.js
+++ b/lib/l10n/ca.js
@@ -199,7 +199,6 @@ OC.L10N.register(
"Path is already shared with this group" : "El camí ja està compartit amb aquest grup",
"Link sharing is not allowed" : "La compartició d'enllaços no és permesa",
"Public upload is not allowed" : "La pujada pública no és permesa",
- "Path contains files shared with you" : "El camí conté fitxers compartits amb tu",
"Sharing is disabled" : "S’ha desactivat la compartició",
"Sharing is disabled for you" : "La compartició està desactivada per a tu",
"Cannot share with the share owner" : "No es pot compartir amb el propietari de la compartició",
@@ -455,6 +454,7 @@ OC.L10N.register(
"Click the button below to open it." : "Feu clic en el botó següent per a obrir-ho.",
"File is currently busy, please try again later" : "El fitxer està ocupat actualment; torneu-ho a provar més tard",
"Cannot download file" : "No es pot baixar el fitxer",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assegureu-vos que hi hagi un fitxer anomenat «.ocdata» en l'arrel de la carpeta de dades."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assegureu-vos que hi hagi un fitxer anomenat «.ocdata» en l'arrel de la carpeta de dades.",
+ "Path contains files shared with you" : "El camí conté fitxers compartits amb tu"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ca.json b/lib/l10n/ca.json
index 10da3a4f90b..8eba7546c9b 100644
--- a/lib/l10n/ca.json
+++ b/lib/l10n/ca.json
@@ -197,7 +197,6 @@
"Path is already shared with this group" : "El camí ja està compartit amb aquest grup",
"Link sharing is not allowed" : "La compartició d'enllaços no és permesa",
"Public upload is not allowed" : "La pujada pública no és permesa",
- "Path contains files shared with you" : "El camí conté fitxers compartits amb tu",
"Sharing is disabled" : "S’ha desactivat la compartició",
"Sharing is disabled for you" : "La compartició està desactivada per a tu",
"Cannot share with the share owner" : "No es pot compartir amb el propietari de la compartició",
@@ -453,6 +452,7 @@
"Click the button below to open it." : "Feu clic en el botó següent per a obrir-ho.",
"File is currently busy, please try again later" : "El fitxer està ocupat actualment; torneu-ho a provar més tard",
"Cannot download file" : "No es pot baixar el fitxer",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assegureu-vos que hi hagi un fitxer anomenat «.ocdata» en l'arrel de la carpeta de dades."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assegureu-vos que hi hagi un fitxer anomenat «.ocdata» en l'arrel de la carpeta de dades.",
+ "Path contains files shared with you" : "El camí conté fitxers compartits amb tu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js
index ba26fef8f93..a555e184052 100644
--- a/lib/l10n/cs.js
+++ b/lib/l10n/cs.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Umístění už je této skupině nasdíleno",
"Link sharing is not allowed" : "Sdílení odkazů není povoleno",
"Public upload is not allowed" : "Veřejné nahrávání není povoleno",
- "Path contains files shared with you" : "Popis umístění obsahuje soubory, které vám byly nasdíleny",
"Sharing is disabled" : "Sdílení je vypnuto",
"Sharing is disabled for you" : "Máte zakázáno sdílet",
"Cannot share with the share owner" : "Nelze sdílet zpět vlastníkovi sdílení",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Pro otevření klikněte na tlačítko níže.",
"File is currently busy, please try again later" : "Soubor je nyní používán, zkuste to později",
"Cannot download file" : "Soubor se nedaří stáhnout",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ověřte, že v kořeni datového adresáře je soubor s názvem „.ocdata“."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ověřte, že v kořeni datového adresáře je soubor s názvem „.ocdata“.",
+ "Path contains files shared with you" : "Popis umístění obsahuje soubory, které vám byly nasdíleny"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json
index caa212f1fa5..3bc1c5ed715 100644
--- a/lib/l10n/cs.json
+++ b/lib/l10n/cs.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Umístění už je této skupině nasdíleno",
"Link sharing is not allowed" : "Sdílení odkazů není povoleno",
"Public upload is not allowed" : "Veřejné nahrávání není povoleno",
- "Path contains files shared with you" : "Popis umístění obsahuje soubory, které vám byly nasdíleny",
"Sharing is disabled" : "Sdílení je vypnuto",
"Sharing is disabled for you" : "Máte zakázáno sdílet",
"Cannot share with the share owner" : "Nelze sdílet zpět vlastníkovi sdílení",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Pro otevření klikněte na tlačítko níže.",
"File is currently busy, please try again later" : "Soubor je nyní používán, zkuste to později",
"Cannot download file" : "Soubor se nedaří stáhnout",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ověřte, že v kořeni datového adresáře je soubor s názvem „.ocdata“."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ověřte, že v kořeni datového adresáře je soubor s názvem „.ocdata“.",
+ "Path contains files shared with you" : "Popis umístění obsahuje soubory, které vám byly nasdíleny"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/lib/l10n/da.js b/lib/l10n/da.js
index 2e98525ecce..4392f37114f 100644
--- a/lib/l10n/da.js
+++ b/lib/l10n/da.js
@@ -199,7 +199,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Sti deles allerede med denne gruppe",
"Link sharing is not allowed" : "Link deling er ikke tilladt",
"Public upload is not allowed" : "Offentlig upload er ikke tilladt",
- "Path contains files shared with you" : "Sti indeholder filer delt med dig",
"Sharing is disabled" : "Deling er deaktiveret",
"Sharing is disabled for you" : "Deling er deaktiveret for dig",
"Cannot share with the share owner" : "Kan ikke dele med delingsejeren",
@@ -455,6 +454,7 @@ OC.L10N.register(
"Click the button below to open it." : "Klik på knappen nedenunder for at åbne.",
"File is currently busy, please try again later" : "Filen er i øjeblikket optaget - forsøg igen senere",
"Cannot download file" : "Kan ikke downloade filen",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Du bedes sikre at filen \".ocdata\" befinder sig i roden af din datamappe."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Du bedes sikre at filen \".ocdata\" befinder sig i roden af din datamappe.",
+ "Path contains files shared with you" : "Sti indeholder filer delt med dig"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/da.json b/lib/l10n/da.json
index ba114cf7ddb..856df1719c3 100644
--- a/lib/l10n/da.json
+++ b/lib/l10n/da.json
@@ -197,7 +197,6 @@
"Path is already shared with this group" : "Sti deles allerede med denne gruppe",
"Link sharing is not allowed" : "Link deling er ikke tilladt",
"Public upload is not allowed" : "Offentlig upload er ikke tilladt",
- "Path contains files shared with you" : "Sti indeholder filer delt med dig",
"Sharing is disabled" : "Deling er deaktiveret",
"Sharing is disabled for you" : "Deling er deaktiveret for dig",
"Cannot share with the share owner" : "Kan ikke dele med delingsejeren",
@@ -453,6 +452,7 @@
"Click the button below to open it." : "Klik på knappen nedenunder for at åbne.",
"File is currently busy, please try again later" : "Filen er i øjeblikket optaget - forsøg igen senere",
"Cannot download file" : "Kan ikke downloade filen",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Du bedes sikre at filen \".ocdata\" befinder sig i roden af din datamappe."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Du bedes sikre at filen \".ocdata\" befinder sig i roden af din datamappe.",
+ "Path contains files shared with you" : "Sti indeholder filer delt med dig"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/de.js b/lib/l10n/de.js
index d2f34087b2d..a1044547f32 100644
--- a/lib/l10n/de.js
+++ b/lib/l10n/de.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Der Pfad ist bereits mit dieser Gruppe geteilt",
"Link sharing is not allowed" : "Freigabe via Link ist nicht erlaubt",
"Public upload is not allowed" : "Öffentliches Hochladen ist nicht erlaubt",
- "Path contains files shared with you" : "Der Pfad enthält für dich freigegebene Dateien",
"Sharing is disabled" : "Teilen ist deaktiviert",
"Sharing is disabled for you" : "Teilen ist für dich deaktiviert",
"Cannot share with the share owner" : "Teilen mit dem Freigabeeigentümer nicht möglich",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
"File is currently busy, please try again later" : "Die Datei ist in Benutzung, bitte versuche es später noch einmal",
"Cannot download file" : "Datei kann nicht heruntergeladen werden.",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Stelle sicher, dass eine Datei \".ocdata\" im Wurzelverzeichnis des data-Verzeichnisses existiert."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Stelle sicher, dass eine Datei \".ocdata\" im Wurzelverzeichnis des data-Verzeichnisses existiert.",
+ "Path contains files shared with you" : "Der Pfad enthält für dich freigegebene Dateien"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/de.json b/lib/l10n/de.json
index f2cb50cd383..35f080dc35b 100644
--- a/lib/l10n/de.json
+++ b/lib/l10n/de.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Der Pfad ist bereits mit dieser Gruppe geteilt",
"Link sharing is not allowed" : "Freigabe via Link ist nicht erlaubt",
"Public upload is not allowed" : "Öffentliches Hochladen ist nicht erlaubt",
- "Path contains files shared with you" : "Der Pfad enthält für dich freigegebene Dateien",
"Sharing is disabled" : "Teilen ist deaktiviert",
"Sharing is disabled for you" : "Teilen ist für dich deaktiviert",
"Cannot share with the share owner" : "Teilen mit dem Freigabeeigentümer nicht möglich",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
"File is currently busy, please try again later" : "Die Datei ist in Benutzung, bitte versuche es später noch einmal",
"Cannot download file" : "Datei kann nicht heruntergeladen werden.",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Stelle sicher, dass eine Datei \".ocdata\" im Wurzelverzeichnis des data-Verzeichnisses existiert."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Stelle sicher, dass eine Datei \".ocdata\" im Wurzelverzeichnis des data-Verzeichnisses existiert.",
+ "Path contains files shared with you" : "Der Pfad enthält für dich freigegebene Dateien"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js
index 1ba97cb410a..5117e42407b 100644
--- a/lib/l10n/de_DE.js
+++ b/lib/l10n/de_DE.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Der Pfad ist bereits mit dieser Gruppe geteilt",
"Link sharing is not allowed" : "Freigabe via Link ist nicht erlaubt",
"Public upload is not allowed" : "Öffentliches Hochladen ist nicht erlaubt",
- "Path contains files shared with you" : "Der Pfad enthält für Sie freigegebene Dateien",
"Sharing is disabled" : "Teilen ist deaktiviert",
"Sharing is disabled for you" : "Teilen ist für Sie deaktiviert",
"Cannot share with the share owner" : "Teilen mit dem Freigabeeigentümer nicht möglich",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
"File is currently busy, please try again later" : "Die Datei ist in Benutzung, bitte später erneut versuchen.",
"Cannot download file" : "Datei kann nicht heruntergeladen werden",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Stellen Sie sicher, dass eine Datei \".ocdata\" im Wurzelverzeichnis des Datenverzeichnisses existiert."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Stellen Sie sicher, dass eine Datei \".ocdata\" im Wurzelverzeichnis des Datenverzeichnisses existiert.",
+ "Path contains files shared with you" : "Der Pfad enthält für Sie freigegebene Dateien"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json
index 31d1b226f58..41c944adc37 100644
--- a/lib/l10n/de_DE.json
+++ b/lib/l10n/de_DE.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Der Pfad ist bereits mit dieser Gruppe geteilt",
"Link sharing is not allowed" : "Freigabe via Link ist nicht erlaubt",
"Public upload is not allowed" : "Öffentliches Hochladen ist nicht erlaubt",
- "Path contains files shared with you" : "Der Pfad enthält für Sie freigegebene Dateien",
"Sharing is disabled" : "Teilen ist deaktiviert",
"Sharing is disabled for you" : "Teilen ist für Sie deaktiviert",
"Cannot share with the share owner" : "Teilen mit dem Freigabeeigentümer nicht möglich",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
"File is currently busy, please try again later" : "Die Datei ist in Benutzung, bitte später erneut versuchen.",
"Cannot download file" : "Datei kann nicht heruntergeladen werden",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Stellen Sie sicher, dass eine Datei \".ocdata\" im Wurzelverzeichnis des Datenverzeichnisses existiert."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Stellen Sie sicher, dass eine Datei \".ocdata\" im Wurzelverzeichnis des Datenverzeichnisses existiert.",
+ "Path contains files shared with you" : "Der Pfad enthält für Sie freigegebene Dateien"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js
index 33f97447e9c..cbaa6e90844 100644
--- a/lib/l10n/en_GB.js
+++ b/lib/l10n/en_GB.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Path is already shared with this group",
"Link sharing is not allowed" : "Link sharing is not allowed",
"Public upload is not allowed" : "Public upload is not allowed",
- "Path contains files shared with you" : "Path contains files shared with you",
"Sharing is disabled" : "Sharing is disabled",
"Sharing is disabled for you" : "Sharing is disabled for you",
"Cannot share with the share owner" : "Cannot share with the share owner",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Click the button below to open it.",
"File is currently busy, please try again later" : "File is currently busy, please try again later",
"Cannot download file" : "Cannot download file",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ensure there is a file called \".ocdata\" in the root of the data directory."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ensure there is a file called \".ocdata\" in the root of the data directory.",
+ "Path contains files shared with you" : "Path contains files shared with you"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json
index 16e6a53cde5..a36c84cfe9f 100644
--- a/lib/l10n/en_GB.json
+++ b/lib/l10n/en_GB.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Path is already shared with this group",
"Link sharing is not allowed" : "Link sharing is not allowed",
"Public upload is not allowed" : "Public upload is not allowed",
- "Path contains files shared with you" : "Path contains files shared with you",
"Sharing is disabled" : "Sharing is disabled",
"Sharing is disabled for you" : "Sharing is disabled for you",
"Cannot share with the share owner" : "Cannot share with the share owner",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Click the button below to open it.",
"File is currently busy, please try again later" : "File is currently busy, please try again later",
"Cannot download file" : "Cannot download file",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ensure there is a file called \".ocdata\" in the root of the data directory."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ensure there is a file called \".ocdata\" in the root of the data directory.",
+ "Path contains files shared with you" : "Path contains files shared with you"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index 6ba57f48c2f..7739b664a8e 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "La ruta ya se encuentra compartida con este grupo",
"Link sharing is not allowed" : "La compartición de enlaces no está permitida",
"Public upload is not allowed" : "No está permitida la subida de archivos pública",
- "Path contains files shared with you" : "La ruta contiene archivos compartidos con Ud.",
"Sharing is disabled" : "Compartir está deshabilitado",
"Sharing is disabled for you" : "Compartir está deshabilitado para Ud.",
"Cannot share with the share owner" : "No se puede compartir con el propietario del recurso compartido",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.",
"File is currently busy, please try again later" : "El archivo se encuentra actualmente ocupado, por favor inténtelo de nuevo más tarde",
"Cannot download file" : "No se puede descargar el archivo",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrate de que existe un archivo llamado \".ocdata\" en la raíz del directorio de datos."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrate de que existe un archivo llamado \".ocdata\" en la raíz del directorio de datos.",
+ "Path contains files shared with you" : "La ruta contiene archivos compartidos con Ud."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index aa28707c15c..223f300006b 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "La ruta ya se encuentra compartida con este grupo",
"Link sharing is not allowed" : "La compartición de enlaces no está permitida",
"Public upload is not allowed" : "No está permitida la subida de archivos pública",
- "Path contains files shared with you" : "La ruta contiene archivos compartidos con Ud.",
"Sharing is disabled" : "Compartir está deshabilitado",
"Sharing is disabled for you" : "Compartir está deshabilitado para Ud.",
"Cannot share with the share owner" : "No se puede compartir con el propietario del recurso compartido",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.",
"File is currently busy, please try again later" : "El archivo se encuentra actualmente ocupado, por favor inténtelo de nuevo más tarde",
"Cannot download file" : "No se puede descargar el archivo",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrate de que existe un archivo llamado \".ocdata\" en la raíz del directorio de datos."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrate de que existe un archivo llamado \".ocdata\" en la raíz del directorio de datos.",
+ "Path contains files shared with you" : "La ruta contiene archivos compartidos con Ud."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/es_MX.js b/lib/l10n/es_MX.js
index 2da18ecd044..84b0914e8d1 100644
--- a/lib/l10n/es_MX.js
+++ b/lib/l10n/es_MX.js
@@ -176,7 +176,6 @@ OC.L10N.register(
"Path is already shared with this group" : "La ruta ya ha sido compartida con este grupo",
"Link sharing is not allowed" : "La compartición mediante enlaces no está permitida",
"Public upload is not allowed" : "No se permite la subida pública de archivos",
- "Path contains files shared with you" : "La ruta contiene archivos compartidos contigo",
"Sharing is disabled" : "Compartir está deshabilitado",
"Sharing is disabled for you" : "No estás habilitado para compartir",
"Cannot share with the share owner" : "No puedes compartir con el propietario del recurso compartido",
@@ -393,6 +392,7 @@ OC.L10N.register(
"Click the button below to open it." : "Haz click en el botón inferior para abrirlo. ",
"File is currently busy, please try again later" : "El archivo se encuentra actualmente en uso, por favor intentalo más tarde. ",
"Cannot download file" : "No se puede descargar el archivo",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegurate de que exista una archivo llamado \".ocdata\" en la raíz del directorio de datos. "
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegurate de que exista una archivo llamado \".ocdata\" en la raíz del directorio de datos. ",
+ "Path contains files shared with you" : "La ruta contiene archivos compartidos contigo"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/lib/l10n/es_MX.json b/lib/l10n/es_MX.json
index 122627dfb72..fdf4d428686 100644
--- a/lib/l10n/es_MX.json
+++ b/lib/l10n/es_MX.json
@@ -174,7 +174,6 @@
"Path is already shared with this group" : "La ruta ya ha sido compartida con este grupo",
"Link sharing is not allowed" : "La compartición mediante enlaces no está permitida",
"Public upload is not allowed" : "No se permite la subida pública de archivos",
- "Path contains files shared with you" : "La ruta contiene archivos compartidos contigo",
"Sharing is disabled" : "Compartir está deshabilitado",
"Sharing is disabled for you" : "No estás habilitado para compartir",
"Cannot share with the share owner" : "No puedes compartir con el propietario del recurso compartido",
@@ -391,6 +390,7 @@
"Click the button below to open it." : "Haz click en el botón inferior para abrirlo. ",
"File is currently busy, please try again later" : "El archivo se encuentra actualmente en uso, por favor intentalo más tarde. ",
"Cannot download file" : "No se puede descargar el archivo",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegurate de que exista una archivo llamado \".ocdata\" en la raíz del directorio de datos. "
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegurate de que exista una archivo llamado \".ocdata\" en la raíz del directorio de datos. ",
+ "Path contains files shared with you" : "La ruta contiene archivos compartidos contigo"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/et_EE.js b/lib/l10n/et_EE.js
index 6af0247caf4..226480fc993 100644
--- a/lib/l10n/et_EE.js
+++ b/lib/l10n/et_EE.js
@@ -5,6 +5,12 @@ OC.L10N.register(
"See %s" : "Vaata %s",
"Sample configuration detected" : "Tuvastati näidisseaded",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Tuvastati, et kopeeriti näidisseaded. See võib lõhkuda sinu saidi ja see pole toetatud. Palun loe enne faili config.php muutmist dokumentatsiooni",
+ "%s email verification" : "E-postiaadressi kinnitamine: %s",
+ "Email verification" : "E-postiaadressi kinnitamine",
+ "Click the following button to confirm your email." : "Oma e-postiaadressi kinnitamiseks klõpsi järgmisel nupul.",
+ "Click the following link to confirm your email." : "Oma e-postiaadressi kinnitamiseks klõpsi järgmisel lingil.",
+ "Confirm your email" : "Kiinita oma e-posti aadress",
+ "Other activities" : "Muud tegevused",
"%1$s and %2$s" : "%1$s ja %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s ja %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s ja %4$s",
@@ -13,27 +19,42 @@ OC.L10N.register(
"PHP with a version lower than %s is required." : "Nõutud on PHP madalama versiooniga kui %s.",
"The command line tool %s could not be found" : "Käsurea töövahendit %s ei leitud",
"The library %s is not available." : "Teek %s pole saadaval.",
+ "The following platforms are supported: %s" : "Toetatud on järgmised platvormid: %s",
"Server version %s or higher is required." : "Serveri versioon %s või kõrgem on nõutav.",
"Server version %s or lower is required." : "Serveri versioon %s või madalam on nõutav.",
+ "Wiping of device %s has finished" : "„%s“ seadme kustutamine on lõppenud",
+ "Wiping of device »%s« has finished" : "„%s“ seadme kustutamine on lõppenud",
+ "Remote wipe started" : "Kaugkustutamine on alanud",
+ "A remote wipe was started on device %s" : "„%s“ seadme kaugkustutamine on alanud",
+ "Remote wipe finished" : "Kaugkustutamine on lõppenud",
+ "The remote wipe on %s has finished" : "„%s“ seadme kaugkustutamine on lõppenud",
"Authentication" : "Autentimine",
"Unknown filetype" : "Tundmatu failitüüp",
"Invalid image" : "Vigane pilt",
"Avatar image is not square" : "Avatari pilt pole ruut",
"Files" : "Failid",
"View profile" : "Vaata profiili",
+ "same time" : "samas ajas",
"today" : "täna",
"tomorrow" : "homme",
"yesterday" : "eile",
"_%n day ago_::_%n days ago_" : ["%n päev tagasi","%n päeva tagasi"],
"next month" : "järgmine kuu",
"last month" : "viimasel kuul",
+ "_in %n month_::_in %n months_" : ["%n kuu pärast","%n kuu pärast"],
+ "_%n month ago_::_%n months ago_" : ["%n kuu eest","%n kuu eest"],
"next year" : "järgmine aasta",
"last year" : "viimasel aastal",
+ "_in %n year_::_in %n years_" : ["%n aasta pärast","%n aasta pärast"],
"_%n year ago_::_%n years ago_" : ["%n aasta tagasi","%n aastat tagasi"],
+ "_in %n hour_::_in %n hours_" : ["%n tunni pärast","%n tunni pärast"],
"_%n hour ago_::_%n hours ago_" : ["%n tund tagasi","%n tundi tagasi"],
+ "_in %n minute_::_in %n minutes_" : ["%n minuti pärast","%n minuti pärast"],
+ "_%n minute ago_::_%n minutes ago_" : ["%n minut tagasi","%n minutit tagasi"],
"in a few seconds" : "mõne sekundi jooksul",
"seconds ago" : "sekundit tagasi",
"Empty file" : "Tühi fail",
+ "File is too large to convert" : "Fail on teisendamiseks liiga suur",
"Dot files are not allowed" : "Punktiga failid pole lubatud",
"Filenames must not end with \"%1$s\"." : "Failinimede lõpus ei tohi olla „%1$s“.",
"File already exists" : "Fail on juba olemas",
@@ -44,6 +65,7 @@ OC.L10N.register(
"Empty filename is not allowed" : "Tühi failinimi pole lubatud",
"__language_name__" : "Eesti",
"This is an automatically sent email, please do not reply." : "See on automaatselt saadetud e-kiri, palun ära vasta.",
+ "Help & privacy" : "Abiteave ja privaatsus",
"Appearance and accessibility" : "Välimus ja hõlpsus",
"Apps" : "Rakendused",
"Personal settings" : "Isiklikud seaded",
@@ -52,25 +74,38 @@ OC.L10N.register(
"Log out" : "Logi välja",
"Accounts" : "Kasutajakontod",
"Email" : "Epost",
+ "Fediverse" : "Födiversum",
+ "View %s on the fediverse" : "Vaata Födiversumis: %s",
"Phone" : "Telefon",
- "Twitter" : "Twitter",
+ "Call %s" : "Helista: %s",
+ "Twitter" : "X / Twitter",
+ "View %s on Twitter" : "Vaata X-is / Twitteris: %s",
"Website" : "Veebileht",
+ "Visit %s" : "Külasta veebilehte: %s",
"Address" : "Aadress",
- "Profile picture" : "Profiili pilt",
+ "Profile picture" : "Profiilipilt",
"About" : "Info",
"Display name" : "Kuvatav nimi",
+ "Headline" : "Alapealkiri",
"Organisation" : "Organisatsioon",
"Role" : "Roll",
+ "Pronouns" : "Asesõnad pöördumisel",
+ "Unknown account" : "Tundmatu kasutajakonto",
"Additional settings" : "Lisaseaded",
"You need to enter details of an existing account." : "Sa pead sisestama olemasoleva konto andmed.",
"Oracle connection could not be established" : "Ei suuda luua ühendust Oracle baasiga",
"For the best results, please consider using a GNU/Linux server instead." : "Parema tulemuse saavitamiseks palun kaalu serveris GNU/Linux kasutamist.",
- "Set an admin password." : "Määra admini parool.",
+ "Set an admin Login." : "Lisa peakasutaja kasutajanimi.",
+ "Set an admin password." : "Lisa peakasutaja salasõna.",
+ "Cannot create or write into the data directory %s" : "Ei õnnestu luua „%s“ andmekausta või sealt lugeda",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Jagamise tagarakend %s peab kasutusele võtma OCP\\Share_Backend liidese",
"Sharing backend %s not found" : "Jagamise tagarakendit %s ei leitud",
"Sharing backend for %s not found" : "Jagamise tagarakendit %s jaoks ei leitud",
+ "%1$s shared %2$s with you" : "%1$s jagas sinuga: %2$s",
"Open %s" : "Ava %s ",
"%1$s via %2$s" : "%1$s %2$s kaudu",
+ "%1$s shared %2$s with you and wants to add:" : "%1$s jagas sinuga %2$s ning soovib lisada:",
+ "%1$s shared %2$s with you and wants to add" : "%1$s jagas sinuga %2$s ning soovib lisada",
"Unknown share type" : "Tundmatu jagamise tüüp",
"You are not allowed to share %s" : "Sul pole lubatud %s jagada",
"Cannot increase permissions of %s" : "Ei saa %s õigusi suurendada",
diff --git a/lib/l10n/et_EE.json b/lib/l10n/et_EE.json
index aa118bda7a5..d12eb85a707 100644
--- a/lib/l10n/et_EE.json
+++ b/lib/l10n/et_EE.json
@@ -3,6 +3,12 @@
"See %s" : "Vaata %s",
"Sample configuration detected" : "Tuvastati näidisseaded",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Tuvastati, et kopeeriti näidisseaded. See võib lõhkuda sinu saidi ja see pole toetatud. Palun loe enne faili config.php muutmist dokumentatsiooni",
+ "%s email verification" : "E-postiaadressi kinnitamine: %s",
+ "Email verification" : "E-postiaadressi kinnitamine",
+ "Click the following button to confirm your email." : "Oma e-postiaadressi kinnitamiseks klõpsi järgmisel nupul.",
+ "Click the following link to confirm your email." : "Oma e-postiaadressi kinnitamiseks klõpsi järgmisel lingil.",
+ "Confirm your email" : "Kiinita oma e-posti aadress",
+ "Other activities" : "Muud tegevused",
"%1$s and %2$s" : "%1$s ja %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s ja %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s ja %4$s",
@@ -11,27 +17,42 @@
"PHP with a version lower than %s is required." : "Nõutud on PHP madalama versiooniga kui %s.",
"The command line tool %s could not be found" : "Käsurea töövahendit %s ei leitud",
"The library %s is not available." : "Teek %s pole saadaval.",
+ "The following platforms are supported: %s" : "Toetatud on järgmised platvormid: %s",
"Server version %s or higher is required." : "Serveri versioon %s või kõrgem on nõutav.",
"Server version %s or lower is required." : "Serveri versioon %s või madalam on nõutav.",
+ "Wiping of device %s has finished" : "„%s“ seadme kustutamine on lõppenud",
+ "Wiping of device »%s« has finished" : "„%s“ seadme kustutamine on lõppenud",
+ "Remote wipe started" : "Kaugkustutamine on alanud",
+ "A remote wipe was started on device %s" : "„%s“ seadme kaugkustutamine on alanud",
+ "Remote wipe finished" : "Kaugkustutamine on lõppenud",
+ "The remote wipe on %s has finished" : "„%s“ seadme kaugkustutamine on lõppenud",
"Authentication" : "Autentimine",
"Unknown filetype" : "Tundmatu failitüüp",
"Invalid image" : "Vigane pilt",
"Avatar image is not square" : "Avatari pilt pole ruut",
"Files" : "Failid",
"View profile" : "Vaata profiili",
+ "same time" : "samas ajas",
"today" : "täna",
"tomorrow" : "homme",
"yesterday" : "eile",
"_%n day ago_::_%n days ago_" : ["%n päev tagasi","%n päeva tagasi"],
"next month" : "järgmine kuu",
"last month" : "viimasel kuul",
+ "_in %n month_::_in %n months_" : ["%n kuu pärast","%n kuu pärast"],
+ "_%n month ago_::_%n months ago_" : ["%n kuu eest","%n kuu eest"],
"next year" : "järgmine aasta",
"last year" : "viimasel aastal",
+ "_in %n year_::_in %n years_" : ["%n aasta pärast","%n aasta pärast"],
"_%n year ago_::_%n years ago_" : ["%n aasta tagasi","%n aastat tagasi"],
+ "_in %n hour_::_in %n hours_" : ["%n tunni pärast","%n tunni pärast"],
"_%n hour ago_::_%n hours ago_" : ["%n tund tagasi","%n tundi tagasi"],
+ "_in %n minute_::_in %n minutes_" : ["%n minuti pärast","%n minuti pärast"],
+ "_%n minute ago_::_%n minutes ago_" : ["%n minut tagasi","%n minutit tagasi"],
"in a few seconds" : "mõne sekundi jooksul",
"seconds ago" : "sekundit tagasi",
"Empty file" : "Tühi fail",
+ "File is too large to convert" : "Fail on teisendamiseks liiga suur",
"Dot files are not allowed" : "Punktiga failid pole lubatud",
"Filenames must not end with \"%1$s\"." : "Failinimede lõpus ei tohi olla „%1$s“.",
"File already exists" : "Fail on juba olemas",
@@ -42,6 +63,7 @@
"Empty filename is not allowed" : "Tühi failinimi pole lubatud",
"__language_name__" : "Eesti",
"This is an automatically sent email, please do not reply." : "See on automaatselt saadetud e-kiri, palun ära vasta.",
+ "Help & privacy" : "Abiteave ja privaatsus",
"Appearance and accessibility" : "Välimus ja hõlpsus",
"Apps" : "Rakendused",
"Personal settings" : "Isiklikud seaded",
@@ -50,25 +72,38 @@
"Log out" : "Logi välja",
"Accounts" : "Kasutajakontod",
"Email" : "Epost",
+ "Fediverse" : "Födiversum",
+ "View %s on the fediverse" : "Vaata Födiversumis: %s",
"Phone" : "Telefon",
- "Twitter" : "Twitter",
+ "Call %s" : "Helista: %s",
+ "Twitter" : "X / Twitter",
+ "View %s on Twitter" : "Vaata X-is / Twitteris: %s",
"Website" : "Veebileht",
+ "Visit %s" : "Külasta veebilehte: %s",
"Address" : "Aadress",
- "Profile picture" : "Profiili pilt",
+ "Profile picture" : "Profiilipilt",
"About" : "Info",
"Display name" : "Kuvatav nimi",
+ "Headline" : "Alapealkiri",
"Organisation" : "Organisatsioon",
"Role" : "Roll",
+ "Pronouns" : "Asesõnad pöördumisel",
+ "Unknown account" : "Tundmatu kasutajakonto",
"Additional settings" : "Lisaseaded",
"You need to enter details of an existing account." : "Sa pead sisestama olemasoleva konto andmed.",
"Oracle connection could not be established" : "Ei suuda luua ühendust Oracle baasiga",
"For the best results, please consider using a GNU/Linux server instead." : "Parema tulemuse saavitamiseks palun kaalu serveris GNU/Linux kasutamist.",
- "Set an admin password." : "Määra admini parool.",
+ "Set an admin Login." : "Lisa peakasutaja kasutajanimi.",
+ "Set an admin password." : "Lisa peakasutaja salasõna.",
+ "Cannot create or write into the data directory %s" : "Ei õnnestu luua „%s“ andmekausta või sealt lugeda",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Jagamise tagarakend %s peab kasutusele võtma OCP\\Share_Backend liidese",
"Sharing backend %s not found" : "Jagamise tagarakendit %s ei leitud",
"Sharing backend for %s not found" : "Jagamise tagarakendit %s jaoks ei leitud",
+ "%1$s shared %2$s with you" : "%1$s jagas sinuga: %2$s",
"Open %s" : "Ava %s ",
"%1$s via %2$s" : "%1$s %2$s kaudu",
+ "%1$s shared %2$s with you and wants to add:" : "%1$s jagas sinuga %2$s ning soovib lisada:",
+ "%1$s shared %2$s with you and wants to add" : "%1$s jagas sinuga %2$s ning soovib lisada",
"Unknown share type" : "Tundmatu jagamise tüüp",
"You are not allowed to share %s" : "Sul pole lubatud %s jagada",
"Cannot increase permissions of %s" : "Ei saa %s õigusi suurendada",
diff --git a/lib/l10n/eu.js b/lib/l10n/eu.js
index 200bc57efc1..04cf5d32c11 100644
--- a/lib/l10n/eu.js
+++ b/lib/l10n/eu.js
@@ -188,7 +188,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Bide-izen hau dagoeneko partekatuta dago talde honekin",
"Link sharing is not allowed" : "Esteken partekatzea ez da onartzen",
"Public upload is not allowed" : "Igotze publikoa ez da onartzen",
- "Path contains files shared with you" : "Bide-izenak zurekin partekatutako fitxategiak dauzka",
"Sharing is disabled" : "Partekatzea desgaituta dago",
"Sharing is disabled for you" : "Partekatzea zuretzat desgaituta dago",
"Cannot share with the share owner" : "Ezin da partekatzearen jabearekin partekatu",
@@ -444,6 +443,7 @@ OC.L10N.register(
"Click the button below to open it." : "Egin klik beheko botoian hura irekitzeko.",
"File is currently busy, please try again later" : "Fitxategia lanpetuta dago, saiatu berriro geroago",
"Cannot download file" : "Ezin da fitxategia deskargatu",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ziurtatu datu direktorioaren erroan \".ocdata\" izeneko fitxategia dagoela."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ziurtatu datu direktorioaren erroan \".ocdata\" izeneko fitxategia dagoela.",
+ "Path contains files shared with you" : "Bide-izenak zurekin partekatutako fitxategiak dauzka"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/eu.json b/lib/l10n/eu.json
index 93e5137225b..dad218c023a 100644
--- a/lib/l10n/eu.json
+++ b/lib/l10n/eu.json
@@ -186,7 +186,6 @@
"Path is already shared with this group" : "Bide-izen hau dagoeneko partekatuta dago talde honekin",
"Link sharing is not allowed" : "Esteken partekatzea ez da onartzen",
"Public upload is not allowed" : "Igotze publikoa ez da onartzen",
- "Path contains files shared with you" : "Bide-izenak zurekin partekatutako fitxategiak dauzka",
"Sharing is disabled" : "Partekatzea desgaituta dago",
"Sharing is disabled for you" : "Partekatzea zuretzat desgaituta dago",
"Cannot share with the share owner" : "Ezin da partekatzearen jabearekin partekatu",
@@ -442,6 +441,7 @@
"Click the button below to open it." : "Egin klik beheko botoian hura irekitzeko.",
"File is currently busy, please try again later" : "Fitxategia lanpetuta dago, saiatu berriro geroago",
"Cannot download file" : "Ezin da fitxategia deskargatu",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ziurtatu datu direktorioaren erroan \".ocdata\" izeneko fitxategia dagoela."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ziurtatu datu direktorioaren erroan \".ocdata\" izeneko fitxategia dagoela.",
+ "Path contains files shared with you" : "Bide-izenak zurekin partekatutako fitxategiak dauzka"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index 7dade6eb1b1..b382a9783db 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Le chemin est déjà partagé avec ce groupe",
"Link sharing is not allowed" : "Le partage de liens n'est pas autorisé",
"Public upload is not allowed" : "Le téléversement public n'est pas autorisé",
- "Path contains files shared with you" : "Le chemin contient des fichiers partagés avec vous",
"Sharing is disabled" : "Le partage est désactivé",
"Sharing is disabled for you" : "Le partage est désactivé pour vous",
"Cannot share with the share owner" : "Impossible de partager avec le propriétaire de l'action",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir",
"File is currently busy, please try again later" : "Le fichier est actuellement utilisé, veuillez réessayer plus tard",
"Cannot download file" : "Impossible de télécharger le fichier",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assurez-vous que le répertoire de données contient un fichier \".ocdata\" à sa racine."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assurez-vous que le répertoire de données contient un fichier \".ocdata\" à sa racine.",
+ "Path contains files shared with you" : "Le chemin contient des fichiers partagés avec vous"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 9034a323a3b..a2d10d17bad 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Le chemin est déjà partagé avec ce groupe",
"Link sharing is not allowed" : "Le partage de liens n'est pas autorisé",
"Public upload is not allowed" : "Le téléversement public n'est pas autorisé",
- "Path contains files shared with you" : "Le chemin contient des fichiers partagés avec vous",
"Sharing is disabled" : "Le partage est désactivé",
"Sharing is disabled for you" : "Le partage est désactivé pour vous",
"Cannot share with the share owner" : "Impossible de partager avec le propriétaire de l'action",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir",
"File is currently busy, please try again later" : "Le fichier est actuellement utilisé, veuillez réessayer plus tard",
"Cannot download file" : "Impossible de télécharger le fichier",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assurez-vous que le répertoire de données contient un fichier \".ocdata\" à sa racine."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assurez-vous que le répertoire de données contient un fichier \".ocdata\" à sa racine.",
+ "Path contains files shared with you" : "Le chemin contient des fichiers partagés avec vous"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/ga.js b/lib/l10n/ga.js
index 982daf13b17..0bea6a37ad1 100644
--- a/lib/l10n/ga.js
+++ b/lib/l10n/ga.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Tá an chonair roinnte leis an ngrúpa seo cheana féin",
"Link sharing is not allowed" : "Ní cheadaítear nasc a roinnt",
"Public upload is not allowed" : "Ní cheadaítear uaslódáil phoiblí",
- "Path contains files shared with you" : "Tá comhaid a roinntear leat sa chonair",
"Sharing is disabled" : "Tá roinnt díchumasaithe",
"Sharing is disabled for you" : "Tá comhroinnt díchumasaithe duit",
"Cannot share with the share owner" : "Ní féidir a roinnt leis an úinéir na scaireanna",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Cliceáil ar an gcnaipe thíos chun é a oscailt.",
"File is currently busy, please try again later" : "Tá an comhad gnóthach faoi láthair, bain triail eile as ar ball le do thoil",
"Cannot download file" : "Ní féidir an comhad a íoslódáil",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Cinntigh go bhfuil comhad darb ainm \".ocdata\" i bhfréamh an eolaire sonraí."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Cinntigh go bhfuil comhad darb ainm \".ocdata\" i bhfréamh an eolaire sonraí.",
+ "Path contains files shared with you" : "Tá comhaid a roinntear leat sa chonair"
},
"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);");
diff --git a/lib/l10n/ga.json b/lib/l10n/ga.json
index 9b4b8002c28..afad43512a4 100644
--- a/lib/l10n/ga.json
+++ b/lib/l10n/ga.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Tá an chonair roinnte leis an ngrúpa seo cheana féin",
"Link sharing is not allowed" : "Ní cheadaítear nasc a roinnt",
"Public upload is not allowed" : "Ní cheadaítear uaslódáil phoiblí",
- "Path contains files shared with you" : "Tá comhaid a roinntear leat sa chonair",
"Sharing is disabled" : "Tá roinnt díchumasaithe",
"Sharing is disabled for you" : "Tá comhroinnt díchumasaithe duit",
"Cannot share with the share owner" : "Ní féidir a roinnt leis an úinéir na scaireanna",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Cliceáil ar an gcnaipe thíos chun é a oscailt.",
"File is currently busy, please try again later" : "Tá an comhad gnóthach faoi láthair, bain triail eile as ar ball le do thoil",
"Cannot download file" : "Ní féidir an comhad a íoslódáil",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Cinntigh go bhfuil comhad darb ainm \".ocdata\" i bhfréamh an eolaire sonraí."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Cinntigh go bhfuil comhad darb ainm \".ocdata\" i bhfréamh an eolaire sonraí.",
+ "Path contains files shared with you" : "Tá comhaid a roinntear leat sa chonair"
},"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"
} \ No newline at end of file
diff --git a/lib/l10n/gl.js b/lib/l10n/gl.js
index 9e3e5853290..d50fc3a3228 100644
--- a/lib/l10n/gl.js
+++ b/lib/l10n/gl.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "A ruta xa está compartida con este grupo",
"Link sharing is not allowed" : "Non se permite compartir ligazóns",
"Public upload is not allowed" : "Non se permite o envío público",
- "Path contains files shared with you" : "A ruta contén ficheiros compartidos con Vde.",
"Sharing is disabled" : "A compartición está desactivada",
"Sharing is disabled for you" : "A compartición está desactivada para Vde.",
"Cannot share with the share owner" : "Non é posíbel compartir co propietario do compartido",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Prema no botón de embaixo para abrilo.",
"File is currently busy, please try again later" : "O ficheiro está ocupado neste momento, ténteo máis adiante.",
"Cannot download file" : "Non é posíbel descargar o ficheiro",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrese de que existe un ficheiro chamado «.ocdata» na raíz do directorio de datos."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrese de que existe un ficheiro chamado «.ocdata» na raíz do directorio de datos.",
+ "Path contains files shared with you" : "A ruta contén ficheiros compartidos con Vde."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/gl.json b/lib/l10n/gl.json
index f73e61ac808..a6045159147 100644
--- a/lib/l10n/gl.json
+++ b/lib/l10n/gl.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "A ruta xa está compartida con este grupo",
"Link sharing is not allowed" : "Non se permite compartir ligazóns",
"Public upload is not allowed" : "Non se permite o envío público",
- "Path contains files shared with you" : "A ruta contén ficheiros compartidos con Vde.",
"Sharing is disabled" : "A compartición está desactivada",
"Sharing is disabled for you" : "A compartición está desactivada para Vde.",
"Cannot share with the share owner" : "Non é posíbel compartir co propietario do compartido",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Prema no botón de embaixo para abrilo.",
"File is currently busy, please try again later" : "O ficheiro está ocupado neste momento, ténteo máis adiante.",
"Cannot download file" : "Non é posíbel descargar o ficheiro",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrese de que existe un ficheiro chamado «.ocdata» na raíz do directorio de datos."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrese de que existe un ficheiro chamado «.ocdata» na raíz do directorio de datos.",
+ "Path contains files shared with you" : "A ruta contén ficheiros compartidos con Vde."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js
index f199f3faf86..17bb1715373 100644
--- a/lib/l10n/ja.js
+++ b/lib/l10n/ja.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "パスはすでにこのグループで共有されています",
"Link sharing is not allowed" : "リンクの共有は許可されていません",
"Public upload is not allowed" : "公開アップロードは許可されていません",
- "Path contains files shared with you" : "パスにはあなたと共有するファイルが含まれています",
"Sharing is disabled" : "共有は無効になっています",
"Sharing is disabled for you" : "共有は無効になっています",
"Cannot share with the share owner" : "共有所有者と共有できません",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "開くには下のボタンをクリック",
"File is currently busy, please try again later" : "現在ファイルはビジーです。後でもう一度試してください。",
"Cannot download file" : "ファイルをダウンロードできません",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "データディレクトリの直下に \".ocdata\" ファイルがあるのを確認してください。"
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "データディレクトリの直下に \".ocdata\" ファイルがあるのを確認してください。",
+ "Path contains files shared with you" : "パスにはあなたと共有するファイルが含まれています"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json
index b3de18466f1..7d392836c45 100644
--- a/lib/l10n/ja.json
+++ b/lib/l10n/ja.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "パスはすでにこのグループで共有されています",
"Link sharing is not allowed" : "リンクの共有は許可されていません",
"Public upload is not allowed" : "公開アップロードは許可されていません",
- "Path contains files shared with you" : "パスにはあなたと共有するファイルが含まれています",
"Sharing is disabled" : "共有は無効になっています",
"Sharing is disabled for you" : "共有は無効になっています",
"Cannot share with the share owner" : "共有所有者と共有できません",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "開くには下のボタンをクリック",
"File is currently busy, please try again later" : "現在ファイルはビジーです。後でもう一度試してください。",
"Cannot download file" : "ファイルをダウンロードできません",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "データディレクトリの直下に \".ocdata\" ファイルがあるのを確認してください。"
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "データディレクトリの直下に \".ocdata\" ファイルがあるのを確認してください。",
+ "Path contains files shared with you" : "パスにはあなたと共有するファイルが含まれています"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index 55fac0edc2e..493b9932713 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -171,7 +171,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Ścieżka jest już udostępniona tej grupie",
"Link sharing is not allowed" : "Udostępnianie odnośników jest niedozwolone",
"Public upload is not allowed" : "Przesyłanie publiczne nie jest dozwolone",
- "Path contains files shared with you" : "Ścieżka zawiera pliki udostępnione Tobie",
"Sharing is disabled" : "Udostępnianie jest wyłączone",
"Sharing is disabled for you" : "Udostępnianie jest dla Ciebie wyłączone",
"Cannot share with the share owner" : "Nie można udostępnić właścicielowi udziału",
@@ -343,6 +342,7 @@ OC.L10N.register(
"Click the button below to open it." : "Kliknij przycisk poniżej, aby otworzyć.",
"File is currently busy, please try again later" : "Plik jest obecnie niedostępny, spróbuj później",
"Cannot download file" : "Nie można pobrać pliku",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Upewnij się, że w katalogu \"data\" znajduje się plik o nazwie \".ocdata\"."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Upewnij się, że w katalogu \"data\" znajduje się plik o nazwie \".ocdata\".",
+ "Path contains files shared with you" : "Ścieżka zawiera pliki udostępnione Tobie"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index 6f43246eca2..556a13dc85d 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -169,7 +169,6 @@
"Path is already shared with this group" : "Ścieżka jest już udostępniona tej grupie",
"Link sharing is not allowed" : "Udostępnianie odnośników jest niedozwolone",
"Public upload is not allowed" : "Przesyłanie publiczne nie jest dozwolone",
- "Path contains files shared with you" : "Ścieżka zawiera pliki udostępnione Tobie",
"Sharing is disabled" : "Udostępnianie jest wyłączone",
"Sharing is disabled for you" : "Udostępnianie jest dla Ciebie wyłączone",
"Cannot share with the share owner" : "Nie można udostępnić właścicielowi udziału",
@@ -341,6 +340,7 @@
"Click the button below to open it." : "Kliknij przycisk poniżej, aby otworzyć.",
"File is currently busy, please try again later" : "Plik jest obecnie niedostępny, spróbuj później",
"Cannot download file" : "Nie można pobrać pliku",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Upewnij się, że w katalogu \"data\" znajduje się plik o nazwie \".ocdata\"."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Upewnij się, że w katalogu \"data\" znajduje się plik o nazwie \".ocdata\".",
+ "Path contains files shared with you" : "Ścieżka zawiera pliki udostępnione Tobie"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index f1c273b228f..e0e7093f794 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -9,11 +9,11 @@ OC.L10N.register(
"Sample configuration detected" : "Configuração de exemplo detectada",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Foi detectado que a configuração de exemplo foi copiada. Isso pode terminar sua instalação e não é suportado. Por favor leia a documentação antes de realizar mudanças no config.php",
"The page could not be found on the server." : "A página não pôde ser encontrada no servidor.",
- "%s email verification" : "%s e-mail de verificação",
- "Email verification" : "E-mail de verificação",
- "Click the following button to confirm your email." : "Clique no botão a seguir para confirmar seu e-mail.",
- "Click the following link to confirm your email." : "Clique no link a seguir para confirmar seu e-mail.",
- "Confirm your email" : "Confirme seu e-mail",
+ "%s email verification" : "Verificação de e-mail de %s",
+ "Email verification" : "Verificação do endereço de e-mail",
+ "Click the following button to confirm your email." : "Clique no botão a seguir para confirmar seu endereço de e-mail.",
+ "Click the following link to confirm your email." : "Clique no link a seguir para confirmar seu endereço de e-mail.",
+ "Confirm your email" : "Confirmar seu e-mail",
"Other activities" : "Outras atividades",
"%1$s and %2$s" : "%1$s e %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s e %3$s",
@@ -128,14 +128,14 @@ OC.L10N.register(
"Log out" : "Sair",
"Accounts" : "Contas",
"Email" : "E-mail",
- "Mail %s" : "E-Mail %s",
- "Fediverse" : "Fediverse",
- "View %s on the fediverse" : "Ver %s no fediverse",
+ "Mail %s" : "Enviar e-mail para %s",
+ "Fediverse" : "Fediverso",
+ "View %s on the fediverse" : "Ver %s no fediverso",
"Phone" : "Fone",
- "Call %s" : "Chamar %s",
+ "Call %s" : "Ligar para %s",
"Twitter" : "Twitter",
- "View %s on Twitter" : "Visualizar %s no Twitter",
- "Website" : "Website",
+ "View %s on Twitter" : "Ver %s no Twitter",
+ "Website" : "Site",
"Visit %s" : "Visitar %s",
"Address" : "Endereço",
"Profile picture" : "Foto do perfil",
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "O caminho já está compartilhado com este grupo",
"Link sharing is not allowed" : "O compartilhamento de link não é permitido",
"Public upload is not allowed" : "O upload público não é permitido",
- "Path contains files shared with you" : "O caminho contém arquivos compartilhados com você",
"Sharing is disabled" : "O compartilhamento está desativado",
"Sharing is disabled for you" : "O compartilhamento está desativado para você",
"Cannot share with the share owner" : "Não é possível compartilhar com o proprietário do compartilhamento",
@@ -438,7 +437,7 @@ OC.L10N.register(
"The desired language to translate the origin text in" : "O idioma definido para traduzir o texto original",
"Result" : "Resultado",
"The translated text" : "O texto traduzido",
- "Free prompt" : "Solicitação gratuita",
+ "Free prompt" : "Prompt livre",
"Runs an arbitrary prompt through the language model." : "Executa um prompt arbitrário por meio do modelo de idioma.",
"Generate headline" : "Gerar título",
"Summarizes text by reducing its length without losing key information." : "Resume o texto reduzindo seu comprimento sem perder informações importantes.",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Clique no botão abaixo para abri-lo.",
"File is currently busy, please try again later" : "O arquivo está ocupado, tente novamente mais tarde",
"Cannot download file" : "Não é possível baixar o arquivo",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assegure-se que exista um arquivo chamado \".ocdata\" na raiz do diretório \"data\"."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assegure-se que exista um arquivo chamado \".ocdata\" na raiz do diretório \"data\".",
+ "Path contains files shared with you" : "O caminho contém arquivos compartilhados com você"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index cb10ea4d9b3..deb30e2a9dc 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -7,11 +7,11 @@
"Sample configuration detected" : "Configuração de exemplo detectada",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Foi detectado que a configuração de exemplo foi copiada. Isso pode terminar sua instalação e não é suportado. Por favor leia a documentação antes de realizar mudanças no config.php",
"The page could not be found on the server." : "A página não pôde ser encontrada no servidor.",
- "%s email verification" : "%s e-mail de verificação",
- "Email verification" : "E-mail de verificação",
- "Click the following button to confirm your email." : "Clique no botão a seguir para confirmar seu e-mail.",
- "Click the following link to confirm your email." : "Clique no link a seguir para confirmar seu e-mail.",
- "Confirm your email" : "Confirme seu e-mail",
+ "%s email verification" : "Verificação de e-mail de %s",
+ "Email verification" : "Verificação do endereço de e-mail",
+ "Click the following button to confirm your email." : "Clique no botão a seguir para confirmar seu endereço de e-mail.",
+ "Click the following link to confirm your email." : "Clique no link a seguir para confirmar seu endereço de e-mail.",
+ "Confirm your email" : "Confirmar seu e-mail",
"Other activities" : "Outras atividades",
"%1$s and %2$s" : "%1$s e %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s e %3$s",
@@ -126,14 +126,14 @@
"Log out" : "Sair",
"Accounts" : "Contas",
"Email" : "E-mail",
- "Mail %s" : "E-Mail %s",
- "Fediverse" : "Fediverse",
- "View %s on the fediverse" : "Ver %s no fediverse",
+ "Mail %s" : "Enviar e-mail para %s",
+ "Fediverse" : "Fediverso",
+ "View %s on the fediverse" : "Ver %s no fediverso",
"Phone" : "Fone",
- "Call %s" : "Chamar %s",
+ "Call %s" : "Ligar para %s",
"Twitter" : "Twitter",
- "View %s on Twitter" : "Visualizar %s no Twitter",
- "Website" : "Website",
+ "View %s on Twitter" : "Ver %s no Twitter",
+ "Website" : "Site",
"Visit %s" : "Visitar %s",
"Address" : "Endereço",
"Profile picture" : "Foto do perfil",
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "O caminho já está compartilhado com este grupo",
"Link sharing is not allowed" : "O compartilhamento de link não é permitido",
"Public upload is not allowed" : "O upload público não é permitido",
- "Path contains files shared with you" : "O caminho contém arquivos compartilhados com você",
"Sharing is disabled" : "O compartilhamento está desativado",
"Sharing is disabled for you" : "O compartilhamento está desativado para você",
"Cannot share with the share owner" : "Não é possível compartilhar com o proprietário do compartilhamento",
@@ -436,7 +435,7 @@
"The desired language to translate the origin text in" : "O idioma definido para traduzir o texto original",
"Result" : "Resultado",
"The translated text" : "O texto traduzido",
- "Free prompt" : "Solicitação gratuita",
+ "Free prompt" : "Prompt livre",
"Runs an arbitrary prompt through the language model." : "Executa um prompt arbitrário por meio do modelo de idioma.",
"Generate headline" : "Gerar título",
"Summarizes text by reducing its length without losing key information." : "Resume o texto reduzindo seu comprimento sem perder informações importantes.",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Clique no botão abaixo para abri-lo.",
"File is currently busy, please try again later" : "O arquivo está ocupado, tente novamente mais tarde",
"Cannot download file" : "Não é possível baixar o arquivo",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assegure-se que exista um arquivo chamado \".ocdata\" na raiz do diretório \"data\"."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assegure-se que exista um arquivo chamado \".ocdata\" na raiz do diretório \"data\".",
+ "Path contains files shared with you" : "O caminho contém arquivos compartilhados com você"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index c249a27e816..9072049b24e 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -173,7 +173,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Путь уже является общим для этой группы",
"Link sharing is not allowed" : "Обмен ссылками запрещен",
"Public upload is not allowed" : "Публичная загрузка данных запрещена",
- "Path contains files shared with you" : "Путь содержит файлы, к которым вы предоставили общий доступ",
"Sharing is disabled" : "Общий доступ отключен",
"Sharing is disabled for you" : "Общий доступ для вас отключен",
"Cannot share with the share owner" : "Невозможно поделиться с владельцем общего доступа",
@@ -395,6 +394,7 @@ OC.L10N.register(
"Click the button below to open it." : "Нажмите расположенную ниже кнопку для перехода к полученному общему ресурсу.",
"File is currently busy, please try again later" : "Файл в данный момент используется, повторите попытку позже.",
"Cannot download file" : "Не удалось скачать файл",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Убедитесь, что в корне каталога данных присутствует файл «.ocdata»."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Убедитесь, что в корне каталога данных присутствует файл «.ocdata».",
+ "Path contains files shared with you" : "Путь содержит файлы, к которым вы предоставили общий доступ"
},
"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/lib/l10n/ru.json b/lib/l10n/ru.json
index 78a23e4bdae..605ff3bf561 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -171,7 +171,6 @@
"Path is already shared with this group" : "Путь уже является общим для этой группы",
"Link sharing is not allowed" : "Обмен ссылками запрещен",
"Public upload is not allowed" : "Публичная загрузка данных запрещена",
- "Path contains files shared with you" : "Путь содержит файлы, к которым вы предоставили общий доступ",
"Sharing is disabled" : "Общий доступ отключен",
"Sharing is disabled for you" : "Общий доступ для вас отключен",
"Cannot share with the share owner" : "Невозможно поделиться с владельцем общего доступа",
@@ -393,6 +392,7 @@
"Click the button below to open it." : "Нажмите расположенную ниже кнопку для перехода к полученному общему ресурсу.",
"File is currently busy, please try again later" : "Файл в данный момент используется, повторите попытку позже.",
"Cannot download file" : "Не удалось скачать файл",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Убедитесь, что в корне каталога данных присутствует файл «.ocdata»."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Убедитесь, что в корне каталога данных присутствует файл «.ocdata».",
+ "Path contains files shared with you" : "Путь содержит файлы, к которым вы предоставили общий доступ"
},"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/lib/l10n/sk.js b/lib/l10n/sk.js
index 4415a806550..c20bc866443 100644
--- a/lib/l10n/sk.js
+++ b/lib/l10n/sk.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Cesta je už zdieľaná s touto skupinou",
"Link sharing is not allowed" : "Zdieľanie odkazu nie je povolené",
"Public upload is not allowed" : "Verejné nahrávanie nie je povolené",
- "Path contains files shared with you" : "Cesta obsahuje súbory zdieľané s vami",
"Sharing is disabled" : "Zdieľanie je zakázané",
"Sharing is disabled for you" : "Zdieľanie je pre vás zakázané",
"Cannot share with the share owner" : "Nie je možné zdieľať s vlastníkom",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Pre otvorenie klienta kliknite na tlačítko nižšie.",
"File is currently busy, please try again later" : "Súbor sa práve používa, skúste prosím neskôr",
"Cannot download file" : "Nemožno stiahnuť súbor",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Uistite sa, že v koreňovom adresári sa nachádza súbor s názvom \".ocdata\"."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Uistite sa, že v koreňovom adresári sa nachádza súbor s názvom \".ocdata\".",
+ "Path contains files shared with you" : "Cesta obsahuje súbory zdieľané s vami"
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json
index 057936c2a89..b9762f40e16 100644
--- a/lib/l10n/sk.json
+++ b/lib/l10n/sk.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Cesta je už zdieľaná s touto skupinou",
"Link sharing is not allowed" : "Zdieľanie odkazu nie je povolené",
"Public upload is not allowed" : "Verejné nahrávanie nie je povolené",
- "Path contains files shared with you" : "Cesta obsahuje súbory zdieľané s vami",
"Sharing is disabled" : "Zdieľanie je zakázané",
"Sharing is disabled for you" : "Zdieľanie je pre vás zakázané",
"Cannot share with the share owner" : "Nie je možné zdieľať s vlastníkom",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Pre otvorenie klienta kliknite na tlačítko nižšie.",
"File is currently busy, please try again later" : "Súbor sa práve používa, skúste prosím neskôr",
"Cannot download file" : "Nemožno stiahnuť súbor",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Uistite sa, že v koreňovom adresári sa nachádza súbor s názvom \".ocdata\"."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Uistite sa, že v koreňovom adresári sa nachádza súbor s názvom \".ocdata\".",
+ "Path contains files shared with you" : "Cesta obsahuje súbory zdieľané s vami"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/lib/l10n/sr.js b/lib/l10n/sr.js
index 98cc8d4a29b..5e74d4b476e 100644
--- a/lib/l10n/sr.js
+++ b/lib/l10n/sr.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Путања се већ дели са овом групом",
"Link sharing is not allowed" : "Није дозвољено дељење линком",
"Public upload is not allowed" : "Није дозвољено јавно отпремање",
- "Path contains files shared with you" : "Путања садржи фајлове који су подељени са вама",
"Sharing is disabled" : "Дељење је искључено",
"Sharing is disabled for you" : "Дељење је за вас искључено",
"Cannot share with the share owner" : "Не може да се дели са власником дељења",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Кликните дугме испод да га отворите.",
"File is currently busy, please try again later" : "Фајл је тренутно заузет, покушајте поново касније",
"Cannot download file" : "Фајл не може да се преузме",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Уверите се да фајл \".ocdata\" постоји у корену директоријума са подацима."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Уверите се да фајл \".ocdata\" постоји у корену директоријума са подацима.",
+ "Path contains files shared with you" : "Путања садржи фајлове који су подељени са вама"
},
"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/lib/l10n/sr.json b/lib/l10n/sr.json
index 6a76505d203..c767ac17984 100644
--- a/lib/l10n/sr.json
+++ b/lib/l10n/sr.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Путања се већ дели са овом групом",
"Link sharing is not allowed" : "Није дозвољено дељење линком",
"Public upload is not allowed" : "Није дозвољено јавно отпремање",
- "Path contains files shared with you" : "Путања садржи фајлове који су подељени са вама",
"Sharing is disabled" : "Дељење је искључено",
"Sharing is disabled for you" : "Дељење је за вас искључено",
"Cannot share with the share owner" : "Не може да се дели са власником дељења",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Кликните дугме испод да га отворите.",
"File is currently busy, please try again later" : "Фајл је тренутно заузет, покушајте поново касније",
"Cannot download file" : "Фајл не може да се преузме",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Уверите се да фајл \".ocdata\" постоји у корену директоријума са подацима."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Уверите се да фајл \".ocdata\" постоји у корену директоријума са подацима.",
+ "Path contains files shared with you" : "Путања садржи фајлове који су подељени са вама"
},"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/lib/l10n/sv.js b/lib/l10n/sv.js
index 9de374c897d..6cb0528004e 100644
--- a/lib/l10n/sv.js
+++ b/lib/l10n/sv.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Sökvägen delas redan med den här gruppen",
"Link sharing is not allowed" : "Länkdelning är inte tillåtet",
"Public upload is not allowed" : "Offentlig uppladdning är inte tillåten",
- "Path contains files shared with you" : "Sökvägen innehåller filer som delas med dig",
"Sharing is disabled" : "Delning är inaktiverat",
"Sharing is disabled for you" : "Delning är inaktiverat för dig",
"Cannot share with the share owner" : "Kan inte dela med ägaren",
@@ -434,6 +433,7 @@ OC.L10N.register(
"Click the button below to open it." : "Klicka på knappen nedan för att öppna det.",
"File is currently busy, please try again later" : "Filen är för tillfället upptagen, försök igen senare",
"Cannot download file" : "Kan inte ladda ner fil",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Säkerställ att du har filen \".ocdata\" i huvudkatalogen för din data."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Säkerställ att du har filen \".ocdata\" i huvudkatalogen för din data.",
+ "Path contains files shared with you" : "Sökvägen innehåller filer som delas med dig"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json
index f1fb9d23530..5f67338d9d8 100644
--- a/lib/l10n/sv.json
+++ b/lib/l10n/sv.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Sökvägen delas redan med den här gruppen",
"Link sharing is not allowed" : "Länkdelning är inte tillåtet",
"Public upload is not allowed" : "Offentlig uppladdning är inte tillåten",
- "Path contains files shared with you" : "Sökvägen innehåller filer som delas med dig",
"Sharing is disabled" : "Delning är inaktiverat",
"Sharing is disabled for you" : "Delning är inaktiverat för dig",
"Cannot share with the share owner" : "Kan inte dela med ägaren",
@@ -432,6 +431,7 @@
"Click the button below to open it." : "Klicka på knappen nedan för att öppna det.",
"File is currently busy, please try again later" : "Filen är för tillfället upptagen, försök igen senare",
"Cannot download file" : "Kan inte ladda ner fil",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Säkerställ att du har filen \".ocdata\" i huvudkatalogen för din data."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Säkerställ att du har filen \".ocdata\" i huvudkatalogen för din data.",
+ "Path contains files shared with you" : "Sökvägen innehåller filer som delas med dig"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index e6383478342..d41544fa449 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Bu yol bu grup ile zaten paylaşılmış",
"Link sharing is not allowed" : "Bağlantı paylaşımına izin verilmiyor",
"Public upload is not allowed" : "Herkese açık yüklemeye izin verilmiyor",
- "Path contains files shared with you" : "Yolda sizinle paylaşılmış dosyalar var",
"Sharing is disabled" : "Paylaşım kullanımdan kaldırılmış",
"Sharing is disabled for you" : "Paylaşım sizin için kullanımdan kaldırılmış",
"Cannot share with the share owner" : "Paylaşımı sahibi ile paylaşamazsınız",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
"File is currently busy, please try again later" : "Dosya şu anda meşgul. Lütfen bir süre sonra yeniden deneyin",
"Cannot download file" : "Dosya indirilemedi",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Veri klasörü kökünde \".ocdata\" adında bir dosya bulunduğundan emin olun."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Veri klasörü kökünde \".ocdata\" adında bir dosya bulunduğundan emin olun.",
+ "Path contains files shared with you" : "Yolda sizinle paylaşılmış dosyalar var"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index 47cc30bf5d0..b16cb3ce493 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Bu yol bu grup ile zaten paylaşılmış",
"Link sharing is not allowed" : "Bağlantı paylaşımına izin verilmiyor",
"Public upload is not allowed" : "Herkese açık yüklemeye izin verilmiyor",
- "Path contains files shared with you" : "Yolda sizinle paylaşılmış dosyalar var",
"Sharing is disabled" : "Paylaşım kullanımdan kaldırılmış",
"Sharing is disabled for you" : "Paylaşım sizin için kullanımdan kaldırılmış",
"Cannot share with the share owner" : "Paylaşımı sahibi ile paylaşamazsınız",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
"File is currently busy, please try again later" : "Dosya şu anda meşgul. Lütfen bir süre sonra yeniden deneyin",
"Cannot download file" : "Dosya indirilemedi",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Veri klasörü kökünde \".ocdata\" adında bir dosya bulunduğundan emin olun."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Veri klasörü kökünde \".ocdata\" adında bir dosya bulunduğundan emin olun.",
+ "Path contains files shared with you" : "Yolda sizinle paylaşılmış dosyalar var"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ug.js b/lib/l10n/ug.js
index e4ae5ea97f1..fbc7a5b4522 100644
--- a/lib/l10n/ug.js
+++ b/lib/l10n/ug.js
@@ -169,7 +169,6 @@ OC.L10N.register(
"Path is already shared with this group" : "يول ئاللىقاچان بۇ گۇرۇپپا بىلەن ئورتاقلاشتى",
"Link sharing is not allowed" : "ئۇلىنىشنى ئورتاقلىشىشقا بولمايدۇ",
"Public upload is not allowed" : "ئاممىۋى يوللاشقا بولمايدۇ",
- "Path contains files shared with you" : "يول سىز بىلەن ئورتاقلاشقان ھۆججەتلەرنى ئۆز ئىچىگە ئالىدۇ",
"Sharing is disabled" : "ئورتاقلىشىش چەكلەنگەن",
"Sharing is disabled for you" : "ئورتاقلىشىش سىز ئۈچۈن چەكلەنگەن",
"Cannot share with the share owner" : "پاي ئىگىسى بىلەن ئورتاقلىشالمايدۇ",
@@ -393,6 +392,7 @@ OC.L10N.register(
"Click the button below to open it." : "ئۇنى ئېچىش ئۈچۈن تۆۋەندىكى كۇنۇپكىنى بېسىڭ.",
"File is currently busy, please try again later" : "ھۆججەت ھازىر ئالدىراش ، كېيىن قايتا سىناڭ",
"Cannot download file" : "ھۆججەتنى چۈشۈرگىلى بولمايدۇ",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "سانلىق مەلۇمات مۇندەرىجىسىنىڭ يىلتىزىدا \".ocdata\" دەپ ئاتىلىدىغان ھۆججەتنىڭ بارلىقىغا كاپالەتلىك قىلىڭ."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "سانلىق مەلۇمات مۇندەرىجىسىنىڭ يىلتىزىدا \".ocdata\" دەپ ئاتىلىدىغان ھۆججەتنىڭ بارلىقىغا كاپالەتلىك قىلىڭ.",
+ "Path contains files shared with you" : "يول سىز بىلەن ئورتاقلاشقان ھۆججەتلەرنى ئۆز ئىچىگە ئالىدۇ"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ug.json b/lib/l10n/ug.json
index 63de13c5b95..fd2971d0f27 100644
--- a/lib/l10n/ug.json
+++ b/lib/l10n/ug.json
@@ -167,7 +167,6 @@
"Path is already shared with this group" : "يول ئاللىقاچان بۇ گۇرۇپپا بىلەن ئورتاقلاشتى",
"Link sharing is not allowed" : "ئۇلىنىشنى ئورتاقلىشىشقا بولمايدۇ",
"Public upload is not allowed" : "ئاممىۋى يوللاشقا بولمايدۇ",
- "Path contains files shared with you" : "يول سىز بىلەن ئورتاقلاشقان ھۆججەتلەرنى ئۆز ئىچىگە ئالىدۇ",
"Sharing is disabled" : "ئورتاقلىشىش چەكلەنگەن",
"Sharing is disabled for you" : "ئورتاقلىشىش سىز ئۈچۈن چەكلەنگەن",
"Cannot share with the share owner" : "پاي ئىگىسى بىلەن ئورتاقلىشالمايدۇ",
@@ -391,6 +390,7 @@
"Click the button below to open it." : "ئۇنى ئېچىش ئۈچۈن تۆۋەندىكى كۇنۇپكىنى بېسىڭ.",
"File is currently busy, please try again later" : "ھۆججەت ھازىر ئالدىراش ، كېيىن قايتا سىناڭ",
"Cannot download file" : "ھۆججەتنى چۈشۈرگىلى بولمايدۇ",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "سانلىق مەلۇمات مۇندەرىجىسىنىڭ يىلتىزىدا \".ocdata\" دەپ ئاتىلىدىغان ھۆججەتنىڭ بارلىقىغا كاپالەتلىك قىلىڭ."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "سانلىق مەلۇمات مۇندەرىجىسىنىڭ يىلتىزىدا \".ocdata\" دەپ ئاتىلىدىغان ھۆججەتنىڭ بارلىقىغا كاپالەتلىك قىلىڭ.",
+ "Path contains files shared with you" : "يول سىز بىلەن ئورتاقلاشقان ھۆججەتلەرنى ئۆز ئىچىگە ئالىدۇ"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js
index 74838e27150..96d8f036a96 100644
--- a/lib/l10n/uk.js
+++ b/lib/l10n/uk.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "Шлях вже надано у спільний доступ для цієї групи",
"Link sharing is not allowed" : "Спільний доступ через посилання не дозволено",
"Public upload is not allowed" : "Публічні завантаження не дозволено",
- "Path contains files shared with you" : "Шлях містить файли, якими поділилися з вами",
"Sharing is disabled" : "Спільний доступ вимкнено",
"Sharing is disabled for you" : "Ви не маєте права надавати у доступ файли або каталоги",
"Cannot share with the share owner" : "Неможливо надавати у доступ власникові спільного ресурсу",
@@ -363,6 +362,7 @@ OC.L10N.register(
"Click the button below to open it." : "Щоб відкрити файл, натисніть кнопку нижче.",
"File is currently busy, please try again later" : "Файл на разі зайнятий, будь ласка, спробуйте пізніше",
"Cannot download file" : "Неможливо звантажити файл",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Переконайтеся, що в корені каталогу даних є файл під назвою \".ocdata\"."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Переконайтеся, що в корені каталогу даних є файл під назвою \".ocdata\".",
+ "Path contains files shared with you" : "Шлях містить файли, якими поділилися з вами"
},
"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/lib/l10n/uk.json b/lib/l10n/uk.json
index 6e09e6d541b..e90f0fc4508 100644
--- a/lib/l10n/uk.json
+++ b/lib/l10n/uk.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "Шлях вже надано у спільний доступ для цієї групи",
"Link sharing is not allowed" : "Спільний доступ через посилання не дозволено",
"Public upload is not allowed" : "Публічні завантаження не дозволено",
- "Path contains files shared with you" : "Шлях містить файли, якими поділилися з вами",
"Sharing is disabled" : "Спільний доступ вимкнено",
"Sharing is disabled for you" : "Ви не маєте права надавати у доступ файли або каталоги",
"Cannot share with the share owner" : "Неможливо надавати у доступ власникові спільного ресурсу",
@@ -361,6 +360,7 @@
"Click the button below to open it." : "Щоб відкрити файл, натисніть кнопку нижче.",
"File is currently busy, please try again later" : "Файл на разі зайнятий, будь ласка, спробуйте пізніше",
"Cannot download file" : "Неможливо звантажити файл",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Переконайтеся, що в корені каталогу даних є файл під назвою \".ocdata\"."
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Переконайтеся, що в корені каталогу даних є файл під назвою \".ocdata\".",
+ "Path contains files shared with you" : "Шлях містить файли, якими поділилися з вами"
},"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/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js
index 4b12d2c2758..cf576fec04b 100644
--- a/lib/l10n/zh_CN.js
+++ b/lib/l10n/zh_CN.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "路径已与此群组共享",
"Link sharing is not allowed" : "不允许共享链接",
"Public upload is not allowed" : "不允许公开上传",
- "Path contains files shared with you" : "路径包含与你共享的文件",
"Sharing is disabled" : "共享已禁用",
"Sharing is disabled for you" : "已为您禁用共享",
"Cannot share with the share owner" : "无法与共享所有者共享",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "点击下方按钮可打开它。",
"File is currently busy, please try again later" : "文件当前正忙,请稍后再试",
"Cannot download file" : "无法下载文件",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "请确定在根目录下有一个名为\".ocdata\"的文件。"
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "请确定在根目录下有一个名为\".ocdata\"的文件。",
+ "Path contains files shared with you" : "路径包含与你共享的文件"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json
index 55c73edb812..b4f88c1b006 100644
--- a/lib/l10n/zh_CN.json
+++ b/lib/l10n/zh_CN.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "路径已与此群组共享",
"Link sharing is not allowed" : "不允许共享链接",
"Public upload is not allowed" : "不允许公开上传",
- "Path contains files shared with you" : "路径包含与你共享的文件",
"Sharing is disabled" : "共享已禁用",
"Sharing is disabled for you" : "已为您禁用共享",
"Cannot share with the share owner" : "无法与共享所有者共享",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "点击下方按钮可打开它。",
"File is currently busy, please try again later" : "文件当前正忙,请稍后再试",
"Cannot download file" : "无法下载文件",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "请确定在根目录下有一个名为\".ocdata\"的文件。"
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "请确定在根目录下有一个名为\".ocdata\"的文件。",
+ "Path contains files shared with you" : "路径包含与你共享的文件"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_HK.js b/lib/l10n/zh_HK.js
index a171aeb6a76..791d75cc387 100644
--- a/lib/l10n/zh_HK.js
+++ b/lib/l10n/zh_HK.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "已與此群組分享了路徑",
"Link sharing is not allowed" : "不允許連結分享",
"Public upload is not allowed" : "不允許公開上傳",
- "Path contains files shared with you" : "路徑包含與您分享的檔案",
"Sharing is disabled" : "已停用分享",
"Sharing is disabled for you" : "您已停用分享",
"Cannot share with the share owner" : "無法與分享擁有者分享",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "點下方連結開啟",
"File is currently busy, please try again later" : "檔案目前忙碌中,請稍候再試",
"Cannot download file" : "無法下載檔案",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "請確保資料目錄最上層有一個 \"。ocdata\" 檔案"
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "請確保資料目錄最上層有一個 \"。ocdata\" 檔案",
+ "Path contains files shared with you" : "路徑包含與您分享的檔案"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_HK.json b/lib/l10n/zh_HK.json
index fbeb640060f..526e74fca9c 100644
--- a/lib/l10n/zh_HK.json
+++ b/lib/l10n/zh_HK.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "已與此群組分享了路徑",
"Link sharing is not allowed" : "不允許連結分享",
"Public upload is not allowed" : "不允許公開上傳",
- "Path contains files shared with you" : "路徑包含與您分享的檔案",
"Sharing is disabled" : "已停用分享",
"Sharing is disabled for you" : "您已停用分享",
"Cannot share with the share owner" : "無法與分享擁有者分享",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "點下方連結開啟",
"File is currently busy, please try again later" : "檔案目前忙碌中,請稍候再試",
"Cannot download file" : "無法下載檔案",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "請確保資料目錄最上層有一個 \"。ocdata\" 檔案"
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "請確保資料目錄最上層有一個 \"。ocdata\" 檔案",
+ "Path contains files shared with you" : "路徑包含與您分享的檔案"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js
index 100c097a1d0..bb9d3dbf3f1 100644
--- a/lib/l10n/zh_TW.js
+++ b/lib/l10n/zh_TW.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Path is already shared with this group" : "路徑已與此群組分享",
"Link sharing is not allowed" : "不允許連結分享",
"Public upload is not allowed" : "不允許公開上傳",
- "Path contains files shared with you" : "路徑包含與您分享的檔案",
"Sharing is disabled" : "已停用分享",
"Sharing is disabled for you" : "您已停用分享",
"Cannot share with the share owner" : "無法與分享擁有者分享",
@@ -457,6 +456,7 @@ OC.L10N.register(
"Click the button below to open it." : "點擊下方的按鈕將其打開。",
"File is currently busy, please try again later" : "檔案目前忙碌中,請稍候再試",
"Cannot download file" : "無法下載檔案",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "請確保資料目錄最上層有一個「.ocdata」檔案。"
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "請確保資料目錄最上層有一個「.ocdata」檔案。",
+ "Path contains files shared with you" : "路徑包含與您分享的檔案"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json
index ea8d41112be..b69642d199f 100644
--- a/lib/l10n/zh_TW.json
+++ b/lib/l10n/zh_TW.json
@@ -199,7 +199,6 @@
"Path is already shared with this group" : "路徑已與此群組分享",
"Link sharing is not allowed" : "不允許連結分享",
"Public upload is not allowed" : "不允許公開上傳",
- "Path contains files shared with you" : "路徑包含與您分享的檔案",
"Sharing is disabled" : "已停用分享",
"Sharing is disabled for you" : "您已停用分享",
"Cannot share with the share owner" : "無法與分享擁有者分享",
@@ -455,6 +454,7 @@
"Click the button below to open it." : "點擊下方的按鈕將其打開。",
"File is currently busy, please try again later" : "檔案目前忙碌中,請稍候再試",
"Cannot download file" : "無法下載檔案",
- "Ensure there is a file called \".ocdata\" in the root of the data directory." : "請確保資料目錄最上層有一個「.ocdata」檔案。"
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "請確保資料目錄最上層有一個「.ocdata」檔案。",
+ "Path contains files shared with you" : "路徑包含與您分享的檔案"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/private/Federation/CloudId.php b/lib/private/Federation/CloudId.php
index c20dbfc6418..b807c29d812 100644
--- a/lib/private/Federation/CloudId.php
+++ b/lib/private/Federation/CloudId.php
@@ -9,29 +9,15 @@ declare(strict_types=1);
namespace OC\Federation;
use OCP\Federation\ICloudId;
+use OCP\Federation\ICloudIdManager;
class CloudId implements ICloudId {
- /** @var string */
- private $id;
- /** @var string */
- private $user;
- /** @var string */
- private $remote;
- /** @var string|null */
- private $displayName;
-
- /**
- * CloudId constructor.
- *
- * @param string $id
- * @param string $user
- * @param string $remote
- */
- public function __construct(string $id, string $user, string $remote, ?string $displayName = null) {
- $this->id = $id;
- $this->user = $user;
- $this->remote = $remote;
- $this->displayName = $displayName;
+ public function __construct(
+ protected string $id,
+ protected string $user,
+ protected string $remote,
+ protected ?string $displayName = null,
+ ) {
}
/**
@@ -44,12 +30,18 @@ class CloudId implements ICloudId {
}
public function getDisplayId(): string {
+ if ($this->displayName === null) {
+ /** @var CloudIdManager $cloudIdManager */
+ $cloudIdManager = \OCP\Server::get(ICloudIdManager::class);
+ $this->displayName = $cloudIdManager->getDisplayNameFromContact($this->getId());
+ }
+
+ $atHost = str_replace(['http://', 'https://'], '', $this->getRemote());
+
if ($this->displayName) {
- $atPos = strrpos($this->getId(), '@');
- $atHost = substr($this->getId(), $atPos);
- return $this->displayName . $atHost;
+ return $this->displayName . '@' . $atHost;
}
- return str_replace('https://', '', str_replace('http://', '', $this->getId()));
+ return $this->getUser() . '@' . $atHost;
}
/**
diff --git a/lib/private/Federation/CloudIdManager.php b/lib/private/Federation/CloudIdManager.php
index 1c808c03eda..fa8ac0fa0c2 100644
--- a/lib/private/Federation/CloudIdManager.php
+++ b/lib/private/Federation/CloudIdManager.php
@@ -28,6 +28,7 @@ class CloudIdManager implements ICloudIdManager {
/** @var IUserManager */
private $userManager;
private ICache $memCache;
+ private ICache $displayNameCache;
/** @var array[] */
private array $cache = [];
@@ -42,6 +43,7 @@ class CloudIdManager implements ICloudIdManager {
$this->urlGenerator = $urlGenerator;
$this->userManager = $userManager;
$this->memCache = $cacheFactory->createDistributed('cloud_id_');
+ $this->displayNameCache = $cacheFactory->createDistributed('cloudid_name_');
$eventDispatcher->addListener(UserChangedEvent::class, [$this, 'handleUserEvent']);
$eventDispatcher->addListener(CardUpdatedEvent::class, [$this, 'handleCardEvent']);
}
@@ -108,13 +110,18 @@ class CloudIdManager implements ICloudIdManager {
if (!empty($user) && !empty($remote)) {
$remote = $this->ensureDefaultProtocol($remote);
- return new CloudId($id, $user, $remote, $this->getDisplayNameFromContact($id));
+ return new CloudId($id, $user, $remote, null);
}
}
throw new \InvalidArgumentException('Invalid cloud id');
}
- protected function getDisplayNameFromContact(string $cloudId): ?string {
+ public function getDisplayNameFromContact(string $cloudId): ?string {
+ $cachedName = $this->displayNameCache->get($cloudId);
+ if ($cachedName !== null) {
+ return $cachedName;
+ }
+
$addressBookEntries = $this->contactsManager->search($cloudId, ['CLOUD'], [
'limit' => 1,
'enumeration' => false,
@@ -128,14 +135,17 @@ class CloudIdManager implements ICloudIdManager {
// Warning, if user decides to make their full name local only,
// no FN is found on federated servers
if (isset($entry['FN'])) {
+ $this->displayNameCache->set($cloudId, $entry['FN'], 15 * 60);
return $entry['FN'];
} else {
+ $this->displayNameCache->set($cloudId, $cloudID, 15 * 60);
return $cloudID;
}
}
}
}
}
+ $this->displayNameCache->set($cloudId, $cloudId, 15 * 60);
return null;
}
@@ -168,7 +178,7 @@ class CloudIdManager implements ICloudIdManager {
$localUser = $this->userManager->get($user);
$displayName = $localUser ? $localUser->getDisplayName() : '';
} else {
- $displayName = $this->getDisplayNameFromContact($user . '@' . $host);
+ $displayName = null;
}
// For the visible cloudID we only strip away https
diff --git a/lib/private/Image.php b/lib/private/Image.php
index 3dd0bc49662..96699a0046b 100644
--- a/lib/private/Image.php
+++ b/lib/private/Image.php
@@ -56,7 +56,7 @@ class Image implements IImage {
$this->appConfig = $appConfig ?? Server::get(IAppConfig::class);
$this->config = $config ?? Server::get(IConfig::class);
- if (\OC_Util::fileInfoLoaded()) {
+ if (class_exists(finfo::class)) {
$this->fileInfo = new finfo(FILEINFO_MIME_TYPE);
}
}
diff --git a/lib/private/NavigationManager.php b/lib/private/NavigationManager.php
index 83d26c7ca63..c2125bc6f8a 100644
--- a/lib/private/NavigationManager.php
+++ b/lib/private/NavigationManager.php
@@ -110,9 +110,10 @@ class NavigationManager implements INavigationManager {
}
private function updateDefaultEntries() {
+ $defaultEntryId = $this->getDefaultEntryIdForUser($this->userSession->getUser(), false);
foreach ($this->entries as $id => $entry) {
if ($entry['type'] === 'link') {
- $this->entries[$id]['default'] = $id === $this->getDefaultEntryIdForUser($this->userSession->getUser(), false);
+ $this->entries[$id]['default'] = $id === $defaultEntryId;
}
}
}
diff --git a/lib/private/RichObjectStrings/Validator.php b/lib/private/RichObjectStrings/Validator.php
index d7f824f2948..adc4a8710f7 100644
--- a/lib/private/RichObjectStrings/Validator.php
+++ b/lib/private/RichObjectStrings/Validator.php
@@ -10,8 +10,6 @@ namespace OC\RichObjectStrings;
use OCP\RichObjectStrings\Definitions;
use OCP\RichObjectStrings\InvalidObjectExeption;
use OCP\RichObjectStrings\IValidator;
-use OCP\Server;
-use Psr\Log\LoggerInterface;
/**
* Class Validator
@@ -81,10 +79,10 @@ class Validator implements IValidator {
foreach ($parameter as $key => $value) {
if (!is_string($key)) {
- Server::get(LoggerInterface::class)->error('Object for placeholder ' . $placeholder . ' is invalid, key ' . $key . ' is not a string');
+ throw new InvalidObjectExeption('Object for placeholder ' . $placeholder . ' is invalid, key ' . $key . ' is not a string');
}
if (!is_string($value)) {
- Server::get(LoggerInterface::class)->error('Object for placeholder ' . $placeholder . ' is invalid, value ' . $value . ' for key ' . $key . ' is not a string');
+ throw new InvalidObjectExeption('Object for placeholder ' . $placeholder . ' is invalid, value ' . $value . ' for key ' . $key . ' is not a string');
}
}
}
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index f2b8a4c66a2..6d3021aff71 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -21,12 +21,14 @@ use OC\User\BackgroundJobs\CleanupDeletedUsers;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\Defaults;
+use OCP\Http\Client\IClientService;
use OCP\IAppConfig;
use OCP\IConfig;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IL10N;
use OCP\IRequest;
+use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\L10N\IFactory as IL10NFactory;
@@ -170,8 +172,7 @@ class Setup {
self::protectDataDirectory();
try {
- $util = new \OC_Util();
- $htAccessWorking = $util->isHtaccessWorking(Server::get(IConfig::class));
+ $htAccessWorking = $this->isHtaccessWorking($dataDir);
} catch (\OCP\HintException $e) {
$errors[] = [
'error' => $e->getMessage(),
@@ -212,6 +213,87 @@ class Setup {
];
}
+ public function createHtaccessTestFile(string $dataDir): string|false {
+ // php dev server does not support htaccess
+ if (php_sapi_name() === 'cli-server') {
+ return false;
+ }
+
+ // testdata
+ $fileName = '/htaccesstest.txt';
+ $testContent = 'This is used for testing whether htaccess is properly enabled to disallow access from the outside. This file can be safely removed.';
+
+ // creating a test file
+ $testFile = $dataDir . '/' . $fileName;
+
+ if (file_exists($testFile)) {// already running this test, possible recursive call
+ return false;
+ }
+
+ $fp = @fopen($testFile, 'w');
+ if (!$fp) {
+ throw new \OCP\HintException('Can\'t create test file to check for working .htaccess file.',
+ 'Make sure it is possible for the web server to write to ' . $testFile);
+ }
+ fwrite($fp, $testContent);
+ fclose($fp);
+
+ return $testContent;
+ }
+
+ /**
+ * Check if the .htaccess file is working
+ *
+ * @param \OCP\IConfig $config
+ * @return bool
+ * @throws Exception
+ * @throws \OCP\HintException If the test file can't get written.
+ */
+ public function isHtaccessWorking(string $dataDir) {
+ $config = Server::get(IConfig::class);
+
+ if (\OC::$CLI || !$config->getSystemValueBool('check_for_working_htaccess', true)) {
+ return true;
+ }
+
+ $testContent = $this->createHtaccessTestFile($dataDir);
+ if ($testContent === false) {
+ return false;
+ }
+
+ $fileName = '/htaccesstest.txt';
+ $testFile = $dataDir . '/' . $fileName;
+
+ // accessing the file via http
+ $url = Server::get(IURLGenerator::class)->getAbsoluteURL(\OC::$WEBROOT . '/data' . $fileName);
+ try {
+ $content = Server::get(IClientService::class)->newClient()->get($url)->getBody();
+ } catch (\Exception $e) {
+ $content = false;
+ }
+
+ if (str_starts_with($url, 'https:')) {
+ $url = 'http:' . substr($url, 6);
+ } else {
+ $url = 'https:' . substr($url, 5);
+ }
+
+ try {
+ $fallbackContent = Server::get(IClientService::class)->newClient()->get($url)->getBody();
+ } catch (\Exception $e) {
+ $fallbackContent = false;
+ }
+
+ // cleanup
+ @unlink($testFile);
+
+ /*
+ * If the content is not equal to test content our .htaccess
+ * is working as required
+ */
+ return $content !== $testContent && $fallbackContent !== $testContent;
+ }
+
/**
* @return array<string|array> errors
*/
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 037105428f5..3b247475afa 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -597,7 +597,11 @@ class Manager implements IManager {
$mounts = $this->mountManager->findIn($path->getPath());
foreach ($mounts as $mount) {
if ($mount->getStorage()->instanceOfStorage('\OCA\Files_Sharing\ISharedStorage')) {
- throw new \InvalidArgumentException($this->l->t('Path contains files shared with you'));
+ // Using a flat sharing model ensures the file owner can always see who has access.
+ // Allowing parent folder sharing would require tracking inherited access, which adds complexity
+ // and hurts performance/scalability.
+ // So we forbid sharing a parent folder of a share you received.
+ throw new \InvalidArgumentException($this->l->t('You cannot share a folder that contains other shares'));
}
}
}
@@ -1970,14 +1974,9 @@ class Manager implements IManager {
}
/**
- * Copied from \OC_Util::isSharingDisabledForUser
- *
- * TODO: Deprecate function from OC_Util
- *
- * @param string $userId
- * @return bool
+ * Check if sharing is disabled for the current user
*/
- public function sharingDisabledForUser($userId) {
+ public function sharingDisabledForUser(?string $userId): bool {
return $this->shareDisableChecker->sharingDisabledForUser($userId);
}
diff --git a/lib/private/Share20/ShareDisableChecker.php b/lib/private/Share20/ShareDisableChecker.php
index 9b8bc01558c..8cf523b8b31 100644
--- a/lib/private/Share20/ShareDisableChecker.php
+++ b/lib/private/Share20/ShareDisableChecker.php
@@ -25,12 +25,7 @@ class ShareDisableChecker {
$this->sharingDisabledForUsersCache = new CappedMemoryCache();
}
-
- /**
- * @param ?string $userId
- * @return bool
- */
- public function sharingDisabledForUser(?string $userId) {
+ public function sharingDisabledForUser(?string $userId): bool {
if ($userId === null) {
return false;
}
diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php
index 5743d2965d2..93f5d7a5866 100644
--- a/lib/private/Template/JSConfigHelper.php
+++ b/lib/private/Template/JSConfigHelper.php
@@ -30,6 +30,7 @@ use OCP\ILogger;
use OCP\ISession;
use OCP\IURLGenerator;
use OCP\IUser;
+use OCP\Server;
use OCP\ServerVersion;
use OCP\Session\Exceptions\SessionNotAvailableException;
use OCP\Share\IManager as IShareManager;
@@ -161,6 +162,8 @@ class JSConfigHelper {
'enable_non-accessible_features' => $this->config->getSystemValueBool('enable_non-accessible_features', true),
];
+ $shareManager = Server::get(IShareManager::class);
+
$array = [
'_oc_debug' => $this->config->getSystemValue('debug', false) ? 'true' : 'false',
'_oc_isadmin' => $uid !== null && $this->groupManager->isAdmin($uid) ? 'true' : 'false',
@@ -235,11 +238,11 @@ class JSConfigHelper {
'defaultExpireDateEnforced' => $enforceDefaultExpireDate,
'enforcePasswordForPublicLink' => Util::isPublicLinkPasswordRequired(),
'enableLinkPasswordByDefault' => $enableLinkPasswordByDefault,
- 'sharingDisabledForUser' => Util::isSharingDisabledForUser(),
+ 'sharingDisabledForUser' => $shareManager->sharingDisabledForUser($uid),
'resharingAllowed' => Share::isResharingAllowed(),
'remoteShareAllowed' => $outgoingServer2serverShareEnabled,
'federatedCloudShareDoc' => $this->urlGenerator->linkToDocs('user-sharing-federated'),
- 'allowGroupSharing' => \OC::$server->get(IShareManager::class)->allowGroupSharing(),
+ 'allowGroupSharing' => $shareManager->allowGroupSharing(),
'defaultInternalExpireDateEnabled' => $defaultInternalExpireDateEnabled,
'defaultInternalExpireDate' => $defaultInternalExpireDate,
'defaultInternalExpireDateEnforced' => $defaultInternalExpireDateEnforced,
diff --git a/lib/private/Template/functions.php b/lib/private/Template/functions.php
index 77a1e831008..402a7491e03 100644
--- a/lib/private/Template/functions.php
+++ b/lib/private/Template/functions.php
@@ -131,10 +131,10 @@ function script($app, $file = null): void {
function style($app, $file = null): void {
if (is_array($file)) {
foreach ($file as $f) {
- OC_Util::addStyle($app, $f);
+ Util::addStyle($app, $f);
}
} else {
- OC_Util::addStyle($app, $file);
+ Util::addStyle($app, $file);
}
}
@@ -143,6 +143,7 @@ function style($app, $file = null): void {
* @param string $app the appname
* @param string|string[] $file the filename,
* if an array is given it will add all styles
+ * @deprecated 32.0.0
*/
function vendor_style($app, $file = null): void {
if (is_array($file)) {
diff --git a/lib/private/legacy/OC_Util.php b/lib/private/legacy/OC_Util.php
index b2950275e41..580fec7b5b3 100644
--- a/lib/private/legacy/OC_Util.php
+++ b/lib/private/legacy/OC_Util.php
@@ -9,7 +9,6 @@ use bantu\IniGetWrapper\IniGetWrapper;
use OC\Authentication\TwoFactorAuth\Manager as TwoFactorAuthManager;
use OC\Files\SetupManager;
use OCP\Files\Template\ITemplateManager;
-use OCP\Http\Client\IClientService;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IURLGenerator;
@@ -19,17 +18,13 @@ use OCP\Security\ISecureRandom;
use OCP\Share\IManager;
use Psr\Log\LoggerInterface;
+/**
+ * @deprecated 32.0.0 Use \OCP\Util or any appropriate official API instead
+ */
class OC_Util {
public static $styles = [];
public static $headers = [];
- /** @var array Local cache of version.php */
- private static $versionCache = null;
-
- protected static function getAppManager() {
- return \OC::$server->getAppManager();
- }
-
/**
* Setup the file system
*
@@ -62,8 +57,8 @@ class OC_Util {
* Check if a password is required for each public link
*
* @param bool $checkGroupMembership Check group membership exclusion
- * @return boolean
- * @suppress PhanDeprecatedFunction
+ * @return bool
+ * @deprecated 32.0.0 use OCP\Share\IManager's shareApiLinkEnforcePassword directly
*/
public static function isPublicLinkPasswordRequired(bool $checkGroupMembership = true) {
/** @var IManager $shareManager */
@@ -77,6 +72,7 @@ class OC_Util {
* @param IGroupManager $groupManager
* @param IUser|null $user
* @return bool
+ * @deprecated 32.0.0 use OCP\Share\IManager's sharingDisabledForUser directly
*/
public static function isSharingDisabledForUser(IConfig $config, IGroupManager $groupManager, $user) {
/** @var IManager $shareManager */
@@ -89,7 +85,7 @@ class OC_Util {
* check if share API enforces a default expire date
*
* @return bool
- * @suppress PhanDeprecatedFunction
+ * @deprecated 32.0.0 use OCP\Share\IManager's shareApiLinkDefaultExpireDateEnforced directly
*/
public static function isDefaultExpireDateEnforced() {
/** @var IManager $shareManager */
@@ -205,12 +201,10 @@ class OC_Util {
}
/**
- * @return void
- * @suppress PhanUndeclaredMethod
+ * @deprecated 32.0.0 Call tearDown directly on SetupManager
*/
- public static function tearDownFS() {
- /** @var SetupManager $setupManager */
- $setupManager = \OC::$server->get(SetupManager::class);
+ public static function tearDownFS(): void {
+ $setupManager = \OCP\Server::get(SetupManager::class);
$setupManager->tearDown();
}
@@ -219,10 +213,9 @@ class OC_Util {
*
* @param string $application application to get the files from
* @param string $directory directory within this application (css, js, vendor, etc)
- * @param string $file the file inside of the above folder
- * @return string the path
+ * @param ?string $file the file inside of the above folder
*/
- private static function generatePath($application, $directory, $file) {
+ private static function generatePath($application, $directory, $file): string {
if (is_null($file)) {
$file = $application;
$application = '';
@@ -240,9 +233,9 @@ class OC_Util {
* @param string $application application id
* @param string|null $file filename
* @param bool $prepend prepend the Style to the beginning of the list
- * @return void
+ * @deprecated 32.0.0 Use \OCP\Util::addStyle
*/
- public static function addStyle($application, $file = null, $prepend = false) {
+ public static function addStyle($application, $file = null, $prepend = false): void {
$path = OC_Util::generatePath($application, 'css', $file);
self::addExternalResource($application, $prepend, $path, 'style');
}
@@ -253,9 +246,9 @@ class OC_Util {
* @param string $application application id
* @param string|null $file filename
* @param bool $prepend prepend the Style to the beginning of the list
- * @return void
+ * @deprecated 32.0.0
*/
- public static function addVendorStyle($application, $file = null, $prepend = false) {
+ public static function addVendorStyle($application, $file = null, $prepend = false): void {
$path = OC_Util::generatePath($application, 'vendor', $file);
self::addExternalResource($application, $prepend, $path, 'style');
}
@@ -267,9 +260,8 @@ class OC_Util {
* @param bool $prepend prepend the file to the beginning of the list
* @param string $path
* @param string $type (script or style)
- * @return void
*/
- private static function addExternalResource($application, $prepend, $path, $type = 'script') {
+ private static function addExternalResource($application, $prepend, $path, $type = 'script'): void {
if ($type === 'style') {
if (!in_array($path, self::$styles)) {
if ($prepend === true) {
@@ -289,8 +281,9 @@ class OC_Util {
* @param array $attributes array of attributes for the element
* @param string $text the text content for the element
* @param bool $prepend prepend the header to the beginning of the list
+ * @deprecated 32.0.0 Use \OCP\Util::addHeader instead
*/
- public static function addHeader($tag, $attributes, $text = null, $prepend = false) {
+ public static function addHeader($tag, $attributes, $text = null, $prepend = false): void {
$header = [
'tag' => $tag,
'attributes' => $attributes,
@@ -306,7 +299,6 @@ class OC_Util {
/**
* check if the current server configuration is suitable for ownCloud
*
- * @param \OC\SystemConfig $config
* @return array arrays with error messages and hints
*/
public static function checkServer(\OC\SystemConfig $config) {
@@ -529,6 +521,7 @@ class OC_Util {
*
* @param string $dataDirectory
* @return array arrays with error messages and hints
+ * @internal
*/
public static function checkDataDirectoryPermissions($dataDirectory) {
if (!\OC::$server->getConfig()->getSystemValueBool('check_data_directory_permissions', true)) {
@@ -557,6 +550,7 @@ class OC_Util {
*
* @param string $dataDirectory data directory path
* @return array errors found
+ * @internal
*/
public static function checkDataDirectoryValidity($dataDirectory) {
$l = \OC::$server->getL10N('lib');
@@ -581,9 +575,9 @@ class OC_Util {
* Check if the user is logged in, redirects to home if not. With
* redirect URL parameter to the request URI.
*
- * @return void
+ * @deprecated 32.0.0
*/
- public static function checkLoggedIn() {
+ public static function checkLoggedIn(): void {
// Check if we are a user
if (!\OC::$server->getUserSession()->isLoggedIn()) {
header('Location: ' . \OC::$server->getURLGenerator()->linkToRoute(
@@ -605,10 +599,10 @@ class OC_Util {
/**
* Check if the user is a admin, redirects to home if not
*
- * @return void
+ * @deprecated 32.0.0
*/
- public static function checkAdminUser() {
- OC_Util::checkLoggedIn();
+ public static function checkAdminUser(): void {
+ self::checkLoggedIn();
if (!OC_User::isAdminUser(OC_User::getUser())) {
header('Location: ' . \OCP\Util::linkToAbsolute('', 'index.php'));
exit();
@@ -621,7 +615,7 @@ class OC_Util {
* the apps visible for the current user
*
* @return string URL
- * @suppress PhanDeprecatedFunction
+ * @deprecated 32.0.0 use IURLGenerator's linkToDefaultPageUrl directly
*/
public static function getDefaultPageUrl() {
/** @var IURLGenerator $urlGenerator */
@@ -632,9 +626,9 @@ class OC_Util {
/**
* Redirect to the user default page
*
- * @return void
+ * @deprecated 32.0.0
*/
- public static function redirectToDefaultPage() {
+ public static function redirectToDefaultPage(): void {
$location = self::getDefaultPageUrl();
header('Location: ' . $location);
exit();
@@ -645,7 +639,7 @@ class OC_Util {
*
* @return string
*/
- public static function getInstanceId() {
+ public static function getInstanceId(): string {
$id = \OC::$server->getSystemConfig()->getValue('instanceid', null);
if (is_null($id)) {
// We need to guarantee at least one letter in instanceid so it can be used as the session_name
@@ -663,6 +657,7 @@ class OC_Util {
*
* @param string|string[] $value
* @return ($value is array ? string[] : string)
+ * @deprecated 32.0.0 use \OCP\Util::sanitizeHTML instead
*/
public static function sanitizeHTML($value) {
if (is_array($value)) {
@@ -685,6 +680,7 @@ class OC_Util {
*
* @param string $component part of URI to encode
* @return string
+ * @deprecated 32.0.0 use \OCP\Util::encodePath instead
*/
public static function encodePath($component) {
$encoded = rawurlencode($component);
@@ -692,86 +688,6 @@ class OC_Util {
return $encoded;
}
-
- public function createHtaccessTestFile(\OCP\IConfig $config) {
- // php dev server does not support htaccess
- if (php_sapi_name() === 'cli-server') {
- return false;
- }
-
- // testdata
- $fileName = '/htaccesstest.txt';
- $testContent = 'This is used for testing whether htaccess is properly enabled to disallow access from the outside. This file can be safely removed.';
-
- // creating a test file
- $testFile = $config->getSystemValueString('datadirectory', OC::$SERVERROOT . '/data') . '/' . $fileName;
-
- if (file_exists($testFile)) {// already running this test, possible recursive call
- return false;
- }
-
- $fp = @fopen($testFile, 'w');
- if (!$fp) {
- throw new \OCP\HintException('Can\'t create test file to check for working .htaccess file.',
- 'Make sure it is possible for the web server to write to ' . $testFile);
- }
- fwrite($fp, $testContent);
- fclose($fp);
-
- return $testContent;
- }
-
- /**
- * Check if the .htaccess file is working
- *
- * @param \OCP\IConfig $config
- * @return bool
- * @throws Exception
- * @throws \OCP\HintException If the test file can't get written.
- */
- public function isHtaccessWorking(\OCP\IConfig $config) {
- if (\OC::$CLI || !$config->getSystemValueBool('check_for_working_htaccess', true)) {
- return true;
- }
-
- $testContent = $this->createHtaccessTestFile($config);
- if ($testContent === false) {
- return false;
- }
-
- $fileName = '/htaccesstest.txt';
- $testFile = $config->getSystemValueString('datadirectory', OC::$SERVERROOT . '/data') . '/' . $fileName;
-
- // accessing the file via http
- $url = \OC::$server->getURLGenerator()->getAbsoluteURL(OC::$WEBROOT . '/data' . $fileName);
- try {
- $content = \OC::$server->get(IClientService::class)->newClient()->get($url)->getBody();
- } catch (\Exception $e) {
- $content = false;
- }
-
- if (str_starts_with($url, 'https:')) {
- $url = 'http:' . substr($url, 6);
- } else {
- $url = 'https:' . substr($url, 5);
- }
-
- try {
- $fallbackContent = \OC::$server->get(IClientService::class)->newClient()->get($url)->getBody();
- } catch (\Exception $e) {
- $fallbackContent = false;
- }
-
- // cleanup
- @unlink($testFile);
-
- /*
- * If the content is not equal to test content our .htaccess
- * is working as required
- */
- return $content !== $testContent && $fallbackContent !== $testContent;
- }
-
/**
* Check if current locale is non-UTF8
*
@@ -791,9 +707,9 @@ class OC_Util {
* Check if the setlocale call does not work. This can happen if the right
* local packages are not available on the server.
*
- * @return bool
+ * @internal
*/
- public static function isSetLocaleWorking() {
+ public static function isSetLocaleWorking(): bool {
if (self::isNonUTF8Locale()) {
// Borrowed from \Patchwork\Utf8\Bootup::initLocale
setlocale(LC_ALL, 'C.UTF-8', 'C');
@@ -811,9 +727,9 @@ class OC_Util {
/**
* Check if it's possible to get the inline annotations
*
- * @return bool
+ * @internal
*/
- public static function isAnnotationsWorking() {
+ public static function isAnnotationsWorking(): bool {
if (PHP_VERSION_ID >= 80300) {
/** @psalm-suppress UndefinedMethod */
$reflection = \ReflectionMethod::createFromMethodName(__METHOD__);
@@ -828,9 +744,9 @@ class OC_Util {
/**
* Check if the PHP module fileinfo is loaded.
*
- * @return bool
+ * @internal
*/
- public static function fileInfoLoaded() {
+ public static function fileInfoLoaded(): bool {
return function_exists('finfo_open');
}
@@ -900,6 +816,7 @@ class OC_Util {
* @param \OC\SystemConfig $config
* @return bool whether the core or any app needs an upgrade
* @throws \OCP\HintException When the upgrade from the given version is not allowed
+ * @deprecated 32.0.0 Use \OCP\Util::needUpgrade instead
*/
public static function needUpgrade(\OC\SystemConfig $config) {
if ($config->getValue('installed', false)) {
diff --git a/lib/public/Share/IManager.php b/lib/public/Share/IManager.php
index 23713f2e462..89d6f5e4a87 100644
--- a/lib/public/Share/IManager.php
+++ b/lib/public/Share/IManager.php
@@ -485,11 +485,9 @@ interface IManager {
/**
* Check if sharing is disabled for the given user
*
- * @param string $userId
- * @return bool
* @since 9.0.0
*/
- public function sharingDisabledForUser($userId);
+ public function sharingDisabledForUser(?string $userId): bool;
/**
* Check if outgoing server2server shares are allowed
diff --git a/lib/public/Util.php b/lib/public/Util.php
index 65776bd15a7..14663abd62f 100644
--- a/lib/public/Util.php
+++ b/lib/public/Util.php
@@ -78,19 +78,16 @@ class Util {
*
* @return boolean
* @since 7.0.0
- * @deprecated 9.1.0 Use \OC::$server->get(\OCP\Share\IManager::class)->sharingDisabledForUser
+ * @deprecated 9.1.0 Use Server::get(\OCP\Share\IManager::class)->sharingDisabledForUser
*/
public static function isSharingDisabledForUser() {
if (self::$shareManager === null) {
- self::$shareManager = \OC::$server->get(IManager::class);
+ self::$shareManager = Server::get(IManager::class);
}
- $user = \OC::$server->getUserSession()->getUser();
- if ($user !== null) {
- $user = $user->getUID();
- }
+ $user = Server::get(\OCP\IUserSession::class)->getUser();
- return self::$shareManager->sharingDisabledForUser($user);
+ return self::$shareManager->sharingDisabledForUser($user?->getUID());
}
/**
@@ -102,13 +99,15 @@ class Util {
}
/**
- * add a css file
- * @param string $application
- * @param string $file
+ * Add a css file
+ *
+ * @param string $application application id
+ * @param ?string $file filename
+ * @param bool $prepend prepend the style to the beginning of the list
* @since 4.0.0
*/
- public static function addStyle($application, $file = null): void {
- \OC_Util::addStyle($application, $file);
+ public static function addStyle(string $application, ?string $file = null, bool $prepend = false): void {
+ \OC_Util::addStyle($application, $file, $prepend);
}
/**
diff --git a/tests/lib/Comments/ManagerTest.php b/tests/lib/Comments/ManagerTest.php
index 15961b029f5..02118125c24 100644
--- a/tests/lib/Comments/ManagerTest.php
+++ b/tests/lib/Comments/ManagerTest.php
@@ -507,14 +507,14 @@ class ManagerTest extends TestCase {
}
$saveSuccessful = $manager->save($comment);
- $this->assertTrue($saveSuccessful);
- $this->assertTrue($comment->getId() !== '');
- $this->assertTrue($comment->getId() !== '0');
- $this->assertTrue(!is_null($comment->getCreationDateTime()));
+ $this->assertTrue($saveSuccessful, 'Comment saving was not successful');
+ $this->assertNotEquals('', $comment->getId(), 'Comment ID should not be empty');
+ $this->assertNotEquals('0', $comment->getId(), 'Comment ID should not be string \'0\'');
+ $this->assertNotNull($comment->getCreationDateTime(), 'Comment creation date should not be null');
$loadedComment = $manager->get($comment->getId());
- $this->assertSame($comment->getMessage(), $loadedComment->getMessage());
- $this->assertEquals($comment->getCreationDateTime()->getTimestamp(), $loadedComment->getCreationDateTime()->getTimestamp());
+ $this->assertSame($comment->getMessage(), $loadedComment->getMessage(), 'Comment message should match');
+ $this->assertEquals($comment->getCreationDateTime()->getTimestamp(), $loadedComment->getCreationDateTime()->getTimestamp(), 'Comment creation date should match');
return $comment;
}
diff --git a/tests/lib/Federation/CloudIdManagerTest.php b/tests/lib/Federation/CloudIdManagerTest.php
index 13e6b111864..14daef27142 100644
--- a/tests/lib/Federation/CloudIdManagerTest.php
+++ b/tests/lib/Federation/CloudIdManagerTest.php
@@ -1,4 +1,7 @@
<?php
+
+declare(strict_types=1);
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -10,11 +13,15 @@ use OC\Federation\CloudIdManager;
use OC\Memcache\ArrayCache;
use OCP\Contacts\IManager;
use OCP\EventDispatcher\IEventDispatcher;
+use OCP\Federation\ICloudIdManager;
use OCP\ICacheFactory;
use OCP\IURLGenerator;
use OCP\IUserManager;
use Test\TestCase;
+/**
+ * @group DB
+ */
class CloudIdManagerTest extends TestCase {
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
protected $contactsManager;
@@ -36,7 +43,7 @@ class CloudIdManagerTest extends TestCase {
$this->userManager = $this->createMock(IUserManager::class);
$this->cacheFactory = $this->createMock(ICacheFactory::class);
- $this->cacheFactory->method('createLocal')
+ $this->cacheFactory->method('createDistributed')
->willReturn(new ArrayCache(''));
$this->cloudIdManager = new CloudIdManager(
@@ -46,6 +53,7 @@ class CloudIdManagerTest extends TestCase {
$this->cacheFactory,
$this->createMock(IEventDispatcher::class)
);
+ $this->overwriteService(ICloudIdManager::class, $this->cloudIdManager);
}
public function cloudIdProvider(): array {
@@ -70,7 +78,7 @@ class CloudIdManagerTest extends TestCase {
->willReturn([
[
'CLOUD' => [$cleanId],
- 'FN' => 'Ample Ex',
+ 'FN' => $displayName,
]
]);
@@ -92,9 +100,6 @@ class CloudIdManagerTest extends TestCase {
/**
* @dataProvider invalidCloudIdProvider
- *
- * @param string $cloudId
- *
*/
public function testInvalidCloudId(string $cloudId): void {
$this->expectException(\InvalidArgumentException::class);
diff --git a/tests/lib/Federation/CloudIdTest.php b/tests/lib/Federation/CloudIdTest.php
index 4087f45622d..ca949d163c7 100644
--- a/tests/lib/Federation/CloudIdTest.php
+++ b/tests/lib/Federation/CloudIdTest.php
@@ -1,4 +1,7 @@
<?php
+
+declare(strict_types=1);
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -7,25 +10,42 @@
namespace Test\Federation;
use OC\Federation\CloudId;
+use OC\Federation\CloudIdManager;
+use OCP\Federation\ICloudIdManager;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
+/**
+ * @group DB
+ */
class CloudIdTest extends TestCase {
- public function dataGetDisplayCloudId() {
+ protected CloudIdManager&MockObject $cloudIdManager;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $this->cloudIdManager = $this->createMock(CloudIdManager::class);
+ $this->overwriteService(ICloudIdManager::class, $this->cloudIdManager);
+ }
+
+ public function dataGetDisplayCloudId(): array {
return [
- ['test@example.com', 'test@example.com'],
- ['test@http://example.com', 'test@example.com'],
- ['test@https://example.com', 'test@example.com'],
+ ['test@example.com', 'test', 'example.com', 'test@example.com'],
+ ['test@http://example.com', 'test', 'http://example.com', 'test@example.com'],
+ ['test@https://example.com', 'test', 'https://example.com', 'test@example.com'],
+ ['test@https://example.com', 'test', 'https://example.com', 'Beloved Amy@example.com', 'Beloved Amy'],
];
}
/**
* @dataProvider dataGetDisplayCloudId
- *
- * @param string $id
- * @param string $display
*/
- public function testGetDisplayCloudId($id, $display): void {
- $cloudId = new CloudId($id, '', '');
+ public function testGetDisplayCloudId(string $id, string $user, string $remote, string $display, ?string $addressbookName = null): void {
+ $this->cloudIdManager->expects($this->once())
+ ->method('getDisplayNameFromContact')
+ ->willReturn($addressbookName);
+
+ $cloudId = new CloudId($id, $user, $remote);
$this->assertEquals($display, $cloudId->getDisplayId());
}
}
diff --git a/tests/lib/RichObjectStrings/ValidatorTest.php b/tests/lib/RichObjectStrings/ValidatorTest.php
index cbd54a0374c..c5f88394a33 100644
--- a/tests/lib/RichObjectStrings/ValidatorTest.php
+++ b/tests/lib/RichObjectStrings/ValidatorTest.php
@@ -10,6 +10,7 @@ namespace Test\RichObjectStrings;
use OC\RichObjectStrings\Validator;
use OCP\RichObjectStrings\Definitions;
+use OCP\RichObjectStrings\InvalidObjectExeption;
use Test\TestCase;
class ValidatorTest extends TestCase {
@@ -36,6 +37,9 @@ class ValidatorTest extends TestCase {
]);
$this->addToAssertionCount(2);
+ $this->expectException(InvalidObjectExeption::class);
+
+ $this->expectExceptionMessage('Object for placeholder string1 is invalid, value 123 for key key is not a string');
$v->validate('test {string1} test.', [
'string1' => [
'type' => 'user',
@@ -45,6 +49,7 @@ class ValidatorTest extends TestCase {
],
]);
+ $this->expectExceptionMessage('Object for placeholder string1 is invalid, key 456 is not a string');
$v->validate('test {string1} test.', [
'string1' => [
'type' => 'user',
diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php
index 8b8d6ea4e65..03731a90754 100644
--- a/tests/lib/Share20/ManagerTest.php
+++ b/tests/lib/Share20/ManagerTest.php
@@ -2264,7 +2264,7 @@ class ManagerTest extends \Test\TestCase {
public function testPathCreateChecksContainsSharedMount(): void {
$this->expectException(\InvalidArgumentException::class);
- $this->expectExceptionMessage('Path contains files shared with you');
+ $this->expectExceptionMessage('You cannot share a folder that contains other shares');
$path = $this->createMock(Folder::class);
$path->method('getPath')->willReturn('path');
diff --git a/tests/lib/UtilTest.php b/tests/lib/UtilTest.php
index fcb77332fcc..0063a991e48 100644
--- a/tests/lib/UtilTest.php
+++ b/tests/lib/UtilTest.php
@@ -42,25 +42,25 @@ class UtilTest extends \Test\TestCase {
'And It Even May &lt;strong&gt;Nest&lt;/strong&gt;'
],
];
- $result = OC_Util::sanitizeHTML($badArray);
+ $result = Util::sanitizeHTML($badArray);
$this->assertEquals($goodArray, $result);
$badString = '<img onload="alert(1)" />';
- $result = OC_Util::sanitizeHTML($badString);
+ $result = Util::sanitizeHTML($badString);
$this->assertEquals('&lt;img onload=&quot;alert(1)&quot; /&gt;', $result);
$badString = "<script>alert('Hacked!');</script>";
- $result = OC_Util::sanitizeHTML($badString);
+ $result = Util::sanitizeHTML($badString);
$this->assertEquals('&lt;script&gt;alert(&#039;Hacked!&#039;);&lt;/script&gt;', $result);
$goodString = 'This is a good string without HTML.';
- $result = OC_Util::sanitizeHTML($goodString);
+ $result = Util::sanitizeHTML($goodString);
$this->assertEquals('This is a good string without HTML.', $result);
}
public function testEncodePath(): void {
$component = '/§#@test%&^ä/-child';
- $result = OC_Util::encodePath($component);
+ $result = Util::encodePath($component);
$this->assertEquals('/%C2%A7%23%40test%25%26%5E%C3%A4/-child', $result);
}
@@ -295,12 +295,12 @@ class UtilTest extends \Test\TestCase {
}
public function testAddStyle(): void {
- \OC_Util::addStyle('core', 'myFancyCSSFile1');
- \OC_Util::addStyle('myApp', 'myFancyCSSFile2');
- \OC_Util::addStyle('core', 'myFancyCSSFile0', true);
- \OC_Util::addStyle('core', 'myFancyCSSFile10', true);
+ Util::addStyle('core', 'myFancyCSSFile1');
+ Util::addStyle('myApp', 'myFancyCSSFile2');
+ Util::addStyle('core', 'myFancyCSSFile0', true);
+ Util::addStyle('core', 'myFancyCSSFile10', true);
// add duplicate
- \OC_Util::addStyle('core', 'myFancyCSSFile1');
+ Util::addStyle('core', 'myFancyCSSFile1');
$this->assertEquals([], Util::getScripts());
$this->assertEquals([