diff options
131 files changed, 2349 insertions, 1297 deletions
diff --git a/.github/workflows/phpunit-object-store-primary.yml b/.github/workflows/phpunit-object-store-primary.yml new file mode 100644 index 00000000000..0c8140a96ce --- /dev/null +++ b/.github/workflows/phpunit-object-store-primary.yml @@ -0,0 +1,121 @@ +# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: MIT +name: PHPUnit primary object store +on: + pull_request: + schedule: + - cron: "15 2 * * *" + +concurrency: + group: phpunit-object-store-primary-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + changes: + runs-on: ubuntu-latest-low + + outputs: + src: ${{ steps.changes.outputs.src}} + + steps: + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + continue-on-error: true + with: + filters: | + src: + - '.github/workflows/**' + - '3rdparty/**' + - '**/appinfo/**' + - '**/lib/**' + - '**/templates/**' + - '**/tests/**' + - 'vendor/**' + - 'vendor-bin/**' + - '.php-cs-fixer.dist.php' + - 'composer.json' + - 'composer.lock' + - '**.php' + + object-store-primary-tests-minio: + runs-on: ubuntu-latest + needs: changes + + if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }} + + strategy: + # do not stop on another job's failure + fail-fast: false + matrix: + php-versions: ['8.1'] + key: ['s3', 's3-multibucket'] + + name: php${{ matrix.php-versions }}-${{ matrix.key }}-minio + + services: + cache: + image: ghcr.io/nextcloud/continuous-integration-redis:latest + ports: + - 6379:6379/tcp + options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3 + + minio: + image: bitnami/minio + env: + MINIO_ROOT_USER: nextcloud + MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ= + MINIO_DEFAULT_BUCKETS: nextcloud + ports: + - "9000:9000" + + steps: + - name: Checkout server + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + with: + submodules: true + + - name: Set up php ${{ matrix.php-versions }} + uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2 + with: + php-version: ${{ matrix.php-versions }} + extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Nextcloud + env: + OBJECT_STORE: ${{ matrix.key }} + OBJECT_STORE_KEY: nextcloud + OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ= + run: | + composer install + cp tests/redis.config.php config/ + cp tests/preseed-config.php config/config.php + ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password + php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 + + - name: Wait for S3 + run: | + sleep 10 + curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready + + - name: PHPUnit + run: composer run test:db + + - name: S3 logs + if: always() + run: | + cat data/nextcloud.log + docker ps -a + docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done + + + object-store-primary-summary: + runs-on: ubuntu-latest-low + needs: [changes,object-store-primary-tests-minio] + + if: always() + + steps: + - name: Summary status + run: if ${{ needs.changes.outputs.src != 'false' && needs.object-store-primary-tests-minio.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/static-code-analysis.yml b/.github/workflows/static-code-analysis.yml index 81496403679..e30e41a4e68 100644 --- a/.github/workflows/static-code-analysis.yml +++ b/.github/workflows/static-code-analysis.yml @@ -36,7 +36,7 @@ jobs: - name: Show potential changes in Psalm baseline if: always() - run: git diff -- . ':!lib/composer' + run: git diff --exit-code -- . ':!lib/composer' - name: Upload Analysis results to GitHub if: always() @@ -98,4 +98,4 @@ jobs: - name: Show potential changes in Psalm baseline if: always() - run: git diff -- . ':!lib/composer' + run: git diff --exit-code -- . ':!lib/composer' diff --git a/apps/federatedfilesharing/l10n/de_DE.js b/apps/federatedfilesharing/l10n/de_DE.js index d203d4c3ebf..0aa58014d5a 100644 --- a/apps/federatedfilesharing/l10n/de_DE.js +++ b/apps/federatedfilesharing/l10n/de_DE.js @@ -33,6 +33,7 @@ OC.L10N.register( "Unable to update federated files sharing config" : "Einstellungen zum Federated-Teilen konnten nicht aktualisiert werden", "Federated Cloud" : "Federated Cloud", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Sie können mit jedem teilen, der einen Nextcloud-Server oder andere Open Cloud Mesh (OCM) kompatible Server und Dienste verwendet! Geben Sie einfach deren Federated-Cloud-ID in den Teilen-Dialog ein. Diese sieht wie folgt aus: person@cloud.example.com", + "Your Federated Cloud ID" : "Ihre Federated-Cloud-ID", "Share it so your friends can share files with you:" : "Teilen Sie es, so dass Ihre Freunde Dateien mit Ihnen teilen können:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (früher Twitter)", @@ -52,6 +53,7 @@ OC.L10N.register( "Remote share" : "Externe Freigabe", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Möchten Sie die externe Freigabe {name} von {owner}@{remote} hinzufügen?", "Remote share password" : "Passwort für die externe Freigabe", + "Incoming share could not be processed" : "Eingehende Freigabe konnte nicht verarbeitet werden", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird.", "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Legt fest, wie Personen zwischen Servern teilen können. Dies gilt auch für Freigaben zwischen Benutzern auf diesem Server, wenn sie die Federated-Sharing verwenden.", diff --git a/apps/federatedfilesharing/l10n/de_DE.json b/apps/federatedfilesharing/l10n/de_DE.json index fe741194186..ba0dc68e0a3 100644 --- a/apps/federatedfilesharing/l10n/de_DE.json +++ b/apps/federatedfilesharing/l10n/de_DE.json @@ -31,6 +31,7 @@ "Unable to update federated files sharing config" : "Einstellungen zum Federated-Teilen konnten nicht aktualisiert werden", "Federated Cloud" : "Federated Cloud", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Sie können mit jedem teilen, der einen Nextcloud-Server oder andere Open Cloud Mesh (OCM) kompatible Server und Dienste verwendet! Geben Sie einfach deren Federated-Cloud-ID in den Teilen-Dialog ein. Diese sieht wie folgt aus: person@cloud.example.com", + "Your Federated Cloud ID" : "Ihre Federated-Cloud-ID", "Share it so your friends can share files with you:" : "Teilen Sie es, so dass Ihre Freunde Dateien mit Ihnen teilen können:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (früher Twitter)", @@ -50,6 +51,7 @@ "Remote share" : "Externe Freigabe", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Möchten Sie die externe Freigabe {name} von {owner}@{remote} hinzufügen?", "Remote share password" : "Passwort für die externe Freigabe", + "Incoming share could not be processed" : "Eingehende Freigabe konnte nicht verarbeitet werden", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird.", "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Legt fest, wie Personen zwischen Servern teilen können. Dies gilt auch für Freigaben zwischen Benutzern auf diesem Server, wenn sie die Federated-Sharing verwenden.", diff --git a/apps/federatedfilesharing/l10n/en_GB.js b/apps/federatedfilesharing/l10n/en_GB.js index 2a77ac5b8cc..767fa665151 100644 --- a/apps/federatedfilesharing/l10n/en_GB.js +++ b/apps/federatedfilesharing/l10n/en_GB.js @@ -33,6 +33,7 @@ OC.L10N.register( "Unable to update federated files sharing config" : "Unable to update federated files sharing config", "Federated Cloud" : "Federated Cloud", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialogue. It looks like person@cloud.example.com", + "Your Federated Cloud ID" : "Your Federated Cloud ID", "Share it so your friends can share files with you:" : "Share it so your friends can share files with you:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (formerly Twitter)", @@ -52,6 +53,7 @@ OC.L10N.register( "Remote share" : "Remote share", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Do you want to add the remote share {name} from {owner}@{remote}?", "Remote share password" : "Remote share password", + "Incoming share could not be processed" : "Incoming share could not be processed", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Sharing %1$s failed, because this item is already shared with user %2$s", "Not allowed to create a federated share with the same user" : "Not allowed to create a federated share with the same user", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing.", diff --git a/apps/federatedfilesharing/l10n/en_GB.json b/apps/federatedfilesharing/l10n/en_GB.json index a80e830a772..98ae315467a 100644 --- a/apps/federatedfilesharing/l10n/en_GB.json +++ b/apps/federatedfilesharing/l10n/en_GB.json @@ -31,6 +31,7 @@ "Unable to update federated files sharing config" : "Unable to update federated files sharing config", "Federated Cloud" : "Federated Cloud", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialogue. It looks like person@cloud.example.com", + "Your Federated Cloud ID" : "Your Federated Cloud ID", "Share it so your friends can share files with you:" : "Share it so your friends can share files with you:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (formerly Twitter)", @@ -50,6 +51,7 @@ "Remote share" : "Remote share", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Do you want to add the remote share {name} from {owner}@{remote}?", "Remote share password" : "Remote share password", + "Incoming share could not be processed" : "Incoming share could not be processed", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Sharing %1$s failed, because this item is already shared with user %2$s", "Not allowed to create a federated share with the same user" : "Not allowed to create a federated share with the same user", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing.", diff --git a/apps/federatedfilesharing/l10n/gl.js b/apps/federatedfilesharing/l10n/gl.js index 186c2b78292..03b75f0f3c6 100644 --- a/apps/federatedfilesharing/l10n/gl.js +++ b/apps/federatedfilesharing/l10n/gl.js @@ -33,6 +33,7 @@ OC.L10N.register( "Unable to update federated files sharing config" : "Non é posíbel actualizar a configuración de uso compartido de ficheiros federados", "Federated Cloud" : "Nube federada", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Pode compartir con calquera persoa que empregue servidores Nextcloud, ou outro servidor ou servizo compatíbel co Open Cloud Mesh (OCM)! Simplemente, introduza o seu ID de nube federada no diálogo de compartir. É algo como persona@cloud.example.com", + "Your Federated Cloud ID" : "ID da súa nube federada", "Share it so your friends can share files with you:" : "Compártao para que as súas amizades poidan compartir ficheiros con Vde.:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (anteriormente Twitter).", @@ -52,6 +53,7 @@ OC.L10N.register( "Remote share" : "Compartición remota", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Quere engadir a compartición remota {name} de {owner}@{remote}?", "Remote share password" : "Contrasinal da compartición remota", + "Incoming share could not be processed" : "Non foi posíbel procesar a compartición entrante", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallou a compartición de %1$s por mor de que este elemento xa foi compartido co usuario %2$s", "Not allowed to create a federated share with the same user" : "Non está permitido crear unha compartición federada co mesmo usuario", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Axuste a forma como a xente poden compartir entre servidores. Isto inclúe tamén as comparticións entre usuarios deste servidor se están a usaren a compartición federada.", diff --git a/apps/federatedfilesharing/l10n/gl.json b/apps/federatedfilesharing/l10n/gl.json index f32ff2a44ba..15f44d25061 100644 --- a/apps/federatedfilesharing/l10n/gl.json +++ b/apps/federatedfilesharing/l10n/gl.json @@ -31,6 +31,7 @@ "Unable to update federated files sharing config" : "Non é posíbel actualizar a configuración de uso compartido de ficheiros federados", "Federated Cloud" : "Nube federada", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Pode compartir con calquera persoa que empregue servidores Nextcloud, ou outro servidor ou servizo compatíbel co Open Cloud Mesh (OCM)! Simplemente, introduza o seu ID de nube federada no diálogo de compartir. É algo como persona@cloud.example.com", + "Your Federated Cloud ID" : "ID da súa nube federada", "Share it so your friends can share files with you:" : "Compártao para que as súas amizades poidan compartir ficheiros con Vde.:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (anteriormente Twitter).", @@ -50,6 +51,7 @@ "Remote share" : "Compartición remota", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Quere engadir a compartición remota {name} de {owner}@{remote}?", "Remote share password" : "Contrasinal da compartición remota", + "Incoming share could not be processed" : "Non foi posíbel procesar a compartición entrante", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallou a compartición de %1$s por mor de que este elemento xa foi compartido co usuario %2$s", "Not allowed to create a federated share with the same user" : "Non está permitido crear unha compartición federada co mesmo usuario", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Axuste a forma como a xente poden compartir entre servidores. Isto inclúe tamén as comparticións entre usuarios deste servidor se están a usaren a compartición federada.", diff --git a/apps/federatedfilesharing/l10n/sv.js b/apps/federatedfilesharing/l10n/sv.js index 695a180a416..73c24e6caee 100644 --- a/apps/federatedfilesharing/l10n/sv.js +++ b/apps/federatedfilesharing/l10n/sv.js @@ -33,6 +33,7 @@ OC.L10N.register( "Unable to update federated files sharing config" : "Kunde inte uppdatera konfigurationen för federerad fildelning", "Federated Cloud" : "Federerat moln", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Du kan dela med alla som använder en Nextcloud-server eller andra Open Cloud Mesh (OCM) -kompatibla servrar och tjänster! Anger bara sitt federerade moln-ID i delningsrutan. Det ser ut som person@cloud.example.com", + "Your Federated Cloud ID" : "Ditt federerade Moln-ID:", "Share it so your friends can share files with you:" : "Dela det så att dina vänner kan dela filer med dig:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (tidigare Twitter)", @@ -52,6 +53,7 @@ OC.L10N.register( "Remote share" : "Extern delning", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Vill du lägga till extern delning {name} från {owner}@{remote}?", "Remote share password" : "Lösenord för extern delning", + "Incoming share could not be processed" : "Inkommande delning kunde inte behandlas", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Delning av %1$s misslyckades eftersom detta redan är delat med användaren %2$s", "Not allowed to create a federated share with the same user" : "Inte tillåtet att skapa en federerad delning med samma användare", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Anpassa hur användare kan dela mellan servrar. Detta inkluderar även delningar mellan användare på denna server ifall de använder federerad delning.", diff --git a/apps/federatedfilesharing/l10n/sv.json b/apps/federatedfilesharing/l10n/sv.json index 741dba7bab1..6c29375dfc9 100644 --- a/apps/federatedfilesharing/l10n/sv.json +++ b/apps/federatedfilesharing/l10n/sv.json @@ -31,6 +31,7 @@ "Unable to update federated files sharing config" : "Kunde inte uppdatera konfigurationen för federerad fildelning", "Federated Cloud" : "Federerat moln", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Du kan dela med alla som använder en Nextcloud-server eller andra Open Cloud Mesh (OCM) -kompatibla servrar och tjänster! Anger bara sitt federerade moln-ID i delningsrutan. Det ser ut som person@cloud.example.com", + "Your Federated Cloud ID" : "Ditt federerade Moln-ID:", "Share it so your friends can share files with you:" : "Dela det så att dina vänner kan dela filer med dig:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (tidigare Twitter)", @@ -50,6 +51,7 @@ "Remote share" : "Extern delning", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Vill du lägga till extern delning {name} från {owner}@{remote}?", "Remote share password" : "Lösenord för extern delning", + "Incoming share could not be processed" : "Inkommande delning kunde inte behandlas", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Delning av %1$s misslyckades eftersom detta redan är delat med användaren %2$s", "Not allowed to create a federated share with the same user" : "Inte tillåtet att skapa en federerad delning med samma användare", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Anpassa hur användare kan dela mellan servrar. Detta inkluderar även delningar mellan användare på denna server ifall de använder federerad delning.", diff --git a/apps/federatedfilesharing/l10n/zh_HK.js b/apps/federatedfilesharing/l10n/zh_HK.js index a21bfc87ecf..55d1ea90a30 100644 --- a/apps/federatedfilesharing/l10n/zh_HK.js +++ b/apps/federatedfilesharing/l10n/zh_HK.js @@ -33,6 +33,7 @@ OC.L10N.register( "Unable to update federated files sharing config" : "無法更新聯合檔案分享配置", "Federated Cloud" : "聯盟式雲端", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以與使用 Nextcloud 伺服器或其他 Open Cloud Mesh(OCM)兼容伺服器和服務的任何人分享!只需將他們的聯盟式雲端 ID 放在分享對話框中。聯盟式雲端 ID 的格式為 person@cloud.example.com ", + "Your Federated Cloud ID" : "您的雲端聯盟 ID", "Share it so your friends can share files with you:" : "使用分享以便您的朋友可以與您分享檔案:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X(前身為 Twitter)", @@ -52,6 +53,7 @@ OC.L10N.register( "Remote share" : "遠端分享", "Do you want to add the remote share {name} from {owner}@{remote}?" : "是否要加入來自 {owner}@{remote} 的遠端分享 {name} ?", "Remote share password" : "遠端分享密碼", + "Incoming share could not be processed" : "無法處理傳入的分享", "Sharing %1$s failed, because this item is already shared with user %2$s" : "分享 %1$s 失敗,此項目已經與用戶 %2$s 分享", "Not allowed to create a federated share with the same user" : "不允許與同一個用戶建立聯盟式分享", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "配置人們如何在伺服器之間共享。 這也包括此伺服器上用戶之間的共享,如果他們使用聯合共享。", diff --git a/apps/federatedfilesharing/l10n/zh_HK.json b/apps/federatedfilesharing/l10n/zh_HK.json index 4b0bf430efa..71d316f05fc 100644 --- a/apps/federatedfilesharing/l10n/zh_HK.json +++ b/apps/federatedfilesharing/l10n/zh_HK.json @@ -31,6 +31,7 @@ "Unable to update federated files sharing config" : "無法更新聯合檔案分享配置", "Federated Cloud" : "聯盟式雲端", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以與使用 Nextcloud 伺服器或其他 Open Cloud Mesh(OCM)兼容伺服器和服務的任何人分享!只需將他們的聯盟式雲端 ID 放在分享對話框中。聯盟式雲端 ID 的格式為 person@cloud.example.com ", + "Your Federated Cloud ID" : "您的雲端聯盟 ID", "Share it so your friends can share files with you:" : "使用分享以便您的朋友可以與您分享檔案:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X(前身為 Twitter)", @@ -50,6 +51,7 @@ "Remote share" : "遠端分享", "Do you want to add the remote share {name} from {owner}@{remote}?" : "是否要加入來自 {owner}@{remote} 的遠端分享 {name} ?", "Remote share password" : "遠端分享密碼", + "Incoming share could not be processed" : "無法處理傳入的分享", "Sharing %1$s failed, because this item is already shared with user %2$s" : "分享 %1$s 失敗,此項目已經與用戶 %2$s 分享", "Not allowed to create a federated share with the same user" : "不允許與同一個用戶建立聯盟式分享", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "配置人們如何在伺服器之間共享。 這也包括此伺服器上用戶之間的共享,如果他們使用聯合共享。", diff --git a/apps/federatedfilesharing/l10n/zh_TW.js b/apps/federatedfilesharing/l10n/zh_TW.js index 28feb1e7471..1c0e5fc8e72 100644 --- a/apps/federatedfilesharing/l10n/zh_TW.js +++ b/apps/federatedfilesharing/l10n/zh_TW.js @@ -33,6 +33,7 @@ OC.L10N.register( "Unable to update federated files sharing config" : "無法更新聯邦檔案分享組態設定", "Federated Cloud" : "聯邦雲端", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以與任何使用 Nextcloud 伺服器,或其他相容於 Open Cloud Mesh (OCM) 的伺服器與服務分享!只要把他們的聯邦雲端 ID 放在分享對話方塊中。ID 看起來會像 person@cloud.example.com", + "Your Federated Cloud ID" : "您的雲端聯邦 ID", "Share it so your friends can share files with you:" : "分享 ID,然後您的朋友就能透過它與您分享檔案:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X(前身為 Twitter)", @@ -52,6 +53,7 @@ OC.L10N.register( "Remote share" : "遠端分享", "Do you want to add the remote share {name} from {owner}@{remote}?" : "是否要新增來自 {owner}@{remote} 的遠端分享 {name} ?", "Remote share password" : "遠端分享密碼", + "Incoming share could not be processed" : "無法處理收到的分享", "Sharing %1$s failed, because this item is already shared with user %2$s" : "此項目已經與使用者 %2$s 分享,%1$s 分享失敗", "Not allowed to create a federated share with the same user" : "不允許與同一位使用者建立聯邦分享", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "調整人們如何在伺服器間分享。這也包含此伺服器上使用者間的分享,如果他們使用聯邦分享的話。", diff --git a/apps/federatedfilesharing/l10n/zh_TW.json b/apps/federatedfilesharing/l10n/zh_TW.json index 21fdfff207b..1f1236c0d70 100644 --- a/apps/federatedfilesharing/l10n/zh_TW.json +++ b/apps/federatedfilesharing/l10n/zh_TW.json @@ -31,6 +31,7 @@ "Unable to update federated files sharing config" : "無法更新聯邦檔案分享組態設定", "Federated Cloud" : "聯邦雲端", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以與任何使用 Nextcloud 伺服器,或其他相容於 Open Cloud Mesh (OCM) 的伺服器與服務分享!只要把他們的聯邦雲端 ID 放在分享對話方塊中。ID 看起來會像 person@cloud.example.com", + "Your Federated Cloud ID" : "您的雲端聯邦 ID", "Share it so your friends can share files with you:" : "分享 ID,然後您的朋友就能透過它與您分享檔案:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X(前身為 Twitter)", @@ -50,6 +51,7 @@ "Remote share" : "遠端分享", "Do you want to add the remote share {name} from {owner}@{remote}?" : "是否要新增來自 {owner}@{remote} 的遠端分享 {name} ?", "Remote share password" : "遠端分享密碼", + "Incoming share could not be processed" : "無法處理收到的分享", "Sharing %1$s failed, because this item is already shared with user %2$s" : "此項目已經與使用者 %2$s 分享,%1$s 分享失敗", "Not allowed to create a federated share with the same user" : "不允許與同一位使用者建立聯邦分享", "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "調整人們如何在伺服器間分享。這也包含此伺服器上使用者間的分享,如果他們使用聯邦分享的話。", diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js index 6cf0271de29..fd240ec4b90 100644 --- a/apps/files/l10n/ar.js +++ b/apps/files/l10n/ar.js @@ -290,7 +290,7 @@ OC.L10N.register( "Files that are not shared will show up here." : "الملفات التي لم تتم مشاركتها ستُعرض هنا", "Recent" : "آخر الملفات", "List of recently modified files and folders." : "قائمة بالملفات والمجلدات التي تمّ تعديلها مؤخراً.", - "No recently modified files" : "لا توجد أية ملفات تمّ تعديلها مؤخراً", + "No recently modified files" : "لا توجد أي ملفات تمّ تعديلها مؤخراً", "Files and folders you recently modified will show up here." : "الملفات و المجلدات التي تمّ تعديلها مؤخراً ستظهر هنا.", "You do not have permission to upload or create files here" : "لا يوجد تخويل برفع أو إنشاء ملفات هنا", "No entries found in this folder" : "لا يوجد مدخلات في هذا المجلد ", diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json index 095e37f5313..9babc151e60 100644 --- a/apps/files/l10n/ar.json +++ b/apps/files/l10n/ar.json @@ -288,7 +288,7 @@ "Files that are not shared will show up here." : "الملفات التي لم تتم مشاركتها ستُعرض هنا", "Recent" : "آخر الملفات", "List of recently modified files and folders." : "قائمة بالملفات والمجلدات التي تمّ تعديلها مؤخراً.", - "No recently modified files" : "لا توجد أية ملفات تمّ تعديلها مؤخراً", + "No recently modified files" : "لا توجد أي ملفات تمّ تعديلها مؤخراً", "Files and folders you recently modified will show up here." : "الملفات و المجلدات التي تمّ تعديلها مؤخراً ستظهر هنا.", "You do not have permission to upload or create files here" : "لا يوجد تخويل برفع أو إنشاء ملفات هنا", "No entries found in this folder" : "لا يوجد مدخلات في هذا المجلد ", diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index f616f462d4a..3e5fddd8dda 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -43,11 +43,16 @@ OC.L10N.register( "Files" : "Pliki", "A file or folder has been <strong>changed</strong>" : "Plik lub katalog został <strong>zmieniony</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Ulubiony plik lub katalog został <strong>zmieniony</strong>", + "Failed to authorize" : "Błąd autoryzacji", + "Invalid folder path" : "Nieprawidłowa ścieżka folderu", + "Folder not found" : "Nie znaleziono folderu", "Upload (max. %s)" : "Wysyłanie (maks. %s)", + "Files compatibility" : "Zgodność plików", "Accept" : "Akceptuj", "Reject" : "Odrzuć", "Incoming ownership transfer from {user}" : "Przychodzące przeniesienie własności od {user}", "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Czy chcesz zaakceptować {path}\n\nUwaga: Proces transferu po zaakceptowaniu może potrwać do 1 godziny.", + "Ownership transfer denied" : "Odmowa przeniesienia własności", "Ownership transfer failed" : "Przeniesienie własności nie powiodło się", "Your ownership transfer of {path} to {user} failed." : "Twoje przeniesienie własności {path} na {user} nie powiodło się.", "The ownership transfer of {path} from {user} failed." : "Przeniesienie własności {path} z {user} nie powiodło się.", @@ -69,16 +74,21 @@ OC.L10N.register( "\"{displayName}\" action failed" : "Akcja \"{displayName}\" nie powiodła się", "Toggle selection for file \"{displayName}\"" : "Przełącz zaznaczenie dla pliku \"{displayName}\"", "Toggle selection for folder \"{displayName}\"" : "Przełącz zaznaczenie dla katalogu \"{displayName}\"", + "File is loading" : "Plik jest wczytywany", + "Folder is loading" : "Katalog jest wczytywany", "Rename file" : "Zmień nazwę pliku", "Filename" : "Nazwa pliku", "Folder name" : "Nazwa katalogu", "This node is unavailable" : "Ten węzeł jest niedostępny", + "Another entry with the same name already exists." : "Inny wpis o tej samej nazwie już istnieje.", + "Invalid filename." : "Nieprawidłowa nazwa pliku.", "Renamed \"{oldName}\" to \"{newName}\"" : "Zmieniono nazwę \"{oldName}\" na \"{newName}\"", "Pending" : "Oczekujące", "Clear filter" : "Wyczyść filtr", "Modified" : "Zmodyfikowany", "Type" : "Rodzaj", "Active filters" : "Aktywne filtry", + "Remove filter" : "Usuń filtr", "Total rows summary" : "Podsumowanie wszystkich wierszy", "Name" : "Nazwa", "Size" : "Rozmiar", @@ -91,6 +101,8 @@ OC.L10N.register( "Column headers with buttons are sortable." : "Nagłówki kolumn z przyciskami są sortowalne.", "This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Ta lista nie jest w pełni renderowana ze względu na wydajność. Pliki będą renderowane podczas poruszania się po liście.", "File not found" : "Nie odnaleziono pliku", + "Storage information" : "Informacje o przechowywaniu", + "Storage quota" : "Limit przechowywania", "{usedQuotaByte} used" : "Wykorzystano {usedQuotaByte}", "{used} of {quota} used" : "Wykorzystane {used} z {quota}", "{relative}% used" : "Wykorzystano {relative}%", @@ -99,6 +111,7 @@ OC.L10N.register( "Create" : "Utwórz", "New folder" : "Nowy katalog", "Create new folder" : "Utwórz nowy katalog", + "This name is already in use." : "Ta nazwa jest już używana.", "Submit" : "Wyślij", "Transfer ownership of a file or folder" : "Przenieś własność pliku lub katalogu", "Choose file or folder to transfer" : "Wybierz plik lub katalog do przeniesienia", @@ -149,10 +162,12 @@ OC.L10N.register( "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Jeśli włączyłeś 2FA, musisz utworzyć i używać nowego hasła do aplikacji, klikając tutaj.", "Clipboard is not available" : "Schowek jest niedostępny", "WebDAV URL copied to clipboard" : "Adres URL WebDAV skopiowany do schowka", + "Owner" : "Właściciel", "Remove from favorites" : "Usuń z ulubionych", "Add to favorites" : "Dodaj do ulubionych", "Tags" : "Etykiety", "You" : "Ty", + "Shared multiple times with different people" : "Udostępniony wiele razy różnym osobom", "Unable to change the favourite state of the file" : "Nie można zmienić ulubionego stanu pliku", "Error while loading the file data" : "Błąd podczas ładowania danych pliku", "Pick a template for {name}" : "Wybierz szablon dla {name}", @@ -174,7 +189,10 @@ OC.L10N.register( "Delete" : "Usuń", "Confirm deletion" : "Potwierdź usunięcie", "Cancel" : "Anuluj", + "Edit file locally" : "Edytuj plik lokalnie", "The file should now open locally. If you don't see this happening, make sure that the desktop client is installed on your system." : "Plik powinien teraz otworzyć się lokalnie. Jeśli nie widzisz tego, upewnij się, że klient pulpitowy jest zainstalowany w Twoim systemie.", + "Retry local edit" : "Ponów próbę edycji lokalnej", + "Edit online" : "Edycja online", "Failed to redirect to client" : "Nie udało się przekierować do klienta", "Edit locally" : "Edytuj lokalnie", "You cannot move a file/folder onto itself or into a subfolder of itself" : "Nie można przenieść pliku/katalogu do tego samego katalogu lub do własnego podkatalogu", @@ -201,11 +219,16 @@ OC.L10N.register( "Last 7 days" : "Ostatnie 7 dni", "Last 30 days" : "Ostatnie 30 dni", "Documents" : "Dokumenty", + "Spreadsheets" : "Arkusze kalkulacyjne", + "Presentations" : "Prezentacje", "Folders" : "Katalogi", "Audio" : "Dźwięk", + "Photos and images" : "Zdjęcia i obrazy", "Videos" : "Filmy", + "New folder creation cancelled" : "Tworzenie nowego folderu zostało anulowane", "Created new folder \"{name}\"" : "Utworzono nowy katalog \"{name}\"", "Unable to initialize the templates directory" : "Nie można zainicjować katalogu szablonów", + "Create templates folder" : "Utwórz folder szablonów", "Templates" : "Szablony", "New template folder" : "Nowy katalog szablonów", "In folder" : "W katalogu", @@ -231,6 +254,8 @@ OC.L10N.register( "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 plik i {folderCount} katalog","1 plik i {folderCount} katalogi","1 plik i {folderCount} katalogów","1 plik i {folderCount} katalogów"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} plik i 1 katalog","{fileCount} pliki i 1 katalog","{fileCount} plików i 1 katalog","{fileCount} plików i 1 katalog"], "{fileCount} files and {folderCount} folders" : "{fileCount} plików i {folderCount} katalogów", + "Filename must not be empty." : "Nazwa pliku nie może być pusta.", + "List of favorite files and folders." : "Lista ulubionych plików i folderów.", "No favorites yet" : "Brak ulubionych", "Files and folders you mark as favorite will show up here" : "Pliki i katalogi, które oznaczysz jako ulubione wyświetlą się tutaj", "All files" : "Wszystkie pliki", diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json index d79b81f50e4..a473cc2a31d 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -41,11 +41,16 @@ "Files" : "Pliki", "A file or folder has been <strong>changed</strong>" : "Plik lub katalog został <strong>zmieniony</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Ulubiony plik lub katalog został <strong>zmieniony</strong>", + "Failed to authorize" : "Błąd autoryzacji", + "Invalid folder path" : "Nieprawidłowa ścieżka folderu", + "Folder not found" : "Nie znaleziono folderu", "Upload (max. %s)" : "Wysyłanie (maks. %s)", + "Files compatibility" : "Zgodność plików", "Accept" : "Akceptuj", "Reject" : "Odrzuć", "Incoming ownership transfer from {user}" : "Przychodzące przeniesienie własności od {user}", "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Czy chcesz zaakceptować {path}\n\nUwaga: Proces transferu po zaakceptowaniu może potrwać do 1 godziny.", + "Ownership transfer denied" : "Odmowa przeniesienia własności", "Ownership transfer failed" : "Przeniesienie własności nie powiodło się", "Your ownership transfer of {path} to {user} failed." : "Twoje przeniesienie własności {path} na {user} nie powiodło się.", "The ownership transfer of {path} from {user} failed." : "Przeniesienie własności {path} z {user} nie powiodło się.", @@ -67,16 +72,21 @@ "\"{displayName}\" action failed" : "Akcja \"{displayName}\" nie powiodła się", "Toggle selection for file \"{displayName}\"" : "Przełącz zaznaczenie dla pliku \"{displayName}\"", "Toggle selection for folder \"{displayName}\"" : "Przełącz zaznaczenie dla katalogu \"{displayName}\"", + "File is loading" : "Plik jest wczytywany", + "Folder is loading" : "Katalog jest wczytywany", "Rename file" : "Zmień nazwę pliku", "Filename" : "Nazwa pliku", "Folder name" : "Nazwa katalogu", "This node is unavailable" : "Ten węzeł jest niedostępny", + "Another entry with the same name already exists." : "Inny wpis o tej samej nazwie już istnieje.", + "Invalid filename." : "Nieprawidłowa nazwa pliku.", "Renamed \"{oldName}\" to \"{newName}\"" : "Zmieniono nazwę \"{oldName}\" na \"{newName}\"", "Pending" : "Oczekujące", "Clear filter" : "Wyczyść filtr", "Modified" : "Zmodyfikowany", "Type" : "Rodzaj", "Active filters" : "Aktywne filtry", + "Remove filter" : "Usuń filtr", "Total rows summary" : "Podsumowanie wszystkich wierszy", "Name" : "Nazwa", "Size" : "Rozmiar", @@ -89,6 +99,8 @@ "Column headers with buttons are sortable." : "Nagłówki kolumn z przyciskami są sortowalne.", "This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Ta lista nie jest w pełni renderowana ze względu na wydajność. Pliki będą renderowane podczas poruszania się po liście.", "File not found" : "Nie odnaleziono pliku", + "Storage information" : "Informacje o przechowywaniu", + "Storage quota" : "Limit przechowywania", "{usedQuotaByte} used" : "Wykorzystano {usedQuotaByte}", "{used} of {quota} used" : "Wykorzystane {used} z {quota}", "{relative}% used" : "Wykorzystano {relative}%", @@ -97,6 +109,7 @@ "Create" : "Utwórz", "New folder" : "Nowy katalog", "Create new folder" : "Utwórz nowy katalog", + "This name is already in use." : "Ta nazwa jest już używana.", "Submit" : "Wyślij", "Transfer ownership of a file or folder" : "Przenieś własność pliku lub katalogu", "Choose file or folder to transfer" : "Wybierz plik lub katalog do przeniesienia", @@ -147,10 +160,12 @@ "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Jeśli włączyłeś 2FA, musisz utworzyć i używać nowego hasła do aplikacji, klikając tutaj.", "Clipboard is not available" : "Schowek jest niedostępny", "WebDAV URL copied to clipboard" : "Adres URL WebDAV skopiowany do schowka", + "Owner" : "Właściciel", "Remove from favorites" : "Usuń z ulubionych", "Add to favorites" : "Dodaj do ulubionych", "Tags" : "Etykiety", "You" : "Ty", + "Shared multiple times with different people" : "Udostępniony wiele razy różnym osobom", "Unable to change the favourite state of the file" : "Nie można zmienić ulubionego stanu pliku", "Error while loading the file data" : "Błąd podczas ładowania danych pliku", "Pick a template for {name}" : "Wybierz szablon dla {name}", @@ -172,7 +187,10 @@ "Delete" : "Usuń", "Confirm deletion" : "Potwierdź usunięcie", "Cancel" : "Anuluj", + "Edit file locally" : "Edytuj plik lokalnie", "The file should now open locally. If you don't see this happening, make sure that the desktop client is installed on your system." : "Plik powinien teraz otworzyć się lokalnie. Jeśli nie widzisz tego, upewnij się, że klient pulpitowy jest zainstalowany w Twoim systemie.", + "Retry local edit" : "Ponów próbę edycji lokalnej", + "Edit online" : "Edycja online", "Failed to redirect to client" : "Nie udało się przekierować do klienta", "Edit locally" : "Edytuj lokalnie", "You cannot move a file/folder onto itself or into a subfolder of itself" : "Nie można przenieść pliku/katalogu do tego samego katalogu lub do własnego podkatalogu", @@ -199,11 +217,16 @@ "Last 7 days" : "Ostatnie 7 dni", "Last 30 days" : "Ostatnie 30 dni", "Documents" : "Dokumenty", + "Spreadsheets" : "Arkusze kalkulacyjne", + "Presentations" : "Prezentacje", "Folders" : "Katalogi", "Audio" : "Dźwięk", + "Photos and images" : "Zdjęcia i obrazy", "Videos" : "Filmy", + "New folder creation cancelled" : "Tworzenie nowego folderu zostało anulowane", "Created new folder \"{name}\"" : "Utworzono nowy katalog \"{name}\"", "Unable to initialize the templates directory" : "Nie można zainicjować katalogu szablonów", + "Create templates folder" : "Utwórz folder szablonów", "Templates" : "Szablony", "New template folder" : "Nowy katalog szablonów", "In folder" : "W katalogu", @@ -229,6 +252,8 @@ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 plik i {folderCount} katalog","1 plik i {folderCount} katalogi","1 plik i {folderCount} katalogów","1 plik i {folderCount} katalogów"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} plik i 1 katalog","{fileCount} pliki i 1 katalog","{fileCount} plików i 1 katalog","{fileCount} plików i 1 katalog"], "{fileCount} files and {folderCount} folders" : "{fileCount} plików i {folderCount} katalogów", + "Filename must not be empty." : "Nazwa pliku nie może być pusta.", + "List of favorite files and folders." : "Lista ulubionych plików i folderów.", "No favorites yet" : "Brak ulubionych", "Files and folders you mark as favorite will show up here" : "Pliki i katalogi, które oznaczysz jako ulubione wyświetlą się tutaj", "All files" : "Wszystkie pliki", diff --git a/apps/files/lib/Service/OwnershipTransferService.php b/apps/files/lib/Service/OwnershipTransferService.php index b6e0d437b4a..75f67767ac9 100644 --- a/apps/files/lib/Service/OwnershipTransferService.php +++ b/apps/files/lib/Service/OwnershipTransferService.php @@ -69,6 +69,7 @@ class OwnershipTransferService { private IMountManager $mountManager, private IUserMountCache $userMountCache, private IUserManager $userManager, + private IRootFolder $rootFolder, ) { $this->encryptionManager = $encryptionManager; } @@ -107,8 +108,10 @@ class OwnershipTransferService { // Requesting the user folder will set it up if the user hasn't logged in before // We need a setupFS for the full filesystem setup before as otherwise we will just return // a lazy root folder which does not create the destination users folder + \OC_Util::setupFS($sourceUser->getUID()); \OC_Util::setupFS($destinationUser->getUID()); - \OC::$server->getUserFolder($destinationUser->getUID()); + $this->rootFolder->getUserFolder($sourceUser->getUID()); + $this->rootFolder->getUserFolder($destinationUser->getUID()); Filesystem::initMountPoints($sourceUid); Filesystem::initMountPoints($destinationUid); @@ -435,7 +438,6 @@ class OwnershipTransferService { ):void { $output->writeln("Restoring shares ..."); $progress = new ProgressBar($output, count($shares)); - $rootFolder = \OCP\Server::get(IRootFolder::class); foreach ($shares as ['share' => $share, 'suffix' => $suffix]) { try { @@ -475,7 +477,7 @@ class OwnershipTransferService { } catch (\OCP\Files\NotFoundException) { // ID has changed due to transfer between different storages // Try to get the new ID from the target path and suffix of the share - $node = $rootFolder->get(Filesystem::normalizePath($targetLocation . '/' . $suffix)); + $node = $this->rootFolder->get(Filesystem::normalizePath($targetLocation . '/' . $suffix)); $newNodeId = $node->getId(); $output->writeln('Had to change node id to ' . $newNodeId, OutputInterface::VERBOSITY_VERY_VERBOSE); } diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 2a08248542e..770488ce555 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -1492,30 +1492,37 @@ window.addEventListener('DOMContentLoaded', function() { } }); - $('#global_credentials').on('submit', function() { - var $form = $(this); + function _submitCredentials(success) { var uid = $form.find('[name=uid]').val(); var user = $form.find('[name=username]').val(); var password = $form.find('[name=password]').val(); - var $submit = $form.find('[type=submit]'); - $submit.val(t('files_external', 'Saving …')); $.ajax({ type: 'POST', contentType: 'application/json', data: JSON.stringify({ - uid: uid, - user: user, - password: password + uid, + user, + password, }), url: OC.generateUrl('apps/files_external/globalcredentials'), dataType: 'json', - success: function() { + success, + }); + } + + $('#global_credentials').on('submit', function() { + var $form = $(this); + var $submit = $form.find('[type=submit]'); + $submit.val(t('files_external', 'Saving …')); + + window.OC.PasswordConfirmation + .requirePasswordConfirmation(() => _submitCredentials(function() { $submit.val(t('files_external', 'Saved')); setTimeout(function(){ $submit.val(t('files_external', 'Save')); }, 2500); - } - }); + })); + return false; }); diff --git a/apps/files_external/lib/Controller/AjaxController.php b/apps/files_external/lib/Controller/AjaxController.php index 0e43ea38eec..7c36e17592d 100644 --- a/apps/files_external/lib/Controller/AjaxController.php +++ b/apps/files_external/lib/Controller/AjaxController.php @@ -31,6 +31,8 @@ namespace OCA\Files_External\Controller; use OCA\Files_External\Lib\Auth\Password\GlobalAuth; use OCA\Files_External\Lib\Auth\PublicKey\RSA; use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; use OCP\AppFramework\Http\JSONResponse; use OCP\IGroupManager; use OCP\IRequest; @@ -97,13 +99,13 @@ class AjaxController extends Controller { } /** - * @NoAdminRequired - * * @param string $uid * @param string $user * @param string $password * @return bool */ + #[NoAdminRequired] + #[PasswordConfirmationRequired] public function saveGlobalCredentials($uid, $user, $password) { $currentUser = $this->userSession->getUser(); if ($currentUser === null) { diff --git a/apps/files_external/lib/Lib/Backend/OwnCloud.php b/apps/files_external/lib/Lib/Backend/OwnCloud.php index 97297b6a977..643322b9fa6 100644 --- a/apps/files_external/lib/Lib/Backend/OwnCloud.php +++ b/apps/files_external/lib/Lib/Backend/OwnCloud.php @@ -43,6 +43,9 @@ class OwnCloud extends Backend { (new DefinitionParameter('secure', $l->t('Secure https://'))) ->setType(DefinitionParameter::VALUE_BOOLEAN) ->setDefaultValue(true), + (new DefinitionParameter('password', $l->t('Password'))) + ->setFlag(DefinitionParameter::FLAG_OPTIONAL) + ->setType(DefinitionParameter::VALUE_PASSWORD), ]) ->addAuthScheme(AuthMechanism::SCHEME_PASSWORD) ->setLegacyAuthMechanism($legacyAuth) diff --git a/apps/files_sharing/l10n/ar.js b/apps/files_sharing/l10n/ar.js index 3e2f9d69e35..5d9282e0368 100644 --- a/apps/files_sharing/l10n/ar.js +++ b/apps/files_sharing/l10n/ar.js @@ -337,7 +337,7 @@ OC.L10N.register( "File requests you have created will show up here" : "طلبات الملفات التي أنشأتها سيتم عرضها هنا", "Deleted shares" : "مشاركات محذوفة", "List of shares you left." : "قائمة بالمشاركات التي قمت بإلغائها", - "No deleted shares" : "لا توجد أية مشاركات محذوفة", + "No deleted shares" : "لا توجد أي مشاركات محذوفة", "Shares you have left will show up here" : "المشاركات التي ألغيتها ستظهر هنا", "Pending shares" : "مشاركات بانتظار الموافقة", "List of unapproved shares." : "قائمة بالمشاركات بانتظار الموافقة.", diff --git a/apps/files_sharing/l10n/ar.json b/apps/files_sharing/l10n/ar.json index 1a2c60faef8..f9c2e98f614 100644 --- a/apps/files_sharing/l10n/ar.json +++ b/apps/files_sharing/l10n/ar.json @@ -335,7 +335,7 @@ "File requests you have created will show up here" : "طلبات الملفات التي أنشأتها سيتم عرضها هنا", "Deleted shares" : "مشاركات محذوفة", "List of shares you left." : "قائمة بالمشاركات التي قمت بإلغائها", - "No deleted shares" : "لا توجد أية مشاركات محذوفة", + "No deleted shares" : "لا توجد أي مشاركات محذوفة", "Shares you have left will show up here" : "المشاركات التي ألغيتها ستظهر هنا", "Pending shares" : "مشاركات بانتظار الموافقة", "List of unapproved shares." : "قائمة بالمشاركات بانتظار الموافقة.", diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js index dd0ff2a3cae..af3693e2aed 100644 --- a/apps/files_sharing/l10n/pl.js +++ b/apps/files_sharing/l10n/pl.js @@ -216,6 +216,7 @@ OC.L10N.register( "_Restore share_::_Restore shares_" : ["Przywróć udostępnienie","Przywróć udostępnienia","Przywróć udostępnienia","Przywróć udostępnienia"], "Shared" : "Udostępniono", "Shared by {ownerDisplayName}" : "Udostępnione przez {ownerDisplayName}", + "Shared multiple times with different people" : "Udostępniony wiele razy różnym osobom", "Show sharing options" : "Pokaż opcje udostępniania", "Shared with others" : "Udostępnione innym", "No file" : "Brak pliku", diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json index 40d29750dd4..da35363e52a 100644 --- a/apps/files_sharing/l10n/pl.json +++ b/apps/files_sharing/l10n/pl.json @@ -214,6 +214,7 @@ "_Restore share_::_Restore shares_" : ["Przywróć udostępnienie","Przywróć udostępnienia","Przywróć udostępnienia","Przywróć udostępnienia"], "Shared" : "Udostępniono", "Shared by {ownerDisplayName}" : "Udostępnione przez {ownerDisplayName}", + "Shared multiple times with different people" : "Udostępniony wiele razy różnym osobom", "Show sharing options" : "Pokaż opcje udostępniania", "Shared with others" : "Udostępnione innym", "No file" : "Brak pliku", diff --git a/apps/files_sharing/src/views/SharingDetailsTab.vue b/apps/files_sharing/src/views/SharingDetailsTab.vue index 0b296513782..6b34cd29c4c 100644 --- a/apps/files_sharing/src/views/SharingDetailsTab.vue +++ b/apps/files_sharing/src/views/SharingDetailsTab.vue @@ -112,8 +112,8 @@ autocomplete="new-password" :value="hasUnsavedPassword ? share.newPassword : ''" :error="passwordError" - :helper-text="errorPasswordLabel" - :required="isPasswordEnforced" + :helper-text="errorPasswordLabel || passwordHint" + :required="isPasswordEnforced && isNewShare" :label="t('files_sharing', 'Password')" @update:value="onPasswordChange" /> @@ -707,6 +707,13 @@ export default { return undefined }, + passwordHint() { + if (this.isNewShare || this.hasUnsavedPassword) { + return undefined + } + return t('files_sharing', 'Replace current password') + }, + /** * Additional actions for the menu * @@ -867,7 +874,7 @@ export default { if (this.hasUnsavedPassword && this.isValidShareAttribute(this.share.newPassword)) { this.share.password = this.share.newPassword this.$delete(this.share, 'newPassword') - } else if (this.isPasswordEnforced && !this.isValidShareAttribute(this.share.password)) { + } else if (this.isPasswordEnforced && this.isNewShare && !this.isValidShareAttribute(this.share.password)) { this.passwordError = true } } else { @@ -961,6 +968,11 @@ export default { * @param {string} password the changed password */ onPasswordChange(password) { + if (password === '') { + this.$delete(this.share, 'newPassword') + this.passwordError = this.isNewShare && this.isPasswordEnforced + return + } this.passwordError = !this.isValidShareAttribute(password) this.$set(this.share, 'newPassword', password) }, diff --git a/apps/files_sharing/src/views/SharingLinkList.vue b/apps/files_sharing/src/views/SharingLinkList.vue index 462d38fe8ad..9b23bc4285c 100644 --- a/apps/files_sharing/src/views/SharingLinkList.vue +++ b/apps/files_sharing/src/views/SharingLinkList.vue @@ -118,7 +118,7 @@ export default { */ addShare(share, resolve) { // eslint-disable-next-line vue/no-mutating-props - this.shares.unshift(share) + this.shares.push(share) this.awaitForShare(share, resolve) }, diff --git a/apps/files_sharing/tests/SharedStorageTest.php b/apps/files_sharing/tests/SharedStorageTest.php index 5209a30634a..14fdba0ade3 100644 --- a/apps/files_sharing/tests/SharedStorageTest.php +++ b/apps/files_sharing/tests/SharedStorageTest.php @@ -479,6 +479,7 @@ class SharedStorageTest extends TestCase { $sourceStorage = new \OC\Files\Storage\Temporary([]); $sourceStorage->file_put_contents('foo.txt', 'asd'); + $sourceStorage->getScanner()->scan(''); $sharedStorage->moveFromStorage($sourceStorage, 'foo.txt', 'bar.txt'); $this->assertTrue($sharedStorage->file_exists('bar.txt')); diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php index ced40313d62..575a0928c90 100644 --- a/apps/files_trashbin/lib/Trashbin.php +++ b/apps/files_trashbin/lib/Trashbin.php @@ -53,7 +53,6 @@ use OC\Files\Node\File; use OC\Files\Node\Folder; use OC\Files\Node\NonExistingFile; use OC\Files\Node\NonExistingFolder; -use OC\Files\ObjectStore\ObjectStoreStorage; use OC\Files\View; use OC_User; use OCA\Files_Trashbin\AppInfo\Application; @@ -67,6 +66,7 @@ use OCP\Files\IRootFolder; use OCP\Files\Node; use OCP\Files\NotFoundException; use OCP\Files\NotPermittedException; +use OCP\Files\Storage\ILockingStorage; use OCP\FilesMetadata\IFilesMetadataManager; use OCP\IConfig; use OCP\Lock\ILockingProvider; @@ -290,11 +290,10 @@ class Trashbin { $trashPath = '/files_trashbin/files/' . static::getTrashFilename($filename, $timestamp); $gotLock = false; - while (!$gotLock) { + do { + /** @var ILockingStorage & Storage $trashStorage */ + [$trashStorage, $trashInternalPath] = $ownerView->resolvePath($trashPath); try { - /** @var \OC\Files\Storage\Storage $trashStorage */ - [$trashStorage, $trashInternalPath] = $ownerView->resolvePath($trashPath); - $trashStorage->acquireLock($trashInternalPath, ILockingProvider::LOCK_EXCLUSIVE, $lockingProvider); $gotLock = true; } catch (LockedException $e) { @@ -305,7 +304,7 @@ class Trashbin { $trashPath = '/files_trashbin/files/' . static::getTrashFilename($filename, $timestamp); } - } + } while (!$gotLock); $sourceStorage = $sourceInfo->getStorage(); $sourceInternalPath = $sourceInfo->getInternalPath(); @@ -319,14 +318,12 @@ class Trashbin { return false; } - $trashStorage->getUpdater()->renameFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath); - try { $moveSuccessful = true; - // when moving within the same object store, the cache update done above is enough to move the file - if (!($trashStorage->instanceOfStorage(ObjectStoreStorage::class) && $trashStorage->getId() === $sourceStorage->getId())) { - $trashStorage->moveFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath); + $trashStorage->moveFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath); + if ($sourceStorage->getCache()->inCache($sourceInternalPath)) { + $trashStorage->getUpdater()->renameFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath); } } catch (\OCA\Files_Trashbin\Exceptions\CopyRecursiveException $e) { $moveSuccessful = false; diff --git a/apps/files_trashbin/tests/StorageTest.php b/apps/files_trashbin/tests/StorageTest.php index d6e911e3dea..bcd4124b8be 100644 --- a/apps/files_trashbin/tests/StorageTest.php +++ b/apps/files_trashbin/tests/StorageTest.php @@ -33,7 +33,6 @@ namespace OCA\Files_Trashbin\Tests; use OC\Files\Filesystem; use OC\Files\Storage\Common; -use OC\Files\Storage\Local; use OC\Files\Storage\Temporary; use OCA\Files_Trashbin\AppInfo\Application; use OCA\Files_Trashbin\Events\MoveToTrashEvent; @@ -697,10 +696,7 @@ class StorageTest extends \Test\TestCase { $this->assertEquals('bar', $this->rootView->file_get_contents($this->user . '/files_trashbin/files/test.txt.d1001')); } - public function testMoveFromStoragePreserveFileId() { - if (!$this->userView->getMount('')->getStorage()->instanceOfStorage(Local::class)) { - $this->markTestSkipped("Skipping on non-local users storage"); - } + public function testMoveFromStoragePreserveFileId(): void { $this->userView->file_put_contents('test.txt', 'foo'); $fileId = $this->userView->getFileInfo('test.txt')->getId(); diff --git a/apps/provisioning_api/l10n/ar.js b/apps/provisioning_api/l10n/ar.js index 1d0a7e39e71..134ed89dead 100644 --- a/apps/provisioning_api/l10n/ar.js +++ b/apps/provisioning_api/l10n/ar.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "يتيح هذا التطبيق مجموعة من واجهات برمجة التطبيقات التي يمكن للأنظمة الخارجية استخدامها لإنشاء الحساب وتحريره وحذفه والاستعلام عنه\n\t\tالخصائص، و الاستعلامات، و تعيين المجموعات و إزالتها، و تعيين الحصص، و الاستعلام عن إجمالي مساحة التخزين المستخدمة في نكست كلاود. حسابات مشرف المجموعة \n\t\t يمكنه أيضًا الاستعلام عن نكست كلاود و تنفيذ نفس الوظائف كمشرف للمجموعات التي يديرونها. تتيح واجهة برمجة التطبيقات API أيضاً \n\t\tمشرف للاستعلام عن تطبيقات نكست كلاود النشطة، و معلومات التطبيق، و تمكين التطبيق أو تعطيله عن بُعد. \n\t\tبمجرد تمكين التطبيق، يمكن استخدام طلبات HTTP عبر رأس المصادقة الأساسية لتنفيذ أي من الوظائف \n\t\t المذكورة أعلاه. \nللمزيد من المعلومات، أنظُر توثيق Provisioning API، بما في ذلك أمثلة على الاستدعاءات \n\t\t واستجابات الخادوم.", "Logged in user must be an administrator or have authorization to edit this setting." : "المستخدم الداخل يجب أن يكون مسؤول النظام أو يملك صلاحية تعديل الإعدادات.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "هذا التطبيق يُفعّل مجموعة من واجهات API التي يمكن أن تستعملها نُظُم خارجية لإدارة المستخدمين و المجموعات و التطبيقات.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "هذا التطبيق يُفعّل مجموعة من الواجهات API التي يُمكن أن تستعملها نُظُم خارجية للاستعلام و إضافة و تعديل و حذف المستخدمين و المجموعات في نكست كلاود، و تحديد حصصهم التخزينية بمن فيهم مجموعة المشرفين.\n\nكذلك تُمكّن الواجهة من الاستعلام عن تطبيقات نكست كلاود النشطة، و بياناتها، و تُمكّن من تفعيلها أو إلغاء تفعيلها عن بُعدٍ. \n\nبعدما يتم تفعيل التطبيق، يُمكن استخدام طلبيات HTTP request من خلال ترويسة تحقّق بسيطة Basic Auth header لتنفيذ أيٍّ من الوظائف المذكورة أعلاه.\n\nللمزيد، أنظر توثيق Provisioning API؛ وفيه أمثلة عن الاستدعاء call ،و استجابات الخادوم response. \n ", - "To send a password link to the user an email address is required." : "لإرسال رابط كلمة المرور للمستخدِم، يتوجب تعيين عنوان الإيميل." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "هذا التطبيق يُفعّل مجموعة من الواجهات API التي يُمكن أن تستعملها نُظُم خارجية للاستعلام و إضافة و تعديل و حذف المستخدمين و المجموعات في نكست كلاود، و تحديد حصصهم التخزينية بمن فيهم مجموعة المشرفين.\n\nكذلك تُمكّن الواجهة من الاستعلام عن تطبيقات نكست كلاود النشطة، و بياناتها، و تُمكّن من تفعيلها أو إلغاء تفعيلها عن بُعدٍ. \n\nبعدما يتم تفعيل التطبيق، يُمكن استخدام طلبيات HTTP request من خلال ترويسة تحقّق بسيطة Basic Auth header لتنفيذ أيٍّ من الوظائف المذكورة أعلاه.\n\nللمزيد، أنظر توثيق Provisioning API؛ وفيه أمثلة عن الاستدعاء call ،و استجابات الخادوم response. \n " }, "nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); diff --git a/apps/provisioning_api/l10n/ar.json b/apps/provisioning_api/l10n/ar.json index bad1aac2637..fa47cf4e497 100644 --- a/apps/provisioning_api/l10n/ar.json +++ b/apps/provisioning_api/l10n/ar.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "يتيح هذا التطبيق مجموعة من واجهات برمجة التطبيقات التي يمكن للأنظمة الخارجية استخدامها لإنشاء الحساب وتحريره وحذفه والاستعلام عنه\n\t\tالخصائص، و الاستعلامات، و تعيين المجموعات و إزالتها، و تعيين الحصص، و الاستعلام عن إجمالي مساحة التخزين المستخدمة في نكست كلاود. حسابات مشرف المجموعة \n\t\t يمكنه أيضًا الاستعلام عن نكست كلاود و تنفيذ نفس الوظائف كمشرف للمجموعات التي يديرونها. تتيح واجهة برمجة التطبيقات API أيضاً \n\t\tمشرف للاستعلام عن تطبيقات نكست كلاود النشطة، و معلومات التطبيق، و تمكين التطبيق أو تعطيله عن بُعد. \n\t\tبمجرد تمكين التطبيق، يمكن استخدام طلبات HTTP عبر رأس المصادقة الأساسية لتنفيذ أي من الوظائف \n\t\t المذكورة أعلاه. \nللمزيد من المعلومات، أنظُر توثيق Provisioning API، بما في ذلك أمثلة على الاستدعاءات \n\t\t واستجابات الخادوم.", "Logged in user must be an administrator or have authorization to edit this setting." : "المستخدم الداخل يجب أن يكون مسؤول النظام أو يملك صلاحية تعديل الإعدادات.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "هذا التطبيق يُفعّل مجموعة من واجهات API التي يمكن أن تستعملها نُظُم خارجية لإدارة المستخدمين و المجموعات و التطبيقات.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "هذا التطبيق يُفعّل مجموعة من الواجهات API التي يُمكن أن تستعملها نُظُم خارجية للاستعلام و إضافة و تعديل و حذف المستخدمين و المجموعات في نكست كلاود، و تحديد حصصهم التخزينية بمن فيهم مجموعة المشرفين.\n\nكذلك تُمكّن الواجهة من الاستعلام عن تطبيقات نكست كلاود النشطة، و بياناتها، و تُمكّن من تفعيلها أو إلغاء تفعيلها عن بُعدٍ. \n\nبعدما يتم تفعيل التطبيق، يُمكن استخدام طلبيات HTTP request من خلال ترويسة تحقّق بسيطة Basic Auth header لتنفيذ أيٍّ من الوظائف المذكورة أعلاه.\n\nللمزيد، أنظر توثيق Provisioning API؛ وفيه أمثلة عن الاستدعاء call ،و استجابات الخادوم response. \n ", - "To send a password link to the user an email address is required." : "لإرسال رابط كلمة المرور للمستخدِم، يتوجب تعيين عنوان الإيميل." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "هذا التطبيق يُفعّل مجموعة من الواجهات API التي يُمكن أن تستعملها نُظُم خارجية للاستعلام و إضافة و تعديل و حذف المستخدمين و المجموعات في نكست كلاود، و تحديد حصصهم التخزينية بمن فيهم مجموعة المشرفين.\n\nكذلك تُمكّن الواجهة من الاستعلام عن تطبيقات نكست كلاود النشطة، و بياناتها، و تُمكّن من تفعيلها أو إلغاء تفعيلها عن بُعدٍ. \n\nبعدما يتم تفعيل التطبيق، يُمكن استخدام طلبيات HTTP request من خلال ترويسة تحقّق بسيطة Basic Auth header لتنفيذ أيٍّ من الوظائف المذكورة أعلاه.\n\nللمزيد، أنظر توثيق Provisioning API؛ وفيه أمثلة عن الاستدعاء call ،و استجابات الخادوم response. \n " },"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/ast.js b/apps/provisioning_api/l10n/ast.js index 04b6e103b25..3c1f2912efa 100644 --- a/apps/provisioning_api/l10n/ast.js +++ b/apps/provisioning_api/l10n/ast.js @@ -37,7 +37,6 @@ OC.L10N.register( "Provisioning API" : "API d'aprovisionamientu", "This application enables a set of APIs that external systems can use to manage accounts, groups and apps." : "Esta aplicación activa un conxuntu d'APIs que los sistemes esternos puen usar pa xestionar cuentes grupos y aplicaciones.", "Logged in user must be an administrator or have authorization to edit this setting." : "L'usuariu qu'anició la sesión ha ser alministrador o tener autorización pa editar esta opción.", - "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicación activa un conxuntu d'APIs que los sistemes esternos puen usar pa xestionar usuarios, grupos y aplicaciones.", - "To send a password link to the user an email address is required." : "Ríquese una direición de corréu pa unviar l'enllaz de la contraseña." + "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicación activa un conxuntu d'APIs que los sistemes esternos puen usar pa xestionar usuarios, grupos y aplicaciones." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/ast.json b/apps/provisioning_api/l10n/ast.json index 6a0c171127b..e16d96ad98c 100644 --- a/apps/provisioning_api/l10n/ast.json +++ b/apps/provisioning_api/l10n/ast.json @@ -35,7 +35,6 @@ "Provisioning API" : "API d'aprovisionamientu", "This application enables a set of APIs that external systems can use to manage accounts, groups and apps." : "Esta aplicación activa un conxuntu d'APIs que los sistemes esternos puen usar pa xestionar cuentes grupos y aplicaciones.", "Logged in user must be an administrator or have authorization to edit this setting." : "L'usuariu qu'anició la sesión ha ser alministrador o tener autorización pa editar esta opción.", - "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicación activa un conxuntu d'APIs que los sistemes esternos puen usar pa xestionar usuarios, grupos y aplicaciones.", - "To send a password link to the user an email address is required." : "Ríquese una direición de corréu pa unviar l'enllaz de la contraseña." + "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicación activa un conxuntu d'APIs que los sistemes esternos puen usar pa xestionar usuarios, grupos y aplicaciones." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/ca.js b/apps/provisioning_api/l10n/ca.js index 24c8b5bf97c..89d596d29c9 100644 --- a/apps/provisioning_api/l10n/ca.js +++ b/apps/provisioning_api/l10n/ca.js @@ -39,7 +39,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a crear, editar, suprimir i consultar atributs\n\t\tde compte, consultar, definir i suprimir grups, definir la quota i consultar l'emmagatzematge total en ús al Nextcloud. Els comptes administradors de grup\n\t\ttambé poden enviar consultes al Nextcloud i realitzar les mateixes funcions que un administrador per als grups que administren. L'API també permet a\n\t\tun administrador consultar les aplicacions actives del Nextcloud, la informació de l'aplicació i habilitar o inhabilitar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, es poden utilitzar sol·licituds HTTP mitjançant una capçalera d'autenticació bàsica per a realitzar qualsevol de les funcions\n\t\tindicades anteriorment. Podeu trobar més informació en la documentació de l'API d'aprovisionament, incloent-hi exemples\n\t\tde trucades i respostes del servidor.", "Logged in user must be an administrator or have authorization to edit this setting." : "L'usuari que ha iniciat la sessió ha de ser administrador o tenir autorització per a editar aquest paràmetre.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a administrar usuaris, grups i aplicacions.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a crear, editar, suprimir i consultar atributs\n\t\td'usuari, consultar, definir i suprimir grups, definir la quota i consultar l'emmagatzematge total en ús al Nextcloud. Els usuaris administradors de grup\n\t\ttambé poden enviar consultes al Nextcloud i realitzar les mateixes funcions que un administrador per als grups que administren. L'API també permet a\n\t\tun administrador consultar les aplicacions actives del Nextcloud, la informació de l'aplicació i habilitar o inhabilitar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, es poden utilitzar sol·licituds HTTP mitjançant una capçalera d'autenticació bàsica per a realitzar qualsevol de les funcions\n\t\tindicades anteriorment. Podeu trobar més informació en la documentació de l'API d'aprovisionament, incloent-hi exemples\n\t\tde trucades i respostes del servidor.", - "To send a password link to the user an email address is required." : "Cal una adreça electrònica per a enviar un enllaç amb contrasenya a l'usuari." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a crear, editar, suprimir i consultar atributs\n\t\td'usuari, consultar, definir i suprimir grups, definir la quota i consultar l'emmagatzematge total en ús al Nextcloud. Els usuaris administradors de grup\n\t\ttambé poden enviar consultes al Nextcloud i realitzar les mateixes funcions que un administrador per als grups que administren. L'API també permet a\n\t\tun administrador consultar les aplicacions actives del Nextcloud, la informació de l'aplicació i habilitar o inhabilitar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, es poden utilitzar sol·licituds HTTP mitjançant una capçalera d'autenticació bàsica per a realitzar qualsevol de les funcions\n\t\tindicades anteriorment. Podeu trobar més informació en la documentació de l'API d'aprovisionament, incloent-hi exemples\n\t\tde trucades i respostes del servidor." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/ca.json b/apps/provisioning_api/l10n/ca.json index 4a4f73b4998..f6e8e2a9dfb 100644 --- a/apps/provisioning_api/l10n/ca.json +++ b/apps/provisioning_api/l10n/ca.json @@ -37,7 +37,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a crear, editar, suprimir i consultar atributs\n\t\tde compte, consultar, definir i suprimir grups, definir la quota i consultar l'emmagatzematge total en ús al Nextcloud. Els comptes administradors de grup\n\t\ttambé poden enviar consultes al Nextcloud i realitzar les mateixes funcions que un administrador per als grups que administren. L'API també permet a\n\t\tun administrador consultar les aplicacions actives del Nextcloud, la informació de l'aplicació i habilitar o inhabilitar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, es poden utilitzar sol·licituds HTTP mitjançant una capçalera d'autenticació bàsica per a realitzar qualsevol de les funcions\n\t\tindicades anteriorment. Podeu trobar més informació en la documentació de l'API d'aprovisionament, incloent-hi exemples\n\t\tde trucades i respostes del servidor.", "Logged in user must be an administrator or have authorization to edit this setting." : "L'usuari que ha iniciat la sessió ha de ser administrador o tenir autorització per a editar aquest paràmetre.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a administrar usuaris, grups i aplicacions.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a crear, editar, suprimir i consultar atributs\n\t\td'usuari, consultar, definir i suprimir grups, definir la quota i consultar l'emmagatzematge total en ús al Nextcloud. Els usuaris administradors de grup\n\t\ttambé poden enviar consultes al Nextcloud i realitzar les mateixes funcions que un administrador per als grups que administren. L'API també permet a\n\t\tun administrador consultar les aplicacions actives del Nextcloud, la informació de l'aplicació i habilitar o inhabilitar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, es poden utilitzar sol·licituds HTTP mitjançant una capçalera d'autenticació bàsica per a realitzar qualsevol de les funcions\n\t\tindicades anteriorment. Podeu trobar més informació en la documentació de l'API d'aprovisionament, incloent-hi exemples\n\t\tde trucades i respostes del servidor.", - "To send a password link to the user an email address is required." : "Cal una adreça electrònica per a enviar un enllaç amb contrasenya a l'usuari." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a crear, editar, suprimir i consultar atributs\n\t\td'usuari, consultar, definir i suprimir grups, definir la quota i consultar l'emmagatzematge total en ús al Nextcloud. Els usuaris administradors de grup\n\t\ttambé poden enviar consultes al Nextcloud i realitzar les mateixes funcions que un administrador per als grups que administren. L'API també permet a\n\t\tun administrador consultar les aplicacions actives del Nextcloud, la informació de l'aplicació i habilitar o inhabilitar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, es poden utilitzar sol·licituds HTTP mitjançant una capçalera d'autenticació bàsica per a realitzar qualsevol de les funcions\n\t\tindicades anteriorment. Podeu trobar més informació en la documentació de l'API d'aprovisionament, incloent-hi exemples\n\t\tde trucades i respostes del servidor." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/cs.js b/apps/provisioning_api/l10n/cs.js index df89f719bb3..7fb45a4d9b1 100644 --- a/apps/provisioning_api/l10n/cs.js +++ b/apps/provisioning_api/l10n/cs.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Tato aplikace umožňuje nastavit aplikační programová rozhraní (API) pro externí systémy, která je možné použít pro vytváření, upravování, mazání a dotazování se na atributy účtů,\n\t\tdotazovat se na, nastavovat a odebírat skupiny, nastavovat kvóty a dotazovat se na celkové využívání úložiště v Nextcloud. Správci skupin\n\t\tse také mohou Nextcloud dotazovat a provádět stejné funkce jako správci pro skupiny, které spravují. API také umožňuje\n\t\tsprávci dotazovat se na aktivní Nextcloud aplikace, informace o nich a zapínat nebo vypínat aplikace na dálku.\n\t\tJakmile je aplikace zapnutá, HTTP požadavky je možné použít prostřednictvím Basic Auth záhlaví pro provádění jakékoli\n\t\tz výše zmíněných funkcí. Více informací je k dispozici v dokumentaci k Provisioning API, včetně ukázek volání\n\t\ta odpovědí ze serveru.", "Logged in user must be an administrator or have authorization to edit this setting." : "Aby měl pověření upravovat toto nastavení, je třeba, aby přihlášený uživatel byl správce.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Tato aplikace umožňuje nastavovat API rozhraní, které externí systémy mohou používat pro správu uživatelů, skupin a aplikací.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Tato aplikace umožňuje nastavit aplikační programová rozhraní (API) pro externí systémy, která je možné použít pro vytváření, upravování, mazání a dotazování se na atributy uživatelů,\n\t\tdotazovat se na, nastavovat a odebírat skupiny, nastavovat kvóty a dotazovat se na celkové využívání úložiště v Nextcloud. Správci skupin\n\t\tse také mohou Nextcloud dotazovat a provádět stejné funkce jako správci pro skupiny, které spravují. API také umožňuje\n\t\tsprávci dotazovat se na aktivní Nextcloud aplikace, informace o nic a zapínat nebo vypínat aplikace na dálku.\n\t\tJakmile je aplikace zapnutá, HTTP požadavky je možné použít prostřednictvím Basic Auth záhlaví pro provádění jakékoli\n\t\tz výše zmíněných funkcí. Více informací je k dispozici v dokumentaci k Provisioning API, včetně ukázek volání\n\t\ta odpovědí ze serveru.", - "To send a password link to the user an email address is required." : "Pro zaslání odkazu na heslo uživateli je nutná e-mailová adresa." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Tato aplikace umožňuje nastavit aplikační programová rozhraní (API) pro externí systémy, která je možné použít pro vytváření, upravování, mazání a dotazování se na atributy uživatelů,\n\t\tdotazovat se na, nastavovat a odebírat skupiny, nastavovat kvóty a dotazovat se na celkové využívání úložiště v Nextcloud. Správci skupin\n\t\tse také mohou Nextcloud dotazovat a provádět stejné funkce jako správci pro skupiny, které spravují. API také umožňuje\n\t\tsprávci dotazovat se na aktivní Nextcloud aplikace, informace o nic a zapínat nebo vypínat aplikace na dálku.\n\t\tJakmile je aplikace zapnutá, HTTP požadavky je možné použít prostřednictvím Basic Auth záhlaví pro provádění jakékoli\n\t\tz výše zmíněných funkcí. Více informací je k dispozici v dokumentaci k Provisioning API, včetně ukázek volání\n\t\ta odpovědí ze serveru." }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/provisioning_api/l10n/cs.json b/apps/provisioning_api/l10n/cs.json index 9271993131f..c289cf8c79a 100644 --- a/apps/provisioning_api/l10n/cs.json +++ b/apps/provisioning_api/l10n/cs.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Tato aplikace umožňuje nastavit aplikační programová rozhraní (API) pro externí systémy, která je možné použít pro vytváření, upravování, mazání a dotazování se na atributy účtů,\n\t\tdotazovat se na, nastavovat a odebírat skupiny, nastavovat kvóty a dotazovat se na celkové využívání úložiště v Nextcloud. Správci skupin\n\t\tse také mohou Nextcloud dotazovat a provádět stejné funkce jako správci pro skupiny, které spravují. API také umožňuje\n\t\tsprávci dotazovat se na aktivní Nextcloud aplikace, informace o nich a zapínat nebo vypínat aplikace na dálku.\n\t\tJakmile je aplikace zapnutá, HTTP požadavky je možné použít prostřednictvím Basic Auth záhlaví pro provádění jakékoli\n\t\tz výše zmíněných funkcí. Více informací je k dispozici v dokumentaci k Provisioning API, včetně ukázek volání\n\t\ta odpovědí ze serveru.", "Logged in user must be an administrator or have authorization to edit this setting." : "Aby měl pověření upravovat toto nastavení, je třeba, aby přihlášený uživatel byl správce.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Tato aplikace umožňuje nastavovat API rozhraní, které externí systémy mohou používat pro správu uživatelů, skupin a aplikací.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Tato aplikace umožňuje nastavit aplikační programová rozhraní (API) pro externí systémy, která je možné použít pro vytváření, upravování, mazání a dotazování se na atributy uživatelů,\n\t\tdotazovat se na, nastavovat a odebírat skupiny, nastavovat kvóty a dotazovat se na celkové využívání úložiště v Nextcloud. Správci skupin\n\t\tse také mohou Nextcloud dotazovat a provádět stejné funkce jako správci pro skupiny, které spravují. API také umožňuje\n\t\tsprávci dotazovat se na aktivní Nextcloud aplikace, informace o nic a zapínat nebo vypínat aplikace na dálku.\n\t\tJakmile je aplikace zapnutá, HTTP požadavky je možné použít prostřednictvím Basic Auth záhlaví pro provádění jakékoli\n\t\tz výše zmíněných funkcí. Více informací je k dispozici v dokumentaci k Provisioning API, včetně ukázek volání\n\t\ta odpovědí ze serveru.", - "To send a password link to the user an email address is required." : "Pro zaslání odkazu na heslo uživateli je nutná e-mailová adresa." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Tato aplikace umožňuje nastavit aplikační programová rozhraní (API) pro externí systémy, která je možné použít pro vytváření, upravování, mazání a dotazování se na atributy uživatelů,\n\t\tdotazovat se na, nastavovat a odebírat skupiny, nastavovat kvóty a dotazovat se na celkové využívání úložiště v Nextcloud. Správci skupin\n\t\tse také mohou Nextcloud dotazovat a provádět stejné funkce jako správci pro skupiny, které spravují. API také umožňuje\n\t\tsprávci dotazovat se na aktivní Nextcloud aplikace, informace o nic a zapínat nebo vypínat aplikace na dálku.\n\t\tJakmile je aplikace zapnutá, HTTP požadavky je možné použít prostřednictvím Basic Auth záhlaví pro provádění jakékoli\n\t\tz výše zmíněných funkcí. Více informací je k dispozici v dokumentaci k Provisioning API, včetně ukázek volání\n\t\ta odpovědí ze serveru." },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/da.js b/apps/provisioning_api/l10n/da.js index 25102a3a043..153ec08152c 100644 --- a/apps/provisioning_api/l10n/da.js +++ b/apps/provisioning_api/l10n/da.js @@ -39,7 +39,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikation muliggør et sæt af API'er, som eksterne systemer kan bruge til at oprette, redigere, slette og forespørge på kontoattributter, forespørge på, oprette og fjerne grupper, sætte kvoter og forespørge på det totale lagerforbrug i Nextcloud. Gruppeadministrator-konti kan også forespørge på Nextcloud og udføre de samme funktioner som en administrator for de grupper, de administrerer. API'en giver også en administrator mulighed for at forespørge på aktive Nextcloud-applikationer, applikationsinformation og til at aktivere eller deaktivere en app fjernstyret. Når appen er aktiveret, kan HTTP-anmodninger bruges via en Basic Auth header til at udføre nogen af de funktioner, der er nævnt ovenfor. Mere information er tilgængelig i dokumentationen for Provisioning API, inklusive eksempelopkald og serverrespons.", "Logged in user must be an administrator or have authorization to edit this setting." : "Den indloggede bruger skal være en administrator eller have autorisation til at redigere denne indstilling.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Denne applikation muliggør et sæt af API'er, som eksterne systemer kan bruge til at administrere brugere, grupper og apps.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikation muliggør et sæt af API'er, som eksterne systemer kan bruge til at oprette, redigere, slette og forespørge på brugerattributter, forespørge på, oprette og fjerne grupper, sætte kvoter og forespørge på det totale lagerforbrug i Nextcloud. Gruppeadministrator-brugere kan også forespørge på Nextcloud og udføre de samme funktioner som en administrator for de grupper, de administrerer. API'en giver også en administrator mulighed for at forespørge på aktive Nextcloud-applikationer, applikationsinformation, og til at aktivere eller deaktivere en app fjernstyret. Når appen er aktiveret, kan HTTP-anmodninger bruges via en Basic Auth header til at udføre nogen af de funktioner, der er nævnt ovenfor. Mere information er tilgængelig i dokumentationen for Provisioning API, inklusive eksempelopkald og serverrespons.", - "To send a password link to the user an email address is required." : "For at sende et link til nulstilling af adgangskode til brugeren kræves en e-mailadresse." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikation muliggør et sæt af API'er, som eksterne systemer kan bruge til at oprette, redigere, slette og forespørge på brugerattributter, forespørge på, oprette og fjerne grupper, sætte kvoter og forespørge på det totale lagerforbrug i Nextcloud. Gruppeadministrator-brugere kan også forespørge på Nextcloud og udføre de samme funktioner som en administrator for de grupper, de administrerer. API'en giver også en administrator mulighed for at forespørge på aktive Nextcloud-applikationer, applikationsinformation, og til at aktivere eller deaktivere en app fjernstyret. Når appen er aktiveret, kan HTTP-anmodninger bruges via en Basic Auth header til at udføre nogen af de funktioner, der er nævnt ovenfor. Mere information er tilgængelig i dokumentationen for Provisioning API, inklusive eksempelopkald og serverrespons." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/da.json b/apps/provisioning_api/l10n/da.json index a41a5e5ee2e..8fe43dad0e1 100644 --- a/apps/provisioning_api/l10n/da.json +++ b/apps/provisioning_api/l10n/da.json @@ -37,7 +37,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikation muliggør et sæt af API'er, som eksterne systemer kan bruge til at oprette, redigere, slette og forespørge på kontoattributter, forespørge på, oprette og fjerne grupper, sætte kvoter og forespørge på det totale lagerforbrug i Nextcloud. Gruppeadministrator-konti kan også forespørge på Nextcloud og udføre de samme funktioner som en administrator for de grupper, de administrerer. API'en giver også en administrator mulighed for at forespørge på aktive Nextcloud-applikationer, applikationsinformation og til at aktivere eller deaktivere en app fjernstyret. Når appen er aktiveret, kan HTTP-anmodninger bruges via en Basic Auth header til at udføre nogen af de funktioner, der er nævnt ovenfor. Mere information er tilgængelig i dokumentationen for Provisioning API, inklusive eksempelopkald og serverrespons.", "Logged in user must be an administrator or have authorization to edit this setting." : "Den indloggede bruger skal være en administrator eller have autorisation til at redigere denne indstilling.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Denne applikation muliggør et sæt af API'er, som eksterne systemer kan bruge til at administrere brugere, grupper og apps.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikation muliggør et sæt af API'er, som eksterne systemer kan bruge til at oprette, redigere, slette og forespørge på brugerattributter, forespørge på, oprette og fjerne grupper, sætte kvoter og forespørge på det totale lagerforbrug i Nextcloud. Gruppeadministrator-brugere kan også forespørge på Nextcloud og udføre de samme funktioner som en administrator for de grupper, de administrerer. API'en giver også en administrator mulighed for at forespørge på aktive Nextcloud-applikationer, applikationsinformation, og til at aktivere eller deaktivere en app fjernstyret. Når appen er aktiveret, kan HTTP-anmodninger bruges via en Basic Auth header til at udføre nogen af de funktioner, der er nævnt ovenfor. Mere information er tilgængelig i dokumentationen for Provisioning API, inklusive eksempelopkald og serverrespons.", - "To send a password link to the user an email address is required." : "For at sende et link til nulstilling af adgangskode til brugeren kræves en e-mailadresse." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikation muliggør et sæt af API'er, som eksterne systemer kan bruge til at oprette, redigere, slette og forespørge på brugerattributter, forespørge på, oprette og fjerne grupper, sætte kvoter og forespørge på det totale lagerforbrug i Nextcloud. Gruppeadministrator-brugere kan også forespørge på Nextcloud og udføre de samme funktioner som en administrator for de grupper, de administrerer. API'en giver også en administrator mulighed for at forespørge på aktive Nextcloud-applikationer, applikationsinformation, og til at aktivere eller deaktivere en app fjernstyret. Når appen er aktiveret, kan HTTP-anmodninger bruges via en Basic Auth header til at udføre nogen af de funktioner, der er nævnt ovenfor. Mere information er tilgængelig i dokumentationen for Provisioning API, inklusive eksempelopkald og serverrespons." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/de.js b/apps/provisioning_api/l10n/de.js index 896c54bc4d7..6132089ae3e 100644 --- a/apps/provisioning_api/l10n/de.js +++ b/apps/provisioning_api/l10n/de.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Konten erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministrationskonto\n\t\tDu kannst auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von dir verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEine Administration, die nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen findest du in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", "Logged in user must be an administrator or have authorization to edit this setting." : "Der angemeldete Benutzer muss ein Administrator sein oder die Berechtigung haben, diese Einstellung zu bearbeiten.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Diese Anwendung stellt eine API bereit, um von anderen Systemen aus Benutzer, Gruppen und Apps zu verwalten.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen findest du in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", - "To send a password link to the user an email address is required." : "Um einen Passwort-Link an einen Benutzer zu versenden wird eine E-Mail-Adresse benötigt." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen findest du in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/de.json b/apps/provisioning_api/l10n/de.json index eaff932a916..d34468a813e 100644 --- a/apps/provisioning_api/l10n/de.json +++ b/apps/provisioning_api/l10n/de.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Konten erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministrationskonto\n\t\tDu kannst auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von dir verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEine Administration, die nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen findest du in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", "Logged in user must be an administrator or have authorization to edit this setting." : "Der angemeldete Benutzer muss ein Administrator sein oder die Berechtigung haben, diese Einstellung zu bearbeiten.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Diese Anwendung stellt eine API bereit, um von anderen Systemen aus Benutzer, Gruppen und Apps zu verwalten.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen findest du in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", - "To send a password link to the user an email address is required." : "Um einen Passwort-Link an einen Benutzer zu versenden wird eine E-Mail-Adresse benötigt." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen findest du in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/de_DE.js b/apps/provisioning_api/l10n/de_DE.js index 18c5c76237e..b7c06dcae40 100644 --- a/apps/provisioning_api/l10n/de_DE.js +++ b/apps/provisioning_api/l10n/de_DE.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Konten erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministrationskonto\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen finden Sie in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", "Logged in user must be an administrator or have authorization to edit this setting." : "Der angemeldete Benutzer muss ein Administrator sein oder die Berechtigung haben, diese Einstellung zu bearbeiten.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Diese Applikation stellt einen Satz von APIs für externe Systeme zur Verfügung um Benutzer, Gruppen und Applikationen zu Verwalten.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen finden Sie in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", - "To send a password link to the user an email address is required." : "Um einen Passwort-Link an einen Benutzer zu versenden wird eine E-Mail-Adresse benötigt." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen finden Sie in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/de_DE.json b/apps/provisioning_api/l10n/de_DE.json index 61fd2140872..d0c067bf3ae 100644 --- a/apps/provisioning_api/l10n/de_DE.json +++ b/apps/provisioning_api/l10n/de_DE.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Konten erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministrationskonto\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen finden Sie in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", "Logged in user must be an administrator or have authorization to edit this setting." : "Der angemeldete Benutzer muss ein Administrator sein oder die Berechtigung haben, diese Einstellung zu bearbeiten.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Diese Applikation stellt einen Satz von APIs für externe Systeme zur Verfügung um Benutzer, Gruppen und Applikationen zu Verwalten.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen finden Sie in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", - "To send a password link to the user an email address is required." : "Um einen Passwort-Link an einen Benutzer zu versenden wird eine E-Mail-Adresse benötigt." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen finden Sie in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/en_GB.js b/apps/provisioning_api/l10n/en_GB.js index 3c792e1f10f..b65356050bb 100644 --- a/apps/provisioning_api/l10n/en_GB.js +++ b/apps/provisioning_api/l10n/en_GB.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses.", "Logged in user must be an administrator or have authorization to edit this setting." : "Logged in user must be an administrator or have authorization to edit this setting.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "This application enables a set of APIs that external systems can use to manage users, groups and apps.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses.", - "To send a password link to the user an email address is required." : "To send a password link to the user an email address is required." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/en_GB.json b/apps/provisioning_api/l10n/en_GB.json index 03ba2aafdb3..d6e9895738a 100644 --- a/apps/provisioning_api/l10n/en_GB.json +++ b/apps/provisioning_api/l10n/en_GB.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses.", "Logged in user must be an administrator or have authorization to edit this setting." : "Logged in user must be an administrator or have authorization to edit this setting.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "This application enables a set of APIs that external systems can use to manage users, groups and apps.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses.", - "To send a password link to the user an email address is required." : "To send a password link to the user an email address is required." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/es.js b/apps/provisioning_api/l10n/es.js index 6d72cf42141..9b051e26244 100644 --- a/apps/provisioning_api/l10n/es.js +++ b/apps/provisioning_api/l10n/es.js @@ -39,7 +39,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita una serie de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y realizar las mismas funciones como administrador para los grupos que manejan. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de las apps, y activar o desactivar remotamente una app.\n\t\tUna vez que se activa la app, se pueden usar peticiones HTTP vía un encabezado Basic Auth para realizar cualesquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor.", "Logged in user must be an administrator or have authorization to edit this setting." : "La sesión del usuario debe corresponder a un administrador o bien, este debe tener autorización para editar esta configuración.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicación activa un conjunto de apis que sistemas externos pueden usar para manejar usuarios, grupos y aplicaciones.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita una serie de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y realizar las mismas funciones como administrador para los grupos que manejan. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de las apps, y activar o desactivar remotamente una app.\n\t\tUna vez que se activa la app, se pueden usar peticiones HTTP vía un encabezado Basic Auth para realizar cualesquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor.", - "To send a password link to the user an email address is required." : "Para enviar un enlace de contraseña al usuario, se requiere una dirección de correo electrónico." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita una serie de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y realizar las mismas funciones como administrador para los grupos que manejan. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de las apps, y activar o desactivar remotamente una app.\n\t\tUna vez que se activa la app, se pueden usar peticiones HTTP vía un encabezado Basic Auth para realizar cualesquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/provisioning_api/l10n/es.json b/apps/provisioning_api/l10n/es.json index 4a6aa91f68c..d87433fd8ec 100644 --- a/apps/provisioning_api/l10n/es.json +++ b/apps/provisioning_api/l10n/es.json @@ -37,7 +37,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita una serie de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y realizar las mismas funciones como administrador para los grupos que manejan. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de las apps, y activar o desactivar remotamente una app.\n\t\tUna vez que se activa la app, se pueden usar peticiones HTTP vía un encabezado Basic Auth para realizar cualesquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor.", "Logged in user must be an administrator or have authorization to edit this setting." : "La sesión del usuario debe corresponder a un administrador o bien, este debe tener autorización para editar esta configuración.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicación activa un conjunto de apis que sistemas externos pueden usar para manejar usuarios, grupos y aplicaciones.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita una serie de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y realizar las mismas funciones como administrador para los grupos que manejan. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de las apps, y activar o desactivar remotamente una app.\n\t\tUna vez que se activa la app, se pueden usar peticiones HTTP vía un encabezado Basic Auth para realizar cualesquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor.", - "To send a password link to the user an email address is required." : "Para enviar un enlace de contraseña al usuario, se requiere una dirección de correo electrónico." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita una serie de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y realizar las mismas funciones como administrador para los grupos que manejan. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de las apps, y activar o desactivar remotamente una app.\n\t\tUna vez que se activa la app, se pueden usar peticiones HTTP vía un encabezado Basic Auth para realizar cualesquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/es_MX.js b/apps/provisioning_api/l10n/es_MX.js index 8599198d044..dc401614819 100644 --- a/apps/provisioning_api/l10n/es_MX.js +++ b/apps/provisioning_api/l10n/es_MX.js @@ -40,7 +40,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita un conjunto de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y desempeñar las mismas funciones como administrador para los grupos que administran. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de la aplicación, y activar o desactivar una aplicación remotamente.\n\t\tUna vez activada la aplicación, se pueden usar peticiones HTTP mediante un encabezado Basic Auth para realizar cualquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor.", "Logged in user must be an administrator or have authorization to edit this setting." : "El usuario que ha iniciado sesión debe ser un administrador o tener autorización para editar esta configuración.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicación habilita un conjunto de APIs que los sistemas externos pueden usar para administrar usuarios, grupos y aplicaciones.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita un conjunto de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y desempeñar las mismas funciones como administrador para los grupos que administran. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de la aplicación, y activar o desactivar una aplicación remotamente.\n\t\tUna vez activada la aplicación, se pueden usar peticiones HTTP mediante un encabezado Basic Auth para realizar cualquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor.", - "To send a password link to the user an email address is required." : "Para enviar la liga a una contraseña al usuario, se requiere de una dirección de correo electrónico." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita un conjunto de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y desempeñar las mismas funciones como administrador para los grupos que administran. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de la aplicación, y activar o desactivar una aplicación remotamente.\n\t\tUna vez activada la aplicación, se pueden usar peticiones HTTP mediante un encabezado Basic Auth para realizar cualquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/provisioning_api/l10n/es_MX.json b/apps/provisioning_api/l10n/es_MX.json index 30071077615..c8e8970add2 100644 --- a/apps/provisioning_api/l10n/es_MX.json +++ b/apps/provisioning_api/l10n/es_MX.json @@ -38,7 +38,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita un conjunto de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y desempeñar las mismas funciones como administrador para los grupos que administran. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de la aplicación, y activar o desactivar una aplicación remotamente.\n\t\tUna vez activada la aplicación, se pueden usar peticiones HTTP mediante un encabezado Basic Auth para realizar cualquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor.", "Logged in user must be an administrator or have authorization to edit this setting." : "El usuario que ha iniciado sesión debe ser un administrador o tener autorización para editar esta configuración.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicación habilita un conjunto de APIs que los sistemas externos pueden usar para administrar usuarios, grupos y aplicaciones.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita un conjunto de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y desempeñar las mismas funciones como administrador para los grupos que administran. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de la aplicación, y activar o desactivar una aplicación remotamente.\n\t\tUna vez activada la aplicación, se pueden usar peticiones HTTP mediante un encabezado Basic Auth para realizar cualquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor.", - "To send a password link to the user an email address is required." : "Para enviar la liga a una contraseña al usuario, se requiere de una dirección de correo electrónico." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación habilita un conjunto de APIs que pueden ser usadas por sistemas externos para crear, editar, eliminar y seleccionar atributos\n\t\tde usuarios; seleccionar, configurar y eliminar grupos, establecer cuotas y consultar el almacenamiento total usado en Nextcloud. Las cuentas administradoras de grupos\n\t\ttambién pueden buscar en Nextcloud y desempeñar las mismas funciones como administrador para los grupos que administran. La API también permite\n\t\ta un administrador que busque aplicaciones activas en Nextcloud, información de la aplicación, y activar o desactivar una aplicación remotamente.\n\t\tUna vez activada la aplicación, se pueden usar peticiones HTTP mediante un encabezado Basic Auth para realizar cualquiera de las funciones\n\t\t listadas anteriormente. Más información disponible en la documentación de la API de aprovisionamiento, incluyendo llamadas de ejemplo\n\t\ty respuestas del servidor." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/eu.js b/apps/provisioning_api/l10n/eu.js index 46107cb573f..a753139a09f 100644 --- a/apps/provisioning_api/l10n/eu.js +++ b/apps/provisioning_api/l10n/eu.js @@ -40,7 +40,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aplikazio honek gaitzen du kanpoko sistemek kontuak sortu, editatu, ezabatu eta kontsultatzeko erabili ditzaketen API multzo bat\n\t\tatributuak, kontsultak, taldeak ezarri eta kendu, kuota ezarri eta Nextcloud-en erabilitako biltegiratze osoa kontsultatu. Taldeko administratzaileek\n\t\tNextcloud ere kontsulta dezakete eta administratzaile baten funtzio berdinak bete kudeatzen dituzten taldeentzako. APIak ere gaitzen du\n\t\tadministratzaile bat Nextcloud kontsultatzeko aplikazio aktiboak, aplikazioen informazioa eta aplikazio bat urrunetik gaitzeko edo desgaitzeko.\n\t\tAplikazioa gaituta dagoenean, HTTP eskaerak oinarrizko autentifikazio goiburu baten bidez erabili daitezke betetzeko\n\t\tgoian zerrendatuko edozein funtzio. Informazio gehiago eskuragarri dago API hornitze- dokumentazioan, adibide-deiak\n\t\teta zerbitzariaren erantzunak barne.", "Logged in user must be an administrator or have authorization to edit this setting." : "Saioa hasitako erabiltzaileak administratzailea edo ezarpen hau editatzeko baimena duena izan behar du.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Aplikazio honek API multzo bat gaitzen du kanpoko sistemei aukera emanez erabiltzaileak, taldeak eta aplikazioak kudeatzeko. ", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aplikazio honek gaitzen du kanpoko sistemek erabiltzailea sortu, editatu, ezabatu eta kontsultatzeko erabili ditzaketen API multzo bat\n\t\tatributuak, kontsultak, taldeak ezarri eta kendu, kuota ezarri eta Nextcloud-en erabilitako biltegiratze osoa kontsultatu. Taldeko administratzaileek\n\t\tNextcloud ere kontsulta dezakete eta administratzaile baten funtzio berdinak bete kudeatzen dituzten taldeentzako. APIak ere gaitzen du\n\t\tadministratzaile bat Nextcloud kontsultatzeko aplikazio aktiboak, aplikazioen informazioa eta aplikazio bat urrunetik gaitzeko edo desgaitzeko.\n\t\tAplikazioa gaituta dagoenean, HTTP eskaerak oinarrizko autentifikazio goiburu baten bidez erabili daitezke betetzeko\n\t\tgoian zerrendatuko edozein funtzio. Informazio gehiago eskuragarri dago API hornitze- dokumentazioan, adibide-deiak\n\t\teta zerbitzariaren erantzunak barne.", - "To send a password link to the user an email address is required." : "Pasahitza " + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aplikazio honek gaitzen du kanpoko sistemek erabiltzailea sortu, editatu, ezabatu eta kontsultatzeko erabili ditzaketen API multzo bat\n\t\tatributuak, kontsultak, taldeak ezarri eta kendu, kuota ezarri eta Nextcloud-en erabilitako biltegiratze osoa kontsultatu. Taldeko administratzaileek\n\t\tNextcloud ere kontsulta dezakete eta administratzaile baten funtzio berdinak bete kudeatzen dituzten taldeentzako. APIak ere gaitzen du\n\t\tadministratzaile bat Nextcloud kontsultatzeko aplikazio aktiboak, aplikazioen informazioa eta aplikazio bat urrunetik gaitzeko edo desgaitzeko.\n\t\tAplikazioa gaituta dagoenean, HTTP eskaerak oinarrizko autentifikazio goiburu baten bidez erabili daitezke betetzeko\n\t\tgoian zerrendatuko edozein funtzio. Informazio gehiago eskuragarri dago API hornitze- dokumentazioan, adibide-deiak\n\t\teta zerbitzariaren erantzunak barne." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/eu.json b/apps/provisioning_api/l10n/eu.json index 92c6f2c6cb0..5bab207ea3e 100644 --- a/apps/provisioning_api/l10n/eu.json +++ b/apps/provisioning_api/l10n/eu.json @@ -38,7 +38,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aplikazio honek gaitzen du kanpoko sistemek kontuak sortu, editatu, ezabatu eta kontsultatzeko erabili ditzaketen API multzo bat\n\t\tatributuak, kontsultak, taldeak ezarri eta kendu, kuota ezarri eta Nextcloud-en erabilitako biltegiratze osoa kontsultatu. Taldeko administratzaileek\n\t\tNextcloud ere kontsulta dezakete eta administratzaile baten funtzio berdinak bete kudeatzen dituzten taldeentzako. APIak ere gaitzen du\n\t\tadministratzaile bat Nextcloud kontsultatzeko aplikazio aktiboak, aplikazioen informazioa eta aplikazio bat urrunetik gaitzeko edo desgaitzeko.\n\t\tAplikazioa gaituta dagoenean, HTTP eskaerak oinarrizko autentifikazio goiburu baten bidez erabili daitezke betetzeko\n\t\tgoian zerrendatuko edozein funtzio. Informazio gehiago eskuragarri dago API hornitze- dokumentazioan, adibide-deiak\n\t\teta zerbitzariaren erantzunak barne.", "Logged in user must be an administrator or have authorization to edit this setting." : "Saioa hasitako erabiltzaileak administratzailea edo ezarpen hau editatzeko baimena duena izan behar du.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Aplikazio honek API multzo bat gaitzen du kanpoko sistemei aukera emanez erabiltzaileak, taldeak eta aplikazioak kudeatzeko. ", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aplikazio honek gaitzen du kanpoko sistemek erabiltzailea sortu, editatu, ezabatu eta kontsultatzeko erabili ditzaketen API multzo bat\n\t\tatributuak, kontsultak, taldeak ezarri eta kendu, kuota ezarri eta Nextcloud-en erabilitako biltegiratze osoa kontsultatu. Taldeko administratzaileek\n\t\tNextcloud ere kontsulta dezakete eta administratzaile baten funtzio berdinak bete kudeatzen dituzten taldeentzako. APIak ere gaitzen du\n\t\tadministratzaile bat Nextcloud kontsultatzeko aplikazio aktiboak, aplikazioen informazioa eta aplikazio bat urrunetik gaitzeko edo desgaitzeko.\n\t\tAplikazioa gaituta dagoenean, HTTP eskaerak oinarrizko autentifikazio goiburu baten bidez erabili daitezke betetzeko\n\t\tgoian zerrendatuko edozein funtzio. Informazio gehiago eskuragarri dago API hornitze- dokumentazioan, adibide-deiak\n\t\teta zerbitzariaren erantzunak barne.", - "To send a password link to the user an email address is required." : "Pasahitza " + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aplikazio honek gaitzen du kanpoko sistemek erabiltzailea sortu, editatu, ezabatu eta kontsultatzeko erabili ditzaketen API multzo bat\n\t\tatributuak, kontsultak, taldeak ezarri eta kendu, kuota ezarri eta Nextcloud-en erabilitako biltegiratze osoa kontsultatu. Taldeko administratzaileek\n\t\tNextcloud ere kontsulta dezakete eta administratzaile baten funtzio berdinak bete kudeatzen dituzten taldeentzako. APIak ere gaitzen du\n\t\tadministratzaile bat Nextcloud kontsultatzeko aplikazio aktiboak, aplikazioen informazioa eta aplikazio bat urrunetik gaitzeko edo desgaitzeko.\n\t\tAplikazioa gaituta dagoenean, HTTP eskaerak oinarrizko autentifikazio goiburu baten bidez erabili daitezke betetzeko\n\t\tgoian zerrendatuko edozein funtzio. Informazio gehiago eskuragarri dago API hornitze- dokumentazioan, adibide-deiak\n\t\teta zerbitzariaren erantzunak barne." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/fr.js b/apps/provisioning_api/l10n/fr.js index b0c52e80775..0beeb1e1256 100644 --- a/apps/provisioning_api/l10n/fr.js +++ b/apps/provisioning_api/l10n/fr.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cette application active un ensemble d'API qui peuvent être utilisées par un système externe pour créer, modifier, supprimer et rechercher des\n\t\tattributs de compte, rechercher, ajouter et retirer des groupes, fixer des quotas et rechercher l'espace de stockage total utilisé sur Nextcloud. Les administrateurs de groupe\n\t\tpeuvent aussi rechercher Nextcloud et accéder aux même fonctionnalités que les administrateurs pour les groupes dont ils ont la gestion. L'API permet aussi\n\t\tà un administrateur de rechercher les applications Nextcloud actives et les informations d'application ainsi que d'activer et désactiver les applications à distance.\n\t\tUne fois l'application activée, des requêtes HTTP peuvent être utilisées au moyen d'un entête Basic Auth pour exécuter chacune des fonctionnalités listées\n\t\tci-dessus. Des informations supplémentaires sont accessibles dans la documentation sur l'API de provisionnement, avec des exemples de demandes\n\t\tet réponses serveur.", "Logged in user must be an administrator or have authorization to edit this setting." : "L'utilisateur connecté doit être un administrateur ou avoir l'autorisation de modifier ce paramètre.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Cette application active un ensemble d'API que les systèmes externes peuvent utiliser pour gérer les utilisateurs, les groupes et les applications.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cette application active un ensemble d'API qui peuvent être utilisées par un système externe pour créer, modifier, supprimer et rechercher des attributs d'utilisateur, rechercher, ajouter et retirer des groupes, fixer des quotas et rechercher l'espace de stockage total utilisé sur Nextcloud. Les administrateurs de groupe peuvent aussi rechercher Nextcloud et accéder aux même fonctionnalités que les administrateurs pour les groupes dont ils ont la gestion. L'API permet aussi à un administrateur de rechercher les applications Nextcloud actives et les informations d'application ainsi que d'activer et désactiver les applications à distance. Une fois l'application activée, des requêtes HTTP peuvent être utilisées au moyen d'un entête Basic Auth pour exécuter chacune des fonctionnalités listées ci-dessus. Des informations supplémentaires sont accessibles dans la documentation sur l'API de provisionnement, avec des exemples de demandes et réponses serveur.", - "To send a password link to the user an email address is required." : "Pour envoyer un mot de passe par lien à l’utilisateur, une adresse e-mail est requise." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cette application active un ensemble d'API qui peuvent être utilisées par un système externe pour créer, modifier, supprimer et rechercher des attributs d'utilisateur, rechercher, ajouter et retirer des groupes, fixer des quotas et rechercher l'espace de stockage total utilisé sur Nextcloud. Les administrateurs de groupe peuvent aussi rechercher Nextcloud et accéder aux même fonctionnalités que les administrateurs pour les groupes dont ils ont la gestion. L'API permet aussi à un administrateur de rechercher les applications Nextcloud actives et les informations d'application ainsi que d'activer et désactiver les applications à distance. Une fois l'application activée, des requêtes HTTP peuvent être utilisées au moyen d'un entête Basic Auth pour exécuter chacune des fonctionnalités listées ci-dessus. Des informations supplémentaires sont accessibles dans la documentation sur l'API de provisionnement, avec des exemples de demandes et réponses serveur." }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/provisioning_api/l10n/fr.json b/apps/provisioning_api/l10n/fr.json index 3cc55b852ff..d7a401da418 100644 --- a/apps/provisioning_api/l10n/fr.json +++ b/apps/provisioning_api/l10n/fr.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cette application active un ensemble d'API qui peuvent être utilisées par un système externe pour créer, modifier, supprimer et rechercher des\n\t\tattributs de compte, rechercher, ajouter et retirer des groupes, fixer des quotas et rechercher l'espace de stockage total utilisé sur Nextcloud. Les administrateurs de groupe\n\t\tpeuvent aussi rechercher Nextcloud et accéder aux même fonctionnalités que les administrateurs pour les groupes dont ils ont la gestion. L'API permet aussi\n\t\tà un administrateur de rechercher les applications Nextcloud actives et les informations d'application ainsi que d'activer et désactiver les applications à distance.\n\t\tUne fois l'application activée, des requêtes HTTP peuvent être utilisées au moyen d'un entête Basic Auth pour exécuter chacune des fonctionnalités listées\n\t\tci-dessus. Des informations supplémentaires sont accessibles dans la documentation sur l'API de provisionnement, avec des exemples de demandes\n\t\tet réponses serveur.", "Logged in user must be an administrator or have authorization to edit this setting." : "L'utilisateur connecté doit être un administrateur ou avoir l'autorisation de modifier ce paramètre.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Cette application active un ensemble d'API que les systèmes externes peuvent utiliser pour gérer les utilisateurs, les groupes et les applications.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cette application active un ensemble d'API qui peuvent être utilisées par un système externe pour créer, modifier, supprimer et rechercher des attributs d'utilisateur, rechercher, ajouter et retirer des groupes, fixer des quotas et rechercher l'espace de stockage total utilisé sur Nextcloud. Les administrateurs de groupe peuvent aussi rechercher Nextcloud et accéder aux même fonctionnalités que les administrateurs pour les groupes dont ils ont la gestion. L'API permet aussi à un administrateur de rechercher les applications Nextcloud actives et les informations d'application ainsi que d'activer et désactiver les applications à distance. Une fois l'application activée, des requêtes HTTP peuvent être utilisées au moyen d'un entête Basic Auth pour exécuter chacune des fonctionnalités listées ci-dessus. Des informations supplémentaires sont accessibles dans la documentation sur l'API de provisionnement, avec des exemples de demandes et réponses serveur.", - "To send a password link to the user an email address is required." : "Pour envoyer un mot de passe par lien à l’utilisateur, une adresse e-mail est requise." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cette application active un ensemble d'API qui peuvent être utilisées par un système externe pour créer, modifier, supprimer et rechercher des attributs d'utilisateur, rechercher, ajouter et retirer des groupes, fixer des quotas et rechercher l'espace de stockage total utilisé sur Nextcloud. Les administrateurs de groupe peuvent aussi rechercher Nextcloud et accéder aux même fonctionnalités que les administrateurs pour les groupes dont ils ont la gestion. L'API permet aussi à un administrateur de rechercher les applications Nextcloud actives et les informations d'application ainsi que d'activer et désactiver les applications à distance. Une fois l'application activée, des requêtes HTTP peuvent être utilisées au moyen d'un entête Basic Auth pour exécuter chacune des fonctionnalités listées ci-dessus. Des informations supplémentaires sont accessibles dans la documentation sur l'API de provisionnement, avec des exemples de demandes et réponses serveur." },"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/provisioning_api/l10n/ga.js b/apps/provisioning_api/l10n/ga.js index c2c150a485e..82333877dee 100644 --- a/apps/provisioning_api/l10n/ga.js +++ b/apps/provisioning_api/l10n/ga.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cumasaíonn an feidhmchlár seo sraith APIanna is féidir le córais sheachtracha a úsáid chun cuntas a chruthú, a chur in eagar, a scriosadh agus a cheistiú\n\t\t tréithe, ceistigh, socraigh agus bain grúpaí, socraigh cuóta agus ceistigh an stór iomlán a úsáidtear in Nextcloud. Cuntais riaracháin ghrúpa\n\t\t is féidir Nextcloud a cheistiú freisin agus na feidhmeanna céanna a chomhlíonadh agus a fheidhmíonn riarthóir do ghrúpaí a bhainistíonn siad. Cuireann an API ar chumas freisin\n\t\t admin chun iarratas a dhéanamh maidir le feidhmchláir ghníomhacha Nextcloud, faisnéis feidhmchláir, agus chun aip a chumasú nó a dhíchumasú go cianda.\n\t\t Nuair atá an aip cumasaithe, is féidir iarratais HTTP a úsáid trí cheanntásc Basic Auth chun aon cheann de na feidhmeanna a dhéanamh\n\t\t liostaithe thuas. Tá tuilleadh faisnéise ar fáil i gcáipéisíocht an API Soláthar, lena n-áirítear glaonna mar shampla\n\t\t agus freagraí freastalaí.", "Logged in user must be an administrator or have authorization to edit this setting." : "Caithfidh úsáideoir logáilte isteach a bheith ina riarthóir nó údarú a bheith aige chun an socrú seo a chur in eagar.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Cumasaíonn an feidhmchlár seo sraith APIanna is féidir le córais sheachtracha a úsáid chun úsáideoirí, grúpaí agus aipeanna a bhainistiú.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cumasaíonn an feidhmchlár seo sraith APIanna is féidir le córais sheachtracha a úsáid chun úsáideoir a chruthú, a chur in eagar, a scriosadh agus a cheistiú\n\t\t tréithe, ceistigh, socraigh agus bain grúpaí, socraigh cuóta agus ceistigh an stór iomlán a úsáidtear in Nextcloud. Grúpa úsáideoirí riaracháin\n\t\t is féidir Nextcloud a cheistiú freisin agus na feidhmeanna céanna a chomhlíonadh agus a fheidhmíonn riarthóir do ghrúpaí a bhainistíonn siad. Cuireann an API ar chumas freisin\n\t\t admin chun iarratas a dhéanamh maidir le feidhmchláir ghníomhacha Nextcloud, faisnéis feidhmchláir, agus chun aip a chumasú nó a dhíchumasú go cianda.\n\t\t Nuair atá an aip cumasaithe, is féidir iarratais HTTP a úsáid trí cheanntásc Basic Auth chun aon cheann de na feidhmeanna a dhéanamh\n\t\t liostaithe thuas. Tá tuilleadh faisnéise ar fáil i gcáipéisíocht an API Soláthar, lena n-áirítear glaonna mar shampla\n\t\t agus freagraí freastalaí.", - "To send a password link to the user an email address is required." : "Teastaíonn seoladh ríomhphoist chun nasc pasfhocail a sheoladh chuig an úsáideoir." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cumasaíonn an feidhmchlár seo sraith APIanna is féidir le córais sheachtracha a úsáid chun úsáideoir a chruthú, a chur in eagar, a scriosadh agus a cheistiú\n\t\t tréithe, ceistigh, socraigh agus bain grúpaí, socraigh cuóta agus ceistigh an stór iomlán a úsáidtear in Nextcloud. Grúpa úsáideoirí riaracháin\n\t\t is féidir Nextcloud a cheistiú freisin agus na feidhmeanna céanna a chomhlíonadh agus a fheidhmíonn riarthóir do ghrúpaí a bhainistíonn siad. Cuireann an API ar chumas freisin\n\t\t admin chun iarratas a dhéanamh maidir le feidhmchláir ghníomhacha Nextcloud, faisnéis feidhmchláir, agus chun aip a chumasú nó a dhíchumasú go cianda.\n\t\t Nuair atá an aip cumasaithe, is féidir iarratais HTTP a úsáid trí cheanntásc Basic Auth chun aon cheann de na feidhmeanna a dhéanamh\n\t\t liostaithe thuas. Tá tuilleadh faisnéise ar fáil i gcáipéisíocht an API Soláthar, lena n-áirítear glaonna mar shampla\n\t\t agus freagraí freastalaí." }, "nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"); diff --git a/apps/provisioning_api/l10n/ga.json b/apps/provisioning_api/l10n/ga.json index 74470217eff..0cfb87922d5 100644 --- a/apps/provisioning_api/l10n/ga.json +++ b/apps/provisioning_api/l10n/ga.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cumasaíonn an feidhmchlár seo sraith APIanna is féidir le córais sheachtracha a úsáid chun cuntas a chruthú, a chur in eagar, a scriosadh agus a cheistiú\n\t\t tréithe, ceistigh, socraigh agus bain grúpaí, socraigh cuóta agus ceistigh an stór iomlán a úsáidtear in Nextcloud. Cuntais riaracháin ghrúpa\n\t\t is féidir Nextcloud a cheistiú freisin agus na feidhmeanna céanna a chomhlíonadh agus a fheidhmíonn riarthóir do ghrúpaí a bhainistíonn siad. Cuireann an API ar chumas freisin\n\t\t admin chun iarratas a dhéanamh maidir le feidhmchláir ghníomhacha Nextcloud, faisnéis feidhmchláir, agus chun aip a chumasú nó a dhíchumasú go cianda.\n\t\t Nuair atá an aip cumasaithe, is féidir iarratais HTTP a úsáid trí cheanntásc Basic Auth chun aon cheann de na feidhmeanna a dhéanamh\n\t\t liostaithe thuas. Tá tuilleadh faisnéise ar fáil i gcáipéisíocht an API Soláthar, lena n-áirítear glaonna mar shampla\n\t\t agus freagraí freastalaí.", "Logged in user must be an administrator or have authorization to edit this setting." : "Caithfidh úsáideoir logáilte isteach a bheith ina riarthóir nó údarú a bheith aige chun an socrú seo a chur in eagar.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Cumasaíonn an feidhmchlár seo sraith APIanna is féidir le córais sheachtracha a úsáid chun úsáideoirí, grúpaí agus aipeanna a bhainistiú.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cumasaíonn an feidhmchlár seo sraith APIanna is féidir le córais sheachtracha a úsáid chun úsáideoir a chruthú, a chur in eagar, a scriosadh agus a cheistiú\n\t\t tréithe, ceistigh, socraigh agus bain grúpaí, socraigh cuóta agus ceistigh an stór iomlán a úsáidtear in Nextcloud. Grúpa úsáideoirí riaracháin\n\t\t is féidir Nextcloud a cheistiú freisin agus na feidhmeanna céanna a chomhlíonadh agus a fheidhmíonn riarthóir do ghrúpaí a bhainistíonn siad. Cuireann an API ar chumas freisin\n\t\t admin chun iarratas a dhéanamh maidir le feidhmchláir ghníomhacha Nextcloud, faisnéis feidhmchláir, agus chun aip a chumasú nó a dhíchumasú go cianda.\n\t\t Nuair atá an aip cumasaithe, is féidir iarratais HTTP a úsáid trí cheanntásc Basic Auth chun aon cheann de na feidhmeanna a dhéanamh\n\t\t liostaithe thuas. Tá tuilleadh faisnéise ar fáil i gcáipéisíocht an API Soláthar, lena n-áirítear glaonna mar shampla\n\t\t agus freagraí freastalaí.", - "To send a password link to the user an email address is required." : "Teastaíonn seoladh ríomhphoist chun nasc pasfhocail a sheoladh chuig an úsáideoir." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Cumasaíonn an feidhmchlár seo sraith APIanna is féidir le córais sheachtracha a úsáid chun úsáideoir a chruthú, a chur in eagar, a scriosadh agus a cheistiú\n\t\t tréithe, ceistigh, socraigh agus bain grúpaí, socraigh cuóta agus ceistigh an stór iomlán a úsáidtear in Nextcloud. Grúpa úsáideoirí riaracháin\n\t\t is féidir Nextcloud a cheistiú freisin agus na feidhmeanna céanna a chomhlíonadh agus a fheidhmíonn riarthóir do ghrúpaí a bhainistíonn siad. Cuireann an API ar chumas freisin\n\t\t admin chun iarratas a dhéanamh maidir le feidhmchláir ghníomhacha Nextcloud, faisnéis feidhmchláir, agus chun aip a chumasú nó a dhíchumasú go cianda.\n\t\t Nuair atá an aip cumasaithe, is féidir iarratais HTTP a úsáid trí cheanntásc Basic Auth chun aon cheann de na feidhmeanna a dhéanamh\n\t\t liostaithe thuas. Tá tuilleadh faisnéise ar fáil i gcáipéisíocht an API Soláthar, lena n-áirítear glaonna mar shampla\n\t\t agus freagraí freastalaí." },"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/apps/provisioning_api/l10n/gl.js b/apps/provisioning_api/l10n/gl.js index 1aab97c2938..dee983ea226 100644 --- a/apps/provisioning_api/l10n/gl.js +++ b/apps/provisioning_api/l10n/gl.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación activa un conxunto de API que os sistemas externos poden usar para crear, editar, eliminar e consultar\n\t\tos atributos da conta, consultar, definir e retirar grupos, definir a cota e consultar o almacenamento total\n\t\tutilizado en Nextcloud. . As contas de administración de grupos tamén poden consultar Nextcloud e realizar as\n\t\tmesmas funcións que a administración da instancia para os grupos que xestionan. A API tamén permite á administración\n\t\tconsultar aplicacións activas de Nextcloud, información da aplicación e activar ou desactivar unha aplicación remotamente.\n\t\tUnha vez que a aplicación estea activada, as solicitudes HTTP pódense usar a través dunha cabeceira de autenticación básica (Basic Auth) para\n\t\trealizar calquera das funcións listadas anteriormente. Hai dispoñíbel máis información na documentación da API \n\t\tde aprovisionamento, incluíndo exemplos de chamadas e respostas do servidor.", "Logged in user must be an administrator or have authorization to edit this setting." : "O usuario que accede debe ser de administración, de subadministración ou ter dereitos especiais para acceder a este axuste", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicación activa un conxunto de API que os sistemas externos poden usar para xestionar usuarios, grupos e aplicacións.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación activa un conxunto de API que os sistemas externos poden usar para crear, editar, eliminar e consultar os\n\t\tatributos do usuario, consultar, definir e retirar grupos, definir cota e consultar o almacenamento total\n\t\tutilizado en Nextcloud. Os usuarios administradores de grupos tamén poden consultar Nextcloud e realizar as\n\t\tmesmas funcións que a administración da instancia para os grupos que xestionan. A API tamén permite á administración\n\t\tconsultar aplicacións activas de Nextcloud, información da aplicación e activar ou desactivar unha aplicación remotamente.\n\t\tUnha vez que a aplicación estea activada, as solicitudes HTTP pódense usar a través dunha cabeceira de autenticación básica (Basic Auth) para\n\t\trealizar calquera das funcións listadas anteriormente. Hai dispoñíbel máis información na documentación da API \n\t\tde aprovisionamento, incluíndo exemplos de chamadas e respostas do servidor.", - "To send a password link to the user an email address is required." : "Para enviar unha ligazón de contrasinal ao usuario, requírese un enderezo de correo." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación activa un conxunto de API que os sistemas externos poden usar para crear, editar, eliminar e consultar os\n\t\tatributos do usuario, consultar, definir e retirar grupos, definir cota e consultar o almacenamento total\n\t\tutilizado en Nextcloud. Os usuarios administradores de grupos tamén poden consultar Nextcloud e realizar as\n\t\tmesmas funcións que a administración da instancia para os grupos que xestionan. A API tamén permite á administración\n\t\tconsultar aplicacións activas de Nextcloud, información da aplicación e activar ou desactivar unha aplicación remotamente.\n\t\tUnha vez que a aplicación estea activada, as solicitudes HTTP pódense usar a través dunha cabeceira de autenticación básica (Basic Auth) para\n\t\trealizar calquera das funcións listadas anteriormente. Hai dispoñíbel máis información na documentación da API \n\t\tde aprovisionamento, incluíndo exemplos de chamadas e respostas do servidor." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/gl.json b/apps/provisioning_api/l10n/gl.json index a93ffc011a0..7104fa2badc 100644 --- a/apps/provisioning_api/l10n/gl.json +++ b/apps/provisioning_api/l10n/gl.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación activa un conxunto de API que os sistemas externos poden usar para crear, editar, eliminar e consultar\n\t\tos atributos da conta, consultar, definir e retirar grupos, definir a cota e consultar o almacenamento total\n\t\tutilizado en Nextcloud. . As contas de administración de grupos tamén poden consultar Nextcloud e realizar as\n\t\tmesmas funcións que a administración da instancia para os grupos que xestionan. A API tamén permite á administración\n\t\tconsultar aplicacións activas de Nextcloud, información da aplicación e activar ou desactivar unha aplicación remotamente.\n\t\tUnha vez que a aplicación estea activada, as solicitudes HTTP pódense usar a través dunha cabeceira de autenticación básica (Basic Auth) para\n\t\trealizar calquera das funcións listadas anteriormente. Hai dispoñíbel máis información na documentación da API \n\t\tde aprovisionamento, incluíndo exemplos de chamadas e respostas do servidor.", "Logged in user must be an administrator or have authorization to edit this setting." : "O usuario que accede debe ser de administración, de subadministración ou ter dereitos especiais para acceder a este axuste", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicación activa un conxunto de API que os sistemas externos poden usar para xestionar usuarios, grupos e aplicacións.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación activa un conxunto de API que os sistemas externos poden usar para crear, editar, eliminar e consultar os\n\t\tatributos do usuario, consultar, definir e retirar grupos, definir cota e consultar o almacenamento total\n\t\tutilizado en Nextcloud. Os usuarios administradores de grupos tamén poden consultar Nextcloud e realizar as\n\t\tmesmas funcións que a administración da instancia para os grupos que xestionan. A API tamén permite á administración\n\t\tconsultar aplicacións activas de Nextcloud, información da aplicación e activar ou desactivar unha aplicación remotamente.\n\t\tUnha vez que a aplicación estea activada, as solicitudes HTTP pódense usar a través dunha cabeceira de autenticación básica (Basic Auth) para\n\t\trealizar calquera das funcións listadas anteriormente. Hai dispoñíbel máis información na documentación da API \n\t\tde aprovisionamento, incluíndo exemplos de chamadas e respostas do servidor.", - "To send a password link to the user an email address is required." : "Para enviar unha ligazón de contrasinal ao usuario, requírese un enderezo de correo." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicación activa un conxunto de API que os sistemas externos poden usar para crear, editar, eliminar e consultar os\n\t\tatributos do usuario, consultar, definir e retirar grupos, definir cota e consultar o almacenamento total\n\t\tutilizado en Nextcloud. Os usuarios administradores de grupos tamén poden consultar Nextcloud e realizar as\n\t\tmesmas funcións que a administración da instancia para os grupos que xestionan. A API tamén permite á administración\n\t\tconsultar aplicacións activas de Nextcloud, información da aplicación e activar ou desactivar unha aplicación remotamente.\n\t\tUnha vez que a aplicación estea activada, as solicitudes HTTP pódense usar a través dunha cabeceira de autenticación básica (Basic Auth) para\n\t\trealizar calquera das funcións listadas anteriormente. Hai dispoñíbel máis información na documentación da API \n\t\tde aprovisionamento, incluíndo exemplos de chamadas e respostas do servidor." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/ja.js b/apps/provisioning_api/l10n/ja.js index 6254d8566d4..ddbb980bde0 100644 --- a/apps/provisioning_api/l10n/ja.js +++ b/apps/provisioning_api/l10n/ja.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "このアプリケーションは、外部システムがNextcloudでアカウント属性を作成、編集、削除、クエリしたり、\n\t\tグループをクエリしたり、設定したり、削除したり、クォータを設定したり、使用されている総ストレージを\n\t\tクエリしたりするために使用できる一連のAPIを有効にします。グループ管理アカウントは、管理している\n\t\tグループに対して管理者と同じ機能を実行することができるだけでなく、Nextcloudをクエリすることもできます。\n\t\tこのAPIはまた、管理者がアクティブなNextcloudアプリケーションやアプリケーション情報をクエリし、アプリを\n\t\tリモートで有効または無効にすることも可能にします。アプリが有効になると、上記にリストされている機能を\n\t\t実行するために、Basic Authヘッダーを介したHTTPリクエストを使用することができます。詳細な情報や\n\t\tサンプルの呼び出し、サーバーからの応答などは、Provisioning APIのドキュメントで確認できます。", "Logged in user must be an administrator or have authorization to edit this setting." : "ログインユーザーは、管理者またはこの設定を編集する権限を持っている必要があります。", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "このアプリケーションは、外部システムがユーザー、グループ、アプリを管理するために使用できる一連のAPIを有効にします。", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "このアプリケーションにより、外部システムがユーザーの作成、編集、削除、クエリに使用できる一連のAPIが有効になります\n\t\t属性やクエリ、グループの設定と削除、クォータの設定、Nextcloudのストレージの容量チェック。グループ管理者ユーザーも\n\t\tNextcloudにクエリを実行し、管理者と同じ機能を管理するグループに実行することもできます。 APIではまた管理者が\n\t\tアクティブなNextcloudアプリケーション、アプリケーション情報を照会し、アプリをリモートで有効または無効にできます。\n\t\tこのアプリを有効にすると、基本認証ヘッダーを介したHTTPリクエストを使用して、上記の任意の機能を実行できます\n\t\t呼び出しの例など、詳細やサンプルの呼び出し方法、サーバーからの応答については、\n\t\tProvisioningAPIのドキュメントをご覧ください。", - "To send a password link to the user an email address is required." : "ユーザーにパスワードのリンクを送信するには、メールアドレスが必要です。" + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "このアプリケーションにより、外部システムがユーザーの作成、編集、削除、クエリに使用できる一連のAPIが有効になります\n\t\t属性やクエリ、グループの設定と削除、クォータの設定、Nextcloudのストレージの容量チェック。グループ管理者ユーザーも\n\t\tNextcloudにクエリを実行し、管理者と同じ機能を管理するグループに実行することもできます。 APIではまた管理者が\n\t\tアクティブなNextcloudアプリケーション、アプリケーション情報を照会し、アプリをリモートで有効または無効にできます。\n\t\tこのアプリを有効にすると、基本認証ヘッダーを介したHTTPリクエストを使用して、上記の任意の機能を実行できます\n\t\t呼び出しの例など、詳細やサンプルの呼び出し方法、サーバーからの応答については、\n\t\tProvisioningAPIのドキュメントをご覧ください。" }, "nplurals=1; plural=0;"); diff --git a/apps/provisioning_api/l10n/ja.json b/apps/provisioning_api/l10n/ja.json index eb0923072bc..c5cc795f535 100644 --- a/apps/provisioning_api/l10n/ja.json +++ b/apps/provisioning_api/l10n/ja.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "このアプリケーションは、外部システムがNextcloudでアカウント属性を作成、編集、削除、クエリしたり、\n\t\tグループをクエリしたり、設定したり、削除したり、クォータを設定したり、使用されている総ストレージを\n\t\tクエリしたりするために使用できる一連のAPIを有効にします。グループ管理アカウントは、管理している\n\t\tグループに対して管理者と同じ機能を実行することができるだけでなく、Nextcloudをクエリすることもできます。\n\t\tこのAPIはまた、管理者がアクティブなNextcloudアプリケーションやアプリケーション情報をクエリし、アプリを\n\t\tリモートで有効または無効にすることも可能にします。アプリが有効になると、上記にリストされている機能を\n\t\t実行するために、Basic Authヘッダーを介したHTTPリクエストを使用することができます。詳細な情報や\n\t\tサンプルの呼び出し、サーバーからの応答などは、Provisioning APIのドキュメントで確認できます。", "Logged in user must be an administrator or have authorization to edit this setting." : "ログインユーザーは、管理者またはこの設定を編集する権限を持っている必要があります。", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "このアプリケーションは、外部システムがユーザー、グループ、アプリを管理するために使用できる一連のAPIを有効にします。", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "このアプリケーションにより、外部システムがユーザーの作成、編集、削除、クエリに使用できる一連のAPIが有効になります\n\t\t属性やクエリ、グループの設定と削除、クォータの設定、Nextcloudのストレージの容量チェック。グループ管理者ユーザーも\n\t\tNextcloudにクエリを実行し、管理者と同じ機能を管理するグループに実行することもできます。 APIではまた管理者が\n\t\tアクティブなNextcloudアプリケーション、アプリケーション情報を照会し、アプリをリモートで有効または無効にできます。\n\t\tこのアプリを有効にすると、基本認証ヘッダーを介したHTTPリクエストを使用して、上記の任意の機能を実行できます\n\t\t呼び出しの例など、詳細やサンプルの呼び出し方法、サーバーからの応答については、\n\t\tProvisioningAPIのドキュメントをご覧ください。", - "To send a password link to the user an email address is required." : "ユーザーにパスワードのリンクを送信するには、メールアドレスが必要です。" + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "このアプリケーションにより、外部システムがユーザーの作成、編集、削除、クエリに使用できる一連のAPIが有効になります\n\t\t属性やクエリ、グループの設定と削除、クォータの設定、Nextcloudのストレージの容量チェック。グループ管理者ユーザーも\n\t\tNextcloudにクエリを実行し、管理者と同じ機能を管理するグループに実行することもできます。 APIではまた管理者が\n\t\tアクティブなNextcloudアプリケーション、アプリケーション情報を照会し、アプリをリモートで有効または無効にできます。\n\t\tこのアプリを有効にすると、基本認証ヘッダーを介したHTTPリクエストを使用して、上記の任意の機能を実行できます\n\t\t呼び出しの例など、詳細やサンプルの呼び出し方法、サーバーからの応答については、\n\t\tProvisioningAPIのドキュメントをご覧ください。" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/nb.js b/apps/provisioning_api/l10n/nb.js index 60f3be069fb..9bb0a68e62a 100644 --- a/apps/provisioning_api/l10n/nb.js +++ b/apps/provisioning_api/l10n/nb.js @@ -40,7 +40,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikasjonen aktiverer et sett med APIer som eksterne systemer kan bruke til å opprette, redigere, slette og spørre konto\n\t\tattributter, spørring, angi og fjern grupper, angi kvote og spørring total lagring brukt i Nextcloud. Kontoer for gruppeadministrator\n\t\tkan også spørre Nextcloud og utføre de samme funksjonene som en administrator for grupper de administrerer. API-en muliggjør også\n\t\ten administrator for å spørre etter aktive Nextcloud-applikasjoner, applikasjonsinformasjon og for å aktivere eller deaktivere en app eksternt.\n\t\tNår appen er aktivert, kan HTTP-forespørsler brukes via en Basic Auth-header for å utføre noen av funksjonene\n\t\tlistet ovenfor. Du finner mer informasjon i dokumentasjonen for Provisioning API, inkludert eksempelkall\n\t\tog serversvar.", "Logged in user must be an administrator or have authorization to edit this setting." : "Pålogget bruker må være administrator eller ha autorisasjon til å redigere denne innstillingen.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Denne applikasjonen muliggjør et sett med API-er som eksterne systemer kan bruke til å administrere brukere, grupper og apper.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikasjonen muliggjør et sett med APIer som eksterne systemer kan bruke til å opprette, redigere, slette og spørre brukere.\n\t\tattributter, spørring, angi og fjern grupper, angi kvote og spørring total lagring brukt i Nextcloud. Kontoer for gruppeadministrator\n\t\tkan også spørre Nextcloud og utføre de samme funksjonene som en administrator for grupper de administrerer. API-en muliggjør også\n\t\ten administrator for å spørre etter aktive Nextcloud-applikasjoner, applikasjonsinformasjon og for å aktivere eller deaktivere en app eksternt.\n\t\tNår appen er aktivert, kan HTTP-forespørsler brukes via en Basic Auth-header for å utføre noen av funksjonene\n\t\tlistet ovenfor. Du finner mer informasjon i dokumentasjonen for Provisioning API, inkludert eksempelkall\n\t\tog serversvar.", - "To send a password link to the user an email address is required." : "E-postadresse kreves for å sende passsord-lenke til bruker." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikasjonen muliggjør et sett med APIer som eksterne systemer kan bruke til å opprette, redigere, slette og spørre brukere.\n\t\tattributter, spørring, angi og fjern grupper, angi kvote og spørring total lagring brukt i Nextcloud. Kontoer for gruppeadministrator\n\t\tkan også spørre Nextcloud og utføre de samme funksjonene som en administrator for grupper de administrerer. API-en muliggjør også\n\t\ten administrator for å spørre etter aktive Nextcloud-applikasjoner, applikasjonsinformasjon og for å aktivere eller deaktivere en app eksternt.\n\t\tNår appen er aktivert, kan HTTP-forespørsler brukes via en Basic Auth-header for å utføre noen av funksjonene\n\t\tlistet ovenfor. Du finner mer informasjon i dokumentasjonen for Provisioning API, inkludert eksempelkall\n\t\tog serversvar." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/nb.json b/apps/provisioning_api/l10n/nb.json index 9dc14c86421..bc73e22ab53 100644 --- a/apps/provisioning_api/l10n/nb.json +++ b/apps/provisioning_api/l10n/nb.json @@ -38,7 +38,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikasjonen aktiverer et sett med APIer som eksterne systemer kan bruke til å opprette, redigere, slette og spørre konto\n\t\tattributter, spørring, angi og fjern grupper, angi kvote og spørring total lagring brukt i Nextcloud. Kontoer for gruppeadministrator\n\t\tkan også spørre Nextcloud og utføre de samme funksjonene som en administrator for grupper de administrerer. API-en muliggjør også\n\t\ten administrator for å spørre etter aktive Nextcloud-applikasjoner, applikasjonsinformasjon og for å aktivere eller deaktivere en app eksternt.\n\t\tNår appen er aktivert, kan HTTP-forespørsler brukes via en Basic Auth-header for å utføre noen av funksjonene\n\t\tlistet ovenfor. Du finner mer informasjon i dokumentasjonen for Provisioning API, inkludert eksempelkall\n\t\tog serversvar.", "Logged in user must be an administrator or have authorization to edit this setting." : "Pålogget bruker må være administrator eller ha autorisasjon til å redigere denne innstillingen.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Denne applikasjonen muliggjør et sett med API-er som eksterne systemer kan bruke til å administrere brukere, grupper og apper.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikasjonen muliggjør et sett med APIer som eksterne systemer kan bruke til å opprette, redigere, slette og spørre brukere.\n\t\tattributter, spørring, angi og fjern grupper, angi kvote og spørring total lagring brukt i Nextcloud. Kontoer for gruppeadministrator\n\t\tkan også spørre Nextcloud og utføre de samme funksjonene som en administrator for grupper de administrerer. API-en muliggjør også\n\t\ten administrator for å spørre etter aktive Nextcloud-applikasjoner, applikasjonsinformasjon og for å aktivere eller deaktivere en app eksternt.\n\t\tNår appen er aktivert, kan HTTP-forespørsler brukes via en Basic Auth-header for å utføre noen av funksjonene\n\t\tlistet ovenfor. Du finner mer informasjon i dokumentasjonen for Provisioning API, inkludert eksempelkall\n\t\tog serversvar.", - "To send a password link to the user an email address is required." : "E-postadresse kreves for å sende passsord-lenke til bruker." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Denne applikasjonen muliggjør et sett med APIer som eksterne systemer kan bruke til å opprette, redigere, slette og spørre brukere.\n\t\tattributter, spørring, angi og fjern grupper, angi kvote og spørring total lagring brukt i Nextcloud. Kontoer for gruppeadministrator\n\t\tkan også spørre Nextcloud og utføre de samme funksjonene som en administrator for grupper de administrerer. API-en muliggjør også\n\t\ten administrator for å spørre etter aktive Nextcloud-applikasjoner, applikasjonsinformasjon og for å aktivere eller deaktivere en app eksternt.\n\t\tNår appen er aktivert, kan HTTP-forespørsler brukes via en Basic Auth-header for å utføre noen av funksjonene\n\t\tlistet ovenfor. Du finner mer informasjon i dokumentasjonen for Provisioning API, inkludert eksempelkall\n\t\tog serversvar." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/pt_BR.js b/apps/provisioning_api/l10n/pt_BR.js index 90697236096..02607053904 100644 --- a/apps/provisioning_api/l10n/pt_BR.js +++ b/apps/provisioning_api/l10n/pt_BR.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Este aplicativo permite um conjunto de APIs que sistemas externos podem usar para criar, editar, excluir e consultar contas\n \t\t atributos, consultar, definir e remover grupos, definir cota e consultar o armazenamento total usado no Nextcloud. Contas de administrador de grupo \n\t\t também pode consultar o Nextcloud e executar as mesmas funções que um administrador para os grupos que gerencia. A API também permite\n \t\tum administrador para consultar aplicativos Nextcloud ativos, informações do aplicativo e ativar ou desativar um aplicativo remotamente.\n \t\tDepois que o aplicativo estiver ativado, as solicitações HTTP podem ser usadas por meio de um cabeçalho Basic Auth para executar qualquer uma das funções\n \t\tlistado acima. Mais informações estão disponíveis na documentação da API de provisionamento, incluindo exemplos de chamadas\n \t\te respostas do servidor.", "Logged in user must be an administrator or have authorization to edit this setting." : "O usuário conectado deve ser um administrador ou ter autorização para editar esta configuração. ", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Este aplicativo permite que um conjunto de APIs de sistemas externos possam ser usados para gerenciar usuários, grupos e aplicativos.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Este aplicativo permite um conjunto de APIs que os sistemas externos podem usar para criar, editar, excluir e consultar o usuário\n\t\tatributos, consulta, definir e remover grupos, definir cota e consultar o armazenamento total usado em Nextcloud. Usuários administradores de grupo\n\t\ttambém pode consultar o Nextcloud e executar as mesmas funções que um administrador para grupos que gerencia. A API também permite\n\t\tum administrador para consultar aplicativos Nextcloud ativos, informações de aplicativos e para habilitar ou desabilitar um aplicativo remotamente.\n\t\tDepois que o aplicativo é habilitado, as solicitações HTTP podem ser usadas por meio de um cabeçalho de autenticação básica para executar qualquer uma das funções\n\t\tlistado acima. Mais informações estão disponíveis na documentação da API de provisionamento, incluindo chamadas de exemplo\n\t\te respostas do servidor.", - "To send a password link to the user an email address is required." : "Para enviar um link de senha ao usuário, é necessário um endereço de e-mail." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Este aplicativo permite um conjunto de APIs que os sistemas externos podem usar para criar, editar, excluir e consultar o usuário\n\t\tatributos, consulta, definir e remover grupos, definir cota e consultar o armazenamento total usado em Nextcloud. Usuários administradores de grupo\n\t\ttambém pode consultar o Nextcloud e executar as mesmas funções que um administrador para grupos que gerencia. A API também permite\n\t\tum administrador para consultar aplicativos Nextcloud ativos, informações de aplicativos e para habilitar ou desabilitar um aplicativo remotamente.\n\t\tDepois que o aplicativo é habilitado, as solicitações HTTP podem ser usadas por meio de um cabeçalho de autenticação básica para executar qualquer uma das funções\n\t\tlistado acima. Mais informações estão disponíveis na documentação da API de provisionamento, incluindo chamadas de exemplo\n\t\te respostas do servidor." }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/provisioning_api/l10n/pt_BR.json b/apps/provisioning_api/l10n/pt_BR.json index c8ac34adfb1..30f7bf50f95 100644 --- a/apps/provisioning_api/l10n/pt_BR.json +++ b/apps/provisioning_api/l10n/pt_BR.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Este aplicativo permite um conjunto de APIs que sistemas externos podem usar para criar, editar, excluir e consultar contas\n \t\t atributos, consultar, definir e remover grupos, definir cota e consultar o armazenamento total usado no Nextcloud. Contas de administrador de grupo \n\t\t também pode consultar o Nextcloud e executar as mesmas funções que um administrador para os grupos que gerencia. A API também permite\n \t\tum administrador para consultar aplicativos Nextcloud ativos, informações do aplicativo e ativar ou desativar um aplicativo remotamente.\n \t\tDepois que o aplicativo estiver ativado, as solicitações HTTP podem ser usadas por meio de um cabeçalho Basic Auth para executar qualquer uma das funções\n \t\tlistado acima. Mais informações estão disponíveis na documentação da API de provisionamento, incluindo exemplos de chamadas\n \t\te respostas do servidor.", "Logged in user must be an administrator or have authorization to edit this setting." : "O usuário conectado deve ser um administrador ou ter autorização para editar esta configuração. ", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Este aplicativo permite que um conjunto de APIs de sistemas externos possam ser usados para gerenciar usuários, grupos e aplicativos.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Este aplicativo permite um conjunto de APIs que os sistemas externos podem usar para criar, editar, excluir e consultar o usuário\n\t\tatributos, consulta, definir e remover grupos, definir cota e consultar o armazenamento total usado em Nextcloud. Usuários administradores de grupo\n\t\ttambém pode consultar o Nextcloud e executar as mesmas funções que um administrador para grupos que gerencia. A API também permite\n\t\tum administrador para consultar aplicativos Nextcloud ativos, informações de aplicativos e para habilitar ou desabilitar um aplicativo remotamente.\n\t\tDepois que o aplicativo é habilitado, as solicitações HTTP podem ser usadas por meio de um cabeçalho de autenticação básica para executar qualquer uma das funções\n\t\tlistado acima. Mais informações estão disponíveis na documentação da API de provisionamento, incluindo chamadas de exemplo\n\t\te respostas do servidor.", - "To send a password link to the user an email address is required." : "Para enviar um link de senha ao usuário, é necessário um endereço de e-mail." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Este aplicativo permite um conjunto de APIs que os sistemas externos podem usar para criar, editar, excluir e consultar o usuário\n\t\tatributos, consulta, definir e remover grupos, definir cota e consultar o armazenamento total usado em Nextcloud. Usuários administradores de grupo\n\t\ttambém pode consultar o Nextcloud e executar as mesmas funções que um administrador para grupos que gerencia. A API também permite\n\t\tum administrador para consultar aplicativos Nextcloud ativos, informações de aplicativos e para habilitar ou desabilitar um aplicativo remotamente.\n\t\tDepois que o aplicativo é habilitado, as solicitações HTTP podem ser usadas por meio de um cabeçalho de autenticação básica para executar qualquer uma das funções\n\t\tlistado acima. Mais informações estão disponíveis na documentação da API de provisionamento, incluindo chamadas de exemplo\n\t\te respostas do servidor." },"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/provisioning_api/l10n/sr.js b/apps/provisioning_api/l10n/sr.js index 7f760b12a4c..acae681e8f3 100644 --- a/apps/provisioning_api/l10n/sr.js +++ b/apps/provisioning_api/l10n/sr.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Ова апликација укључује скуп API-апија које спољни ситеми могу да користе за креирање, уређивање, брисање корисника, постављају упите о\n\t\tатрибутима налога, креирају или уклањају групе, постављају упите о групама, постављају квоте и упите о укупном складишту које се користи у Nextcloud. Налози админ групе\n\t\tтакође могу да врше упит Nextcloud и обаве исте функције као админ за групе којима управљају. API такође омогућава\n\t\tадмину да врши упит о активним Nextcloud апликацијама, информацијама о апликацији и да даљински укључе или искључе апликацију.\n\t\tЈедном када се апликација укључи, било која функција наведена изнад може да се изврши прихватањем HTTP захтева кроз Basic Auth заглавље.\n\t\tВише информација се налази у докментацији за API добављања, као и примери позива\n\t\tи одговора сервера.", "Logged in user must be an administrator or have authorization to edit this setting." : "Пријављени корисник мора бити администратор или мора да има дозволу да измени ово подешавање.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Ова апликација укључује скуп API-ја које спољни системи могу да користе за управљање корисницима, групама и апликацијама.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Ова апликација укључује скуп API-апија које спољни ситеми могу да користе за креирање, уређивање, брисање корисника, постављају упите о\n\t\tатрибутима корисника, креирају или уклањају групе, постављају упите о групама, постављају квоте и упите о укупном складишту које се користи у Некстклауду. Корисници админ групе\n\t\tтакође могу да врше упит Некстклауду и обаве исте функције као админ за групе којима управљају. API такође омогућава\n\t\tадмину да врши упит о активним Некстклауд апликаицијама, информацијама о апликацији и да даљински укључе или искључе апликацију.\n\t\tЈедном када се апликација укључи, било која функција наведена изнад може да се изврши прихватањем HTTP захтева кроз Basic Auth заглавље.\n\t\tВише информација се налази у докментацији за API добављања, као и примери позива\n\t\tи одговора сервера.", - "To send a password link to the user an email address is required." : "Да бисте кориснику послали везу ка лозинци. потребна је адреса е-поште." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Ова апликација укључује скуп API-апија које спољни ситеми могу да користе за креирање, уређивање, брисање корисника, постављају упите о\n\t\tатрибутима корисника, креирају или уклањају групе, постављају упите о групама, постављају квоте и упите о укупном складишту које се користи у Некстклауду. Корисници админ групе\n\t\tтакође могу да врше упит Некстклауду и обаве исте функције као админ за групе којима управљају. API такође омогућава\n\t\tадмину да врши упит о активним Некстклауд апликаицијама, информацијама о апликацији и да даљински укључе или искључе апликацију.\n\t\tЈедном када се апликација укључи, било која функција наведена изнад може да се изврши прихватањем HTTP захтева кроз Basic Auth заглавље.\n\t\tВише информација се налази у докментацији за API добављања, као и примери позива\n\t\tи одговора сервера." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/provisioning_api/l10n/sr.json b/apps/provisioning_api/l10n/sr.json index d37a00383a7..800874f0072 100644 --- a/apps/provisioning_api/l10n/sr.json +++ b/apps/provisioning_api/l10n/sr.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Ова апликација укључује скуп API-апија које спољни ситеми могу да користе за креирање, уређивање, брисање корисника, постављају упите о\n\t\tатрибутима налога, креирају или уклањају групе, постављају упите о групама, постављају квоте и упите о укупном складишту које се користи у Nextcloud. Налози админ групе\n\t\tтакође могу да врше упит Nextcloud и обаве исте функције као админ за групе којима управљају. API такође омогућава\n\t\tадмину да врши упит о активним Nextcloud апликацијама, информацијама о апликацији и да даљински укључе или искључе апликацију.\n\t\tЈедном када се апликација укључи, било која функција наведена изнад може да се изврши прихватањем HTTP захтева кроз Basic Auth заглавље.\n\t\tВише информација се налази у докментацији за API добављања, као и примери позива\n\t\tи одговора сервера.", "Logged in user must be an administrator or have authorization to edit this setting." : "Пријављени корисник мора бити администратор или мора да има дозволу да измени ово подешавање.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Ова апликација укључује скуп API-ја које спољни системи могу да користе за управљање корисницима, групама и апликацијама.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Ова апликација укључује скуп API-апија које спољни ситеми могу да користе за креирање, уређивање, брисање корисника, постављају упите о\n\t\tатрибутима корисника, креирају или уклањају групе, постављају упите о групама, постављају квоте и упите о укупном складишту које се користи у Некстклауду. Корисници админ групе\n\t\tтакође могу да врше упит Некстклауду и обаве исте функције као админ за групе којима управљају. API такође омогућава\n\t\tадмину да врши упит о активним Некстклауд апликаицијама, информацијама о апликацији и да даљински укључе или искључе апликацију.\n\t\tЈедном када се апликација укључи, било која функција наведена изнад може да се изврши прихватањем HTTP захтева кроз Basic Auth заглавље.\n\t\tВише информација се налази у докментацији за API добављања, као и примери позива\n\t\tи одговора сервера.", - "To send a password link to the user an email address is required." : "Да бисте кориснику послали везу ка лозинци. потребна је адреса е-поште." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Ова апликација укључује скуп API-апија које спољни ситеми могу да користе за креирање, уређивање, брисање корисника, постављају упите о\n\t\tатрибутима корисника, креирају или уклањају групе, постављају упите о групама, постављају квоте и упите о укупном складишту које се користи у Некстклауду. Корисници админ групе\n\t\tтакође могу да врше упит Некстклауду и обаве исте функције као админ за групе којима управљају. API такође омогућава\n\t\tадмину да врши упит о активним Некстклауд апликаицијама, информацијама о апликацији и да даљински укључе или искључе апликацију.\n\t\tЈедном када се апликација укључи, било која функција наведена изнад може да се изврши прихватањем HTTP захтева кроз Basic Auth заглавље.\n\t\tВише информација се налази у докментацији за API добављања, као и примери позива\n\t\tи одговора сервера." },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/tr.js b/apps/provisioning_api/l10n/tr.js index 662c08ec323..5a602f8afbd 100644 --- a/apps/provisioning_api/l10n/tr.js +++ b/apps/provisioning_api/l10n/tr.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Bu uygulama, dış sistemlerin hesap özelliklerini eklemesi, düzenlemesi ve sorgulaması, grupları ayarlaması\n\t\tve silmesi ile Nextcloud tarafından kullanılan toplam depolama alanını sorgulaması için kullanabileceği\n\t\t bir dizi API uygulaması sağlar. Grup yöneticisi olan hesaplar da Nextcloud sorguları yürüterek yönettikleri\n\t\tgruplar üzerinde aynı işlemleri yöneticiler gibi yapabilirler. API uygulaması ayrıca etkin Nextcloud uygulamalarını\n\t\t ve uygulama bilgilerini sorgulayabilir ve uygulamaları uzaktan etkinleştirip, devre dışı bırakabilir. Uygulama\n\t\tetkinleştirildikten sonra yukarıdaki işlemleri yapmak için Temel Kimlik doğrulaması üst bilgisi ile HTTP istekleri\n\t\tkullanılabilir. Ayrıntılı bilgi almak ve örnek çağrılar ile sunucu yanıtlarını görmek için API hazırlama belgesine bakabilirsiniz.", "Logged in user must be an administrator or have authorization to edit this setting." : "Oturum açmış kullanıcı bir yönetici olmalı ya da bu ayarı düzenleme izni olmalıdır.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Bu uygulama, dış sistemlerin kullanıcıları, grupları ve uygulamaları yönetmek için kullanabileceği bir dizi API uygulaması sağlar.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Bu uygulama, dış sistemlerin kullanıcı özelliklerini eklemesi, düzenlemesi ve sorgulaması, grupları ayarlaması\n\t\tve silmesi ile Nextcloud tarafından kullanılan toplam depolama alanını sorgulaması için kullanabileceği\n\t\t bir dizi API uygulaması sağlar. Grup yöneticisi olan kullanıcılar da Nextcloud sorguları yürüterek yönettikleri\n\t\tgruplar üzerinde aynı işlemleri yöneticiler gibi yapabilirler. API uygulaması ayrıca etkin Nextcloud uygulamalarını\n\t\t ve uygulama bilgilerini sorgulayabilir ve uygulamaları uzaktan etkinleştirip, devre dışı bırakabilir. Uygulama\n\t\tetkinleştirildikten sonra yukarıdaki işlemleri yapmak için Temel Kimlik doğrulaması üst bilgisi ile HTTP istekleri\n\t\tkullanılabilir. Ayrıntılı bilgi almak ve örnek çağrılar ile sunucu yanıtlarını görmek için API hazırlama belgesine bakabilirsiniz.", - "To send a password link to the user an email address is required." : "Kullanıcı e-posta adresi, parola bağlantısının gönderilebilmesi için gereklidir." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Bu uygulama, dış sistemlerin kullanıcı özelliklerini eklemesi, düzenlemesi ve sorgulaması, grupları ayarlaması\n\t\tve silmesi ile Nextcloud tarafından kullanılan toplam depolama alanını sorgulaması için kullanabileceği\n\t\t bir dizi API uygulaması sağlar. Grup yöneticisi olan kullanıcılar da Nextcloud sorguları yürüterek yönettikleri\n\t\tgruplar üzerinde aynı işlemleri yöneticiler gibi yapabilirler. API uygulaması ayrıca etkin Nextcloud uygulamalarını\n\t\t ve uygulama bilgilerini sorgulayabilir ve uygulamaları uzaktan etkinleştirip, devre dışı bırakabilir. Uygulama\n\t\tetkinleştirildikten sonra yukarıdaki işlemleri yapmak için Temel Kimlik doğrulaması üst bilgisi ile HTTP istekleri\n\t\tkullanılabilir. Ayrıntılı bilgi almak ve örnek çağrılar ile sunucu yanıtlarını görmek için API hazırlama belgesine bakabilirsiniz." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/provisioning_api/l10n/tr.json b/apps/provisioning_api/l10n/tr.json index 9d39b730d90..5eee9b22912 100644 --- a/apps/provisioning_api/l10n/tr.json +++ b/apps/provisioning_api/l10n/tr.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Bu uygulama, dış sistemlerin hesap özelliklerini eklemesi, düzenlemesi ve sorgulaması, grupları ayarlaması\n\t\tve silmesi ile Nextcloud tarafından kullanılan toplam depolama alanını sorgulaması için kullanabileceği\n\t\t bir dizi API uygulaması sağlar. Grup yöneticisi olan hesaplar da Nextcloud sorguları yürüterek yönettikleri\n\t\tgruplar üzerinde aynı işlemleri yöneticiler gibi yapabilirler. API uygulaması ayrıca etkin Nextcloud uygulamalarını\n\t\t ve uygulama bilgilerini sorgulayabilir ve uygulamaları uzaktan etkinleştirip, devre dışı bırakabilir. Uygulama\n\t\tetkinleştirildikten sonra yukarıdaki işlemleri yapmak için Temel Kimlik doğrulaması üst bilgisi ile HTTP istekleri\n\t\tkullanılabilir. Ayrıntılı bilgi almak ve örnek çağrılar ile sunucu yanıtlarını görmek için API hazırlama belgesine bakabilirsiniz.", "Logged in user must be an administrator or have authorization to edit this setting." : "Oturum açmış kullanıcı bir yönetici olmalı ya da bu ayarı düzenleme izni olmalıdır.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Bu uygulama, dış sistemlerin kullanıcıları, grupları ve uygulamaları yönetmek için kullanabileceği bir dizi API uygulaması sağlar.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Bu uygulama, dış sistemlerin kullanıcı özelliklerini eklemesi, düzenlemesi ve sorgulaması, grupları ayarlaması\n\t\tve silmesi ile Nextcloud tarafından kullanılan toplam depolama alanını sorgulaması için kullanabileceği\n\t\t bir dizi API uygulaması sağlar. Grup yöneticisi olan kullanıcılar da Nextcloud sorguları yürüterek yönettikleri\n\t\tgruplar üzerinde aynı işlemleri yöneticiler gibi yapabilirler. API uygulaması ayrıca etkin Nextcloud uygulamalarını\n\t\t ve uygulama bilgilerini sorgulayabilir ve uygulamaları uzaktan etkinleştirip, devre dışı bırakabilir. Uygulama\n\t\tetkinleştirildikten sonra yukarıdaki işlemleri yapmak için Temel Kimlik doğrulaması üst bilgisi ile HTTP istekleri\n\t\tkullanılabilir. Ayrıntılı bilgi almak ve örnek çağrılar ile sunucu yanıtlarını görmek için API hazırlama belgesine bakabilirsiniz.", - "To send a password link to the user an email address is required." : "Kullanıcı e-posta adresi, parola bağlantısının gönderilebilmesi için gereklidir." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Bu uygulama, dış sistemlerin kullanıcı özelliklerini eklemesi, düzenlemesi ve sorgulaması, grupları ayarlaması\n\t\tve silmesi ile Nextcloud tarafından kullanılan toplam depolama alanını sorgulaması için kullanabileceği\n\t\t bir dizi API uygulaması sağlar. Grup yöneticisi olan kullanıcılar da Nextcloud sorguları yürüterek yönettikleri\n\t\tgruplar üzerinde aynı işlemleri yöneticiler gibi yapabilirler. API uygulaması ayrıca etkin Nextcloud uygulamalarını\n\t\t ve uygulama bilgilerini sorgulayabilir ve uygulamaları uzaktan etkinleştirip, devre dışı bırakabilir. Uygulama\n\t\tetkinleştirildikten sonra yukarıdaki işlemleri yapmak için Temel Kimlik doğrulaması üst bilgisi ile HTTP istekleri\n\t\tkullanılabilir. Ayrıntılı bilgi almak ve örnek çağrılar ile sunucu yanıtlarını görmek için API hazırlama belgesine bakabilirsiniz." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/uk.js b/apps/provisioning_api/l10n/uk.js index 2d84c9a10ad..019182bf7af 100644 --- a/apps/provisioning_api/l10n/uk.js +++ b/apps/provisioning_api/l10n/uk.js @@ -38,7 +38,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to manage accounts, groups and apps." : "Цей застосунок надає доступ до набору API, які можуть використовувати стоонні системи для керування обліковими записами, групами та застосунками.", "Logged in user must be an administrator or have authorization to edit this setting." : "Увійшовши в систему користувач повинен бути адміністратором або мати повноваження для редагування цього параметра.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Цей застосунок включає набір API, які зовнішні системи можуть використовувати для керування користувачами, групами та застосунками.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Цей застосунок підтримує набір API, які зовнішні системи можуть використовувати для створення, редагування, видалення та запитів користувача атрибути, запит, встановлення та видалення груп, встановлення квоти та запит загального обсягу пам’яті, що використовується в Nextcloud. Адміністратори групи користувачів також можуть надсилати запити Nextcloud і виконувати ті самі функції, що й адміністратори, для груп, якими вони керують. API також дозволяє адміністраторам надсилати запити до активних застосунків Nextcloud, отримувати інформацію про застосунок та віддалено вмикати чи вимикати застосунок. Після увімкнення застосунку HTTP-запити можна використовувати через заголовок Basic Auth для виконання будь-яких функцій, які перераховано вище. Додаткову інформацію можна знайти в документації Provisioning API включно з прикладами викликів та відповідей сервера.", - "To send a password link to the user an email address is required." : "Для відправки користувачу запароленого посилання, потрібна електронна адреса." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Цей застосунок підтримує набір API, які зовнішні системи можуть використовувати для створення, редагування, видалення та запитів користувача атрибути, запит, встановлення та видалення груп, встановлення квоти та запит загального обсягу пам’яті, що використовується в Nextcloud. Адміністратори групи користувачів також можуть надсилати запити Nextcloud і виконувати ті самі функції, що й адміністратори, для груп, якими вони керують. API також дозволяє адміністраторам надсилати запити до активних застосунків Nextcloud, отримувати інформацію про застосунок та віддалено вмикати чи вимикати застосунок. Після увімкнення застосунку HTTP-запити можна використовувати через заголовок Basic Auth для виконання будь-яких функцій, які перераховано вище. Додаткову інформацію можна знайти в документації Provisioning API включно з прикладами викликів та відповідей сервера." }, "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/apps/provisioning_api/l10n/uk.json b/apps/provisioning_api/l10n/uk.json index 7243569e698..c4b669e302c 100644 --- a/apps/provisioning_api/l10n/uk.json +++ b/apps/provisioning_api/l10n/uk.json @@ -36,7 +36,6 @@ "This application enables a set of APIs that external systems can use to manage accounts, groups and apps." : "Цей застосунок надає доступ до набору API, які можуть використовувати стоонні системи для керування обліковими записами, групами та застосунками.", "Logged in user must be an administrator or have authorization to edit this setting." : "Увійшовши в систему користувач повинен бути адміністратором або мати повноваження для редагування цього параметра.", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Цей застосунок включає набір API, які зовнішні системи можуть використовувати для керування користувачами, групами та застосунками.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Цей застосунок підтримує набір API, які зовнішні системи можуть використовувати для створення, редагування, видалення та запитів користувача атрибути, запит, встановлення та видалення груп, встановлення квоти та запит загального обсягу пам’яті, що використовується в Nextcloud. Адміністратори групи користувачів також можуть надсилати запити Nextcloud і виконувати ті самі функції, що й адміністратори, для груп, якими вони керують. API також дозволяє адміністраторам надсилати запити до активних застосунків Nextcloud, отримувати інформацію про застосунок та віддалено вмикати чи вимикати застосунок. Після увімкнення застосунку HTTP-запити можна використовувати через заголовок Basic Auth для виконання будь-яких функцій, які перераховано вище. Додаткову інформацію можна знайти в документації Provisioning API включно з прикладами викликів та відповідей сервера.", - "To send a password link to the user an email address is required." : "Для відправки користувачу запароленого посилання, потрібна електронна адреса." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Цей застосунок підтримує набір API, які зовнішні системи можуть використовувати для створення, редагування, видалення та запитів користувача атрибути, запит, встановлення та видалення груп, встановлення квоти та запит загального обсягу пам’яті, що використовується в Nextcloud. Адміністратори групи користувачів також можуть надсилати запити Nextcloud і виконувати ті самі функції, що й адміністратори, для груп, якими вони керують. API також дозволяє адміністраторам надсилати запити до активних застосунків Nextcloud, отримувати інформацію про застосунок та віддалено вмикати чи вимикати застосунок. Після увімкнення застосунку HTTP-запити можна використовувати через заголовок Basic Auth для виконання будь-яких функцій, які перераховано вище. Додаткову інформацію можна знайти в документації Provisioning API включно з прикладами викликів та відповідей сервера." },"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/apps/provisioning_api/l10n/zh_HK.js b/apps/provisioning_api/l10n/zh_HK.js index 10cfb26d338..a7a1bd924df 100644 --- a/apps/provisioning_api/l10n/zh_HK.js +++ b/apps/provisioning_api/l10n/zh_HK.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程序啟用了一組 API,外部系統可以使用它們來創建、編輯、刪除和查詢帳戶\n\t\t屬性、查詢、設置和刪除群組,設置配額以及查詢 Nextcloud 中使用的總存儲量。群組管理員帳戶\n\t\t還可以查詢 Nextcloud,並為其管理的組執行與管理員相同的功能。該 API 還支持\n\t\t管理員查詢活動的 Nextcloud 應用程序、應用程序信息,以及遠程啟用或禁用應用程序。\n\t\t啟用該應用後,可以通過基本身分驗證標頭使用 HTTP 請求執行\n以上所列任何功能。Provisioning API 文檔中提供了更多信息,包括示例調用\n\t\t和伺服器響應。", "Logged in user must be an administrator or have authorization to edit this setting." : "登錄用戶必須是管理員或有編輯此設置的授權。", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "此應用程序啟用了一組 API ,外部系統可以使用這些 API 來管理用戶、組和應用程序。", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程序啟用了一組 API,外部系統可以使用它們來創建、編輯、刪除和查詢用戶\n\t\t屬性、查詢、設置和刪除組,設置配額以及查詢 Nextcloud 中使用的總存儲量。組管理員用戶\n\t\t還可以查詢 Nextcloud,並為其管理的組執行與管理員相同的功能。該 API 還支持\n\t\t管理員查詢活動的 Nextcloud 應用程序、應用程序信息,以及遠程啟用或禁用應用程序。\n\t\t啟用該應用後,可以通過基本身分驗證標頭使用 HTTP 請求執行\n以上所列任何功能。Provisioning API 文檔中提供了更多信息,包括示例調用\n\t\t和伺服器響應。", - "To send a password link to the user an email address is required." : "要寄出密碼連結給用戶之前需要設定電郵地址" + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程序啟用了一組 API,外部系統可以使用它們來創建、編輯、刪除和查詢用戶\n\t\t屬性、查詢、設置和刪除組,設置配額以及查詢 Nextcloud 中使用的總存儲量。組管理員用戶\n\t\t還可以查詢 Nextcloud,並為其管理的組執行與管理員相同的功能。該 API 還支持\n\t\t管理員查詢活動的 Nextcloud 應用程序、應用程序信息,以及遠程啟用或禁用應用程序。\n\t\t啟用該應用後,可以通過基本身分驗證標頭使用 HTTP 請求執行\n以上所列任何功能。Provisioning API 文檔中提供了更多信息,包括示例調用\n\t\t和伺服器響應。" }, "nplurals=1; plural=0;"); diff --git a/apps/provisioning_api/l10n/zh_HK.json b/apps/provisioning_api/l10n/zh_HK.json index f3f0e2b75d7..40d3b8e7c05 100644 --- a/apps/provisioning_api/l10n/zh_HK.json +++ b/apps/provisioning_api/l10n/zh_HK.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程序啟用了一組 API,外部系統可以使用它們來創建、編輯、刪除和查詢帳戶\n\t\t屬性、查詢、設置和刪除群組,設置配額以及查詢 Nextcloud 中使用的總存儲量。群組管理員帳戶\n\t\t還可以查詢 Nextcloud,並為其管理的組執行與管理員相同的功能。該 API 還支持\n\t\t管理員查詢活動的 Nextcloud 應用程序、應用程序信息,以及遠程啟用或禁用應用程序。\n\t\t啟用該應用後,可以通過基本身分驗證標頭使用 HTTP 請求執行\n以上所列任何功能。Provisioning API 文檔中提供了更多信息,包括示例調用\n\t\t和伺服器響應。", "Logged in user must be an administrator or have authorization to edit this setting." : "登錄用戶必須是管理員或有編輯此設置的授權。", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "此應用程序啟用了一組 API ,外部系統可以使用這些 API 來管理用戶、組和應用程序。", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程序啟用了一組 API,外部系統可以使用它們來創建、編輯、刪除和查詢用戶\n\t\t屬性、查詢、設置和刪除組,設置配額以及查詢 Nextcloud 中使用的總存儲量。組管理員用戶\n\t\t還可以查詢 Nextcloud,並為其管理的組執行與管理員相同的功能。該 API 還支持\n\t\t管理員查詢活動的 Nextcloud 應用程序、應用程序信息,以及遠程啟用或禁用應用程序。\n\t\t啟用該應用後,可以通過基本身分驗證標頭使用 HTTP 請求執行\n以上所列任何功能。Provisioning API 文檔中提供了更多信息,包括示例調用\n\t\t和伺服器響應。", - "To send a password link to the user an email address is required." : "要寄出密碼連結給用戶之前需要設定電郵地址" + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程序啟用了一組 API,外部系統可以使用它們來創建、編輯、刪除和查詢用戶\n\t\t屬性、查詢、設置和刪除組,設置配額以及查詢 Nextcloud 中使用的總存儲量。組管理員用戶\n\t\t還可以查詢 Nextcloud,並為其管理的組執行與管理員相同的功能。該 API 還支持\n\t\t管理員查詢活動的 Nextcloud 應用程序、應用程序信息,以及遠程啟用或禁用應用程序。\n\t\t啟用該應用後,可以通過基本身分驗證標頭使用 HTTP 請求執行\n以上所列任何功能。Provisioning API 文檔中提供了更多信息,包括示例調用\n\t\t和伺服器響應。" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/zh_TW.js b/apps/provisioning_api/l10n/zh_TW.js index 451e316700c..1bdb73e147e 100644 --- a/apps/provisioning_api/l10n/zh_TW.js +++ b/apps/provisioning_api/l10n/zh_TW.js @@ -41,7 +41,6 @@ OC.L10N.register( "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程式啟用了一組 API,外部系統可以使用其來建立、編輯、刪除與查詢帳號\n\t\t屬性,查詢、設定與移除群組,設定配額與查詢 Nextcloud 中使用的總儲存空間。群組管理員帳號\n\t\t也可以用其來查詢 Nextcloud,並在其管理的群組中執行與系統管理員相同的動作。這組 API 也讓\n\t\t管理員可以查詢作用中的 Nextcloud 應用程式、應用程式資訊,以及遠端啟用或停用應用程式。\n\t\t應用程式啟用後,可以使用基本驗證標頭來使用 HTTP 請求執行上面\n\t\t列出的任何功能。更多資訊在 Provisioning API 的文件中提供,包含範例呼叫\n\t\t與伺服器回應。", "Logged in user must be an administrator or have authorization to edit this setting." : "登入的使用者必須為管理員,或是有權編輯此設定的使用者。", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "此應用程式啟用了一組 API,讓外部系統可以用來管理使用者、群組與應用程式。", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程式啟用了一組 API,讓外部系統可以用來\n\t\t建立、編輯、刪除與查詢使用者的特性、查詢,設定以及移除群組、設定配額等,還有\n\t\t查詢 Nextcloud 中使用的總計儲存空間。群組管理員使用者也可以用來查詢 Nextcloud,\n\t\t並在其管理的群組中執行與系統管理員相同的動作。這組 API 也讓管理員可以查詢\n\t\t作用中的 Nextcloud 應用程式、應用程式資訊,以及遠端啟用或停用應用程式。\n\t\t應用程式啟用後,可以使用基本認證標頭來使用 HTTP 請求執行上面列出的任何功能。\n\t\t更多資訊在 Provisioning API 的文件中提供,包含範例呼叫與伺服器回應。", - "To send a password link to the user an email address is required." : "要寄出密碼連結給使用者之前需要設定一組 email 位址" + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程式啟用了一組 API,讓外部系統可以用來\n\t\t建立、編輯、刪除與查詢使用者的特性、查詢,設定以及移除群組、設定配額等,還有\n\t\t查詢 Nextcloud 中使用的總計儲存空間。群組管理員使用者也可以用來查詢 Nextcloud,\n\t\t並在其管理的群組中執行與系統管理員相同的動作。這組 API 也讓管理員可以查詢\n\t\t作用中的 Nextcloud 應用程式、應用程式資訊,以及遠端啟用或停用應用程式。\n\t\t應用程式啟用後,可以使用基本認證標頭來使用 HTTP 請求執行上面列出的任何功能。\n\t\t更多資訊在 Provisioning API 的文件中提供,包含範例呼叫與伺服器回應。" }, "nplurals=1; plural=0;"); diff --git a/apps/provisioning_api/l10n/zh_TW.json b/apps/provisioning_api/l10n/zh_TW.json index d119d381883..73b70bb26ca 100644 --- a/apps/provisioning_api/l10n/zh_TW.json +++ b/apps/provisioning_api/l10n/zh_TW.json @@ -39,7 +39,6 @@ "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程式啟用了一組 API,外部系統可以使用其來建立、編輯、刪除與查詢帳號\n\t\t屬性,查詢、設定與移除群組,設定配額與查詢 Nextcloud 中使用的總儲存空間。群組管理員帳號\n\t\t也可以用其來查詢 Nextcloud,並在其管理的群組中執行與系統管理員相同的動作。這組 API 也讓\n\t\t管理員可以查詢作用中的 Nextcloud 應用程式、應用程式資訊,以及遠端啟用或停用應用程式。\n\t\t應用程式啟用後,可以使用基本驗證標頭來使用 HTTP 請求執行上面\n\t\t列出的任何功能。更多資訊在 Provisioning API 的文件中提供,包含範例呼叫\n\t\t與伺服器回應。", "Logged in user must be an administrator or have authorization to edit this setting." : "登入的使用者必須為管理員,或是有權編輯此設定的使用者。", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "此應用程式啟用了一組 API,讓外部系統可以用來管理使用者、群組與應用程式。", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程式啟用了一組 API,讓外部系統可以用來\n\t\t建立、編輯、刪除與查詢使用者的特性、查詢,設定以及移除群組、設定配額等,還有\n\t\t查詢 Nextcloud 中使用的總計儲存空間。群組管理員使用者也可以用來查詢 Nextcloud,\n\t\t並在其管理的群組中執行與系統管理員相同的動作。這組 API 也讓管理員可以查詢\n\t\t作用中的 Nextcloud 應用程式、應用程式資訊,以及遠端啟用或停用應用程式。\n\t\t應用程式啟用後,可以使用基本認證標頭來使用 HTTP 請求執行上面列出的任何功能。\n\t\t更多資訊在 Provisioning API 的文件中提供,包含範例呼叫與伺服器回應。", - "To send a password link to the user an email address is required." : "要寄出密碼連結給使用者之前需要設定一組 email 位址" + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "此應用程式啟用了一組 API,讓外部系統可以用來\n\t\t建立、編輯、刪除與查詢使用者的特性、查詢,設定以及移除群組、設定配額等,還有\n\t\t查詢 Nextcloud 中使用的總計儲存空間。群組管理員使用者也可以用來查詢 Nextcloud,\n\t\t並在其管理的群組中執行與系統管理員相同的動作。這組 API 也讓管理員可以查詢\n\t\t作用中的 Nextcloud 應用程式、應用程式資訊,以及遠端啟用或停用應用程式。\n\t\t應用程式啟用後,可以使用基本認證標頭來使用 HTTP 請求執行上面列出的任何功能。\n\t\t更多資訊在 Provisioning API 的文件中提供,包含範例呼叫與伺服器回應。" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php index 5770ca39bda..95b8840509a 100644 --- a/apps/provisioning_api/lib/Controller/UsersController.php +++ b/apps/provisioning_api/lib/Controller/UsersController.php @@ -259,21 +259,21 @@ class UsersController extends AUserData { /* We have to handle offset ourselve for correctness */ $tempLimit = ($limit === null ? null : $limit + $offset); foreach ($subAdminOfGroups as $group) { - $users = array_merge( + $users = array_unique(array_merge( $users, array_map( fn (IUser $user): string => $user->getUID(), array_filter( - $group->searchUsers($search, ($tempLimit === null ? null : $tempLimit - count($users))), + $group->searchUsers($search), fn (IUser $user): bool => !$user->isEnabled() ) ) - ); + )); if (($tempLimit !== null) && (count($users) >= $tempLimit)) { break; } } - $users = array_slice($users, $offset); + $users = array_slice($users, $offset, $limit); } $usersDetails = []; @@ -459,7 +459,7 @@ class UsersController extends AUserData { $group = $this->groupManager->get($groupid); // Check if group exists if ($group === null) { - throw new OCSException($this->l10n->t('Sub-admin group does not exist'), 102); + throw new OCSException($this->l10n->t('Sub-admin group does not exist'), 109); } // Check if trying to make subadmin of admin group if ($group->getGID() === 'admin') { @@ -479,7 +479,7 @@ class UsersController extends AUserData { } if ($password === '') { if ($email === '') { - throw new OCSException($this->l10n->t('To send a password link to the user an email address is required.'), 108); + throw new OCSException($this->l10n->t('An email address is required, to send a password link to the user.'), 108); } $passwordEvent = new GenerateSecurePasswordEvent(); @@ -963,7 +963,7 @@ class UsersController extends AUserData { } // Check if permitted to edit this field if (!in_array($key, $permittedFields)) { - throw new OCSException('', 103); + throw new OCSException('', 113); } // Process the edit switch ($key) { @@ -984,14 +984,14 @@ class UsersController extends AUserData { $quota = \OCP\Util::computerFileSize($quota); } if ($quota === false) { - throw new OCSException($this->l10n->t('Invalid quota value: %1$s', [$value]), 102); + throw new OCSException($this->l10n->t('Invalid quota value: %1$s', [$value]), 101); } if ($quota === -1) { $quota = 'none'; } else { $maxQuota = (int) $this->config->getAppValue('files', 'max_quota', '-1'); if ($maxQuota !== -1 && $quota > $maxQuota) { - throw new OCSException($this->l10n->t('Invalid quota value. %1$s is exceeding the maximum quota', [$value]), 102); + throw new OCSException($this->l10n->t('Invalid quota value. %1$s is exceeding the maximum quota', [$value]), 101); } $quota = \OCP\Util::humanFileSize($quota); } @@ -1000,7 +1000,7 @@ class UsersController extends AUserData { if ($quota === 'none') { $allowUnlimitedQuota = $this->config->getAppValue('files', 'allow_unlimited_quota', '1') === '1'; if (!$allowUnlimitedQuota) { - throw new OCSException($this->l10n->t('Unlimited quota is forbidden on this instance'), 102); + throw new OCSException($this->l10n->t('Unlimited quota is forbidden on this instance'), 101); } } $targetUser->setQuota($quota); @@ -1011,26 +1011,26 @@ class UsersController extends AUserData { case self::USER_FIELD_PASSWORD: try { if (strlen($value) > IUserManager::MAX_PASSWORD_LENGTH) { - throw new OCSException($this->l10n->t('Invalid password value'), 102); + throw new OCSException($this->l10n->t('Invalid password value'), 101); } if (!$targetUser->canChangePassword()) { - throw new OCSException($this->l10n->t('Setting the password is not supported by the users backend'), 103); + throw new OCSException($this->l10n->t('Setting the password is not supported by the users backend'), 112); } $targetUser->setPassword($value); } catch (HintException $e) { // password policy error - throw new OCSException($e->getMessage(), 103); + throw new OCSException($e->getMessage(), 107); } break; case self::USER_FIELD_LANGUAGE: $languagesCodes = $this->l10nFactory->findAvailableLanguages(); if (!in_array($value, $languagesCodes, true) && $value !== 'en') { - throw new OCSException($this->l10n->t('Invalid language'), 102); + throw new OCSException($this->l10n->t('Invalid language'), 101); } $this->config->setUserValue($targetUser->getUID(), 'core', 'lang', $value); break; case self::USER_FIELD_LOCALE: if (!$this->l10nFactory->localeExists($value)) { - throw new OCSException($this->l10n->t('Invalid locale'), 102); + throw new OCSException($this->l10n->t('Invalid locale'), 101); } $this->config->setUserValue($targetUser->getUID(), 'core', 'locale', $value); break; @@ -1051,14 +1051,14 @@ class UsersController extends AUserData { } } if (!$success) { - throw new OCSException('', 102); + throw new OCSException('', 101); } break; case IAccountManager::PROPERTY_EMAIL: if (filter_var($value, FILTER_VALIDATE_EMAIL) || $value === '') { $targetUser->setEMailAddress($value); } else { - throw new OCSException('', 102); + throw new OCSException('', 101); } break; case IAccountManager::COLLECTION_EMAIL: @@ -1067,13 +1067,13 @@ class UsersController extends AUserData { $mailCollection = $userAccount->getPropertyCollection(IAccountManager::COLLECTION_EMAIL); if ($mailCollection->getPropertyByValue($value)) { - throw new OCSException('', 102); + throw new OCSException('', 101); } $mailCollection->addPropertyWithDefaults($value); $this->accountManager->updateAccount($userAccount); } else { - throw new OCSException('', 102); + throw new OCSException('', 101); } break; case IAccountManager::PROPERTY_PHONE: @@ -1095,7 +1095,7 @@ class UsersController extends AUserData { $this->knownUserService->deleteByContactUserId($targetUser->getUID()); } } catch (InvalidArgumentException $e) { - throw new OCSException('Invalid ' . $e->getMessage(), 102); + throw new OCSException('Invalid ' . $e->getMessage(), 101); } } } catch (PropertyDoesNotExistException $e) { @@ -1104,7 +1104,7 @@ class UsersController extends AUserData { try { $this->accountManager->updateAccount($userAccount); } catch (InvalidArgumentException $e) { - throw new OCSException('Invalid ' . $e->getMessage(), 102); + throw new OCSException('Invalid ' . $e->getMessage(), 101); } break; case IAccountManager::PROPERTY_PROFILE_ENABLED: @@ -1140,12 +1140,12 @@ class UsersController extends AUserData { $userProperty->setScope($value); $this->accountManager->updateAccount($userAccount); } catch (InvalidArgumentException $e) { - throw new OCSException('Invalid ' . $e->getMessage(), 102); + throw new OCSException('Invalid ' . $e->getMessage(), 101); } } break; default: - throw new OCSException('', 103); + throw new OCSException('', 113); } return new DataResponse(); } diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index 5c4493b9e77..3bfea4a1194 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -248,6 +248,131 @@ class UsersControllerTest extends TestCase { $this->assertEquals($expected, $this->api->getUsers('MyCustomSearch')->getData()); } + private function createUserMock(string $uid, bool $enabled): MockObject|IUser { + $mockUser = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $mockUser + ->method('getUID') + ->willReturn($uid); + $mockUser + ->method('isEnabled') + ->willReturn($enabled); + return $mockUser; + } + + public function testGetDisabledUsersAsAdmin(): void { + $loggedInUser = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $loggedInUser + ->expects($this->once()) + ->method('getUID') + ->willReturn('admin'); + $this->userSession + ->expects($this->atLeastOnce()) + ->method('getUser') + ->willReturn($loggedInUser); + $this->groupManager + ->expects($this->once()) + ->method('isAdmin') + ->willReturn(true); + $this->userManager + ->expects($this->once()) + ->method('getDisabledUsers') + ->with(3, 0, 'MyCustomSearch') + ->willReturn([ + $this->createUserMock('admin', false), + $this->createUserMock('foo', false), + $this->createUserMock('bar', false), + ]); + + $expected = [ + 'users' => [ + 'admin' => ['id' => 'admin'], + 'foo' => ['id' => 'foo'], + 'bar' => ['id' => 'bar'], + ], + ]; + $this->assertEquals($expected, $this->api->getDisabledUsersDetails('MyCustomSearch', 3)->getData()); + } + + public function testGetDisabledUsersAsSubAdmin(): void { + $loggedInUser = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $loggedInUser + ->expects($this->once()) + ->method('getUID') + ->willReturn('subadmin'); + $this->userSession + ->expects($this->atLeastOnce()) + ->method('getUser') + ->willReturn($loggedInUser); + $this->groupManager + ->expects($this->once()) + ->method('isAdmin') + ->willReturn(false); + $firstGroup = $this->getMockBuilder('OCP\IGroup') + ->disableOriginalConstructor() + ->getMock(); + $secondGroup = $this->getMockBuilder('OCP\IGroup') + ->disableOriginalConstructor() + ->getMock(); + $subAdminManager = $this->getMockBuilder('OC\SubAdmin') + ->disableOriginalConstructor()->getMock(); + $subAdminManager + ->expects($this->once()) + ->method('isSubAdmin') + ->with($loggedInUser) + ->willReturn(true); + $subAdminManager + ->expects($this->once()) + ->method('getSubAdminsGroups') + ->with($loggedInUser) + ->willReturn([$firstGroup, $secondGroup]); + $this->groupManager + ->expects($this->once()) + ->method('getSubAdmin') + ->willReturn($subAdminManager); + $this->groupManager + ->expects($this->never()) + ->method('displayNamesInGroup'); + + $firstGroup + ->expects($this->once()) + ->method('searchUsers') + ->with('MyCustomSearch') + ->willReturn([ + $this->createUserMock('user1', false), + $this->createUserMock('bob', true), + $this->createUserMock('user2', false), + $this->createUserMock('alice', true), + ]); + + $secondGroup + ->expects($this->once()) + ->method('searchUsers') + ->with('MyCustomSearch') + ->willReturn([ + $this->createUserMock('user2', false), + $this->createUserMock('joe', true), + $this->createUserMock('user3', false), + $this->createUserMock('jim', true), + $this->createUserMock('john', true), + ]); + + + $expected = [ + 'users' => [ + 'user1' => ['id' => 'user1'], + 'user2' => ['id' => 'user2'], + 'user3' => ['id' => 'user3'], + ], + ]; + $this->assertEquals($expected, $this->api->getDisabledUsersDetails('MyCustomSearch', 3)->getData()); + } + public function testAddUserAlreadyExisting() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); @@ -1651,7 +1776,7 @@ class UsersControllerTest extends TestCase { ->with($userAccount); $this->expectException(OCSException::class); - $this->expectExceptionCode(102); + $this->expectExceptionCode(101); $this->api->editUser('UserToEdit', 'additional_mail', 'demo@nextcloud.com')->getData(); } @@ -1710,13 +1835,13 @@ class UsersControllerTest extends TestCase { ->with($userAccount); $this->expectException(OCSException::class); - $this->expectExceptionCode(102); + $this->expectExceptionCode(101); $this->api->editUser('UserToEdit', 'additional_mail', 'demo1@nextcloud.com')->getData(); } public function testEditUserRegularUserSelfEditChangeEmailInvalid() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); - $this->expectExceptionCode(102); + $this->expectExceptionCode(101); $loggedInUser = $this->getMockBuilder(IUser::class) ->disableOriginalConstructor() @@ -1948,7 +2073,7 @@ class UsersControllerTest extends TestCase { public function testEditUserRegularUserSelfEditChangeQuota() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); - $this->expectExceptionCode(103); + $this->expectExceptionCode(113); $loggedInUser = $this->getMockBuilder(IUser::class) ->disableOriginalConstructor() @@ -2035,7 +2160,7 @@ class UsersControllerTest extends TestCase { public function testEditUserAdminUserSelfEditChangeInvalidQuota() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); $this->expectExceptionMessage('Invalid quota value: ABC'); - $this->expectExceptionCode(102); + $this->expectExceptionCode(101); $loggedInUser = $this->getMockBuilder(IUser::class)->disableOriginalConstructor()->getMock(); $loggedInUser diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js index 12c4fec4906..61fea4135c2 100644 --- a/apps/settings/l10n/ar.js +++ b/apps/settings/l10n/ar.js @@ -142,7 +142,7 @@ OC.L10N.register( "There are some administration imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "توجد بعض شهادات SSL المستوردة من الإدارة، والتي لم تعد تُستخدم مع نكست كلاود 21. و يمكن استيرادها عبر الأمر السطري: \n\"occ Security:certificates:import\". مساراتها في دليل البيانات معروضة أدناه.", "Code integrity" : "سلامة الكود", "Integrity checker has been disabled. Integrity cannot be verified." : "فاحص سلامة الكود مٌعطّل. بسبب ذلك لا يمكن التحقق من السلامة.", - "No altered files" : "لا توجد أية ملفات تم تغييرها", + "No altered files" : "لا توجد أي ملفات تم تغييرها", "Some files have not passed the integrity check. {link1} {link2}" : "بعض الملفات لم تتمكن من اجتياز فحص السلامة. {link1} {link2}", "Cron errors" : "أخطاء تطبيق الخلفية Cron", "It was not possible to execute the cron job via CLI. The following technical errors have appeared:\n%s" : "لم يكن ممكناً تنفيذ مهام الخلفية cron باستعمال واجهة الأوامر السطرية CLI. الأخطاء التالية ظهرت:\n%s", @@ -806,7 +806,7 @@ OC.L10N.register( "There are some errors regarding your setup." : "هناك بعض الأخطاء في إعداداتك.", "There are some warnings regarding your setup." : "هناك بعض التحذيرات بخصوص إعداداتك.", "Checking for system and security issues." : "التحقق من مشاكل النظام والأمان.", - "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "يرجى إعادة التحقُّق مرة أخرى من<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\"> أدلة التنصيب ↗</a>، والتحقق من وجود أية أخطاء أو تحذيرات في <a href=\"%2$s\">سجل أنشطة </a>.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "يرجى إعادة التحقُّق مرة أخرى من<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\"> أدلة التنصيب ↗</a>، والتحقق من وجود أي أخطاء أو تحذيرات في <a href=\"%2$s\">سجل أنشطة </a>.", "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "تحقق من أمان نكست كلاود عندك من خلال <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">اختبار فحص الأمان من طرفنا our security scan↗</a>.", "Reasons to use Nextcloud in your organization" : "أسباب تدعوك لاستعمال نكست كلاود في مؤسستك", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "تم تطويره بواسطة {communityopen} مجتمع نكست كلاود {linkclose} الـ {githubopen} كود المصدري {linkclose} مُرخّصٌ تحت {licenseopen}رخصة AGPL {linkclose}.", @@ -898,7 +898,7 @@ OC.L10N.register( "Creating group …" : "إنشاء مجموعة ...", "User group: {group}" : "مجموعة المستخدِم: {group}", "Not available as federation has been disabled for your account, contact your system administrator if you have any questions" : "غير متاح حيث تم تعطيل الاتحاد بالنسبة لحسابك، إتصل بمدير النظام إذا كان لديك أي أسئلة", - "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "غير مُتاحٍ لأن نشر البيانات الخاصة بالمستخدم إلى خادم البحث غير مسموح به. إتّصل بمدير النظام إذا كان لديك أيّة أسئلة", + "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "غير مُتاحٍ لأن نشر البيانات الخاصة بالمستخدم إلى خادم البحث غير مسموح به. إتّصل بمدير النظام إذا كان لديك أي أسئلة", "Show to logged in users only" : "عرض للمستخدمين المسجل دخولهم فقط", "Nextcloud help resources" : "موارد \"مُساعَدَة نكست كلاود\"", "SMTP Username" : "اسم مستخدم الـ SMTP", diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json index 936b9f65455..a2f6c3bd043 100644 --- a/apps/settings/l10n/ar.json +++ b/apps/settings/l10n/ar.json @@ -140,7 +140,7 @@ "There are some administration imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "توجد بعض شهادات SSL المستوردة من الإدارة، والتي لم تعد تُستخدم مع نكست كلاود 21. و يمكن استيرادها عبر الأمر السطري: \n\"occ Security:certificates:import\". مساراتها في دليل البيانات معروضة أدناه.", "Code integrity" : "سلامة الكود", "Integrity checker has been disabled. Integrity cannot be verified." : "فاحص سلامة الكود مٌعطّل. بسبب ذلك لا يمكن التحقق من السلامة.", - "No altered files" : "لا توجد أية ملفات تم تغييرها", + "No altered files" : "لا توجد أي ملفات تم تغييرها", "Some files have not passed the integrity check. {link1} {link2}" : "بعض الملفات لم تتمكن من اجتياز فحص السلامة. {link1} {link2}", "Cron errors" : "أخطاء تطبيق الخلفية Cron", "It was not possible to execute the cron job via CLI. The following technical errors have appeared:\n%s" : "لم يكن ممكناً تنفيذ مهام الخلفية cron باستعمال واجهة الأوامر السطرية CLI. الأخطاء التالية ظهرت:\n%s", @@ -804,7 +804,7 @@ "There are some errors regarding your setup." : "هناك بعض الأخطاء في إعداداتك.", "There are some warnings regarding your setup." : "هناك بعض التحذيرات بخصوص إعداداتك.", "Checking for system and security issues." : "التحقق من مشاكل النظام والأمان.", - "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "يرجى إعادة التحقُّق مرة أخرى من<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\"> أدلة التنصيب ↗</a>، والتحقق من وجود أية أخطاء أو تحذيرات في <a href=\"%2$s\">سجل أنشطة </a>.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "يرجى إعادة التحقُّق مرة أخرى من<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\"> أدلة التنصيب ↗</a>، والتحقق من وجود أي أخطاء أو تحذيرات في <a href=\"%2$s\">سجل أنشطة </a>.", "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "تحقق من أمان نكست كلاود عندك من خلال <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">اختبار فحص الأمان من طرفنا our security scan↗</a>.", "Reasons to use Nextcloud in your organization" : "أسباب تدعوك لاستعمال نكست كلاود في مؤسستك", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "تم تطويره بواسطة {communityopen} مجتمع نكست كلاود {linkclose} الـ {githubopen} كود المصدري {linkclose} مُرخّصٌ تحت {licenseopen}رخصة AGPL {linkclose}.", @@ -896,7 +896,7 @@ "Creating group …" : "إنشاء مجموعة ...", "User group: {group}" : "مجموعة المستخدِم: {group}", "Not available as federation has been disabled for your account, contact your system administrator if you have any questions" : "غير متاح حيث تم تعطيل الاتحاد بالنسبة لحسابك، إتصل بمدير النظام إذا كان لديك أي أسئلة", - "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "غير مُتاحٍ لأن نشر البيانات الخاصة بالمستخدم إلى خادم البحث غير مسموح به. إتّصل بمدير النظام إذا كان لديك أيّة أسئلة", + "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "غير مُتاحٍ لأن نشر البيانات الخاصة بالمستخدم إلى خادم البحث غير مسموح به. إتّصل بمدير النظام إذا كان لديك أي أسئلة", "Show to logged in users only" : "عرض للمستخدمين المسجل دخولهم فقط", "Nextcloud help resources" : "موارد \"مُساعَدَة نكست كلاود\"", "SMTP Username" : "اسم مستخدم الـ SMTP", diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js index cb084d2d648..f239e024382 100644 --- a/apps/settings/l10n/de_DE.js +++ b/apps/settings/l10n/de_DE.js @@ -710,6 +710,7 @@ OC.L10N.register( "Loading categories" : "Lade Kategorien", "Developer documentation ↗" : "Entwickler-Dokumentation ↗", "Version {version}, {license}-licensed" : "Version {version}, {license}-lizensiert", + "Version {version}" : "Version {version}", "All accounts" : "Alle Konten", "Admins" : "Administration", "Account group: {group}" : "Kontengruppe: {group}", @@ -753,6 +754,9 @@ OC.L10N.register( "Show to logged in accounts only" : "Nur angemeldeten Konten anzeigen", "Hide" : "Ausblenden", "manual-install apps cannot be updated" : "manual-install Apps können nicht aktualisiert werden", + "{progress}% Deploying …" : "{progress}% bereitstellen ...", + "{progress}% Initializing …" : "{progress}% Initialisierung ...", + "Health checking" : "Gesundheitsprüfung", "Deploy and Enable" : "Bereitstellen und Aktivieren", "Download and enable" : "Herunterladen und aktivieren", "Disable" : "Deaktivieren", diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json index dfb174a0694..b65ca6ca0fa 100644 --- a/apps/settings/l10n/de_DE.json +++ b/apps/settings/l10n/de_DE.json @@ -708,6 +708,7 @@ "Loading categories" : "Lade Kategorien", "Developer documentation ↗" : "Entwickler-Dokumentation ↗", "Version {version}, {license}-licensed" : "Version {version}, {license}-lizensiert", + "Version {version}" : "Version {version}", "All accounts" : "Alle Konten", "Admins" : "Administration", "Account group: {group}" : "Kontengruppe: {group}", @@ -751,6 +752,9 @@ "Show to logged in accounts only" : "Nur angemeldeten Konten anzeigen", "Hide" : "Ausblenden", "manual-install apps cannot be updated" : "manual-install Apps können nicht aktualisiert werden", + "{progress}% Deploying …" : "{progress}% bereitstellen ...", + "{progress}% Initializing …" : "{progress}% Initialisierung ...", + "Health checking" : "Gesundheitsprüfung", "Deploy and Enable" : "Bereitstellen und Aktivieren", "Download and enable" : "Herunterladen und aktivieren", "Disable" : "Deaktivieren", diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js index 1ea02deb7e3..67ba162311c 100644 --- a/apps/settings/l10n/en_GB.js +++ b/apps/settings/l10n/en_GB.js @@ -710,6 +710,7 @@ OC.L10N.register( "Loading categories" : "Loading categories", "Developer documentation ↗" : "Developer documentation ↗", "Version {version}, {license}-licensed" : "Version {version}, {license}-licensed", + "Version {version}" : "Version {version}", "All accounts" : "All accounts", "Admins" : "Admins", "Account group: {group}" : "Account group: {group}", @@ -753,6 +754,9 @@ OC.L10N.register( "Show to logged in accounts only" : "Show to logged in accounts only", "Hide" : "Hide", "manual-install apps cannot be updated" : "manual-install apps cannot be updated", + "{progress}% Deploying …" : "{progress}% Deploying …", + "{progress}% Initializing …" : "{progress}% Initializing …", + "Health checking" : "Health checking", "Deploy and Enable" : "Deploy and Enable", "Download and enable" : "Download and enable", "Disable" : "Disable", diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json index 4364e09ed84..874797231e7 100644 --- a/apps/settings/l10n/en_GB.json +++ b/apps/settings/l10n/en_GB.json @@ -708,6 +708,7 @@ "Loading categories" : "Loading categories", "Developer documentation ↗" : "Developer documentation ↗", "Version {version}, {license}-licensed" : "Version {version}, {license}-licensed", + "Version {version}" : "Version {version}", "All accounts" : "All accounts", "Admins" : "Admins", "Account group: {group}" : "Account group: {group}", @@ -751,6 +752,9 @@ "Show to logged in accounts only" : "Show to logged in accounts only", "Hide" : "Hide", "manual-install apps cannot be updated" : "manual-install apps cannot be updated", + "{progress}% Deploying …" : "{progress}% Deploying …", + "{progress}% Initializing …" : "{progress}% Initializing …", + "Health checking" : "Health checking", "Deploy and Enable" : "Deploy and Enable", "Download and enable" : "Download and enable", "Disable" : "Disable", diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js index b2fcef370bb..67b20c71e94 100644 --- a/apps/settings/l10n/gl.js +++ b/apps/settings/l10n/gl.js @@ -710,6 +710,7 @@ OC.L10N.register( "Loading categories" : "Cargando categorías", "Developer documentation ↗" : "Documentación para desenvolvedores ↗", "Version {version}, {license}-licensed" : "Versión {version}, con licenza {license}", + "Version {version}" : "Versión {version}", "All accounts" : "Todas as contas", "Admins" : "Administración", "Account group: {group}" : "Grupo de contas: {group}", @@ -753,6 +754,9 @@ OC.L10N.register( "Show to logged in accounts only" : "Amosar só ás contas iniciadas", "Hide" : "Agochar", "manual-install apps cannot be updated" : "non é posíbel actualizar as aplicacións de instalación manual", + "{progress}% Deploying …" : "{progress}% Despregando…", + "{progress}% Initializing …" : "{progress}% Iniciando…", + "Health checking" : "Control de integridade", "Deploy and Enable" : "Despregar e activar", "Download and enable" : "Descargar e activar", "Disable" : "Desactivar", diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json index a6bc7a47f98..60c1fc9f627 100644 --- a/apps/settings/l10n/gl.json +++ b/apps/settings/l10n/gl.json @@ -708,6 +708,7 @@ "Loading categories" : "Cargando categorías", "Developer documentation ↗" : "Documentación para desenvolvedores ↗", "Version {version}, {license}-licensed" : "Versión {version}, con licenza {license}", + "Version {version}" : "Versión {version}", "All accounts" : "Todas as contas", "Admins" : "Administración", "Account group: {group}" : "Grupo de contas: {group}", @@ -751,6 +752,9 @@ "Show to logged in accounts only" : "Amosar só ás contas iniciadas", "Hide" : "Agochar", "manual-install apps cannot be updated" : "non é posíbel actualizar as aplicacións de instalación manual", + "{progress}% Deploying …" : "{progress}% Despregando…", + "{progress}% Initializing …" : "{progress}% Iniciando…", + "Health checking" : "Control de integridade", "Deploy and Enable" : "Despregar e activar", "Download and enable" : "Descargar e activar", "Disable" : "Desactivar", diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js index 13a166a9128..2a35fc9e9eb 100644 --- a/apps/settings/l10n/pl.js +++ b/apps/settings/l10n/pl.js @@ -56,6 +56,7 @@ OC.L10N.register( "Wrong password" : "Złe hasło", "Unable to change personal password" : "Nie można zmienić osobistego hasła", "Saved" : "Zapisano", + "No Login supplied" : "Nie podano loginu", "Unable to change password. Password too long." : "Nie można zmienić hasła. Hasło jest za długie.", "Authentication error" : "Błąd uwierzytelniania", "Please provide an admin recovery password; otherwise, all account data will be lost." : "Podaj hasło odzyskiwania administratora; w przeciwnym razie wszystkie dane konta zostaną utracone.", @@ -71,6 +72,7 @@ OC.L10N.register( "Email could not be sent. Check your mail server log" : "E-mail nie został wysłany. Sprawdź logi swojego serwera poczty", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Wystąpił problem podczas wysyłania wiadomości e-mail. Zmień ustawienia. (Błąd: %s)", "You need to set your account email before being able to send test emails. Go to %s for that." : "Zanim będziesz mógł wysyłać wiadomości testowe, musisz ustawić adres e-mail swojego konta. Idź do %s, aby to zrobić.", + "Recently active" : "Ostatnio aktywny", "Disabled accounts" : "Wyłączone konta", "Invalid account" : "Nieprawidłowe konto", "Invalid mail address" : "Nieprawidłowy adres e-mail", @@ -98,6 +100,7 @@ OC.L10N.register( "Welcome aboard" : "Witamy na pokładzie", "Welcome aboard %s" : "Witamy na pokładzie %s", "Welcome to your %s account, you can add, protect, and share your data." : "Witamy na koncie %s, możesz dodawać, chronić i udostępniać swoje dane.", + "Your Login is: %s" : "Twój login to: %s", "Set your password" : "Ustaw hasło", "Go to %s" : "Przejdź do %s", "Install Client" : "Zainstaluj klienta", @@ -118,9 +121,14 @@ OC.L10N.register( "Personal info" : "Informacje osobiste", "Mobile & desktop" : "Mobilne i stacjonarne", "Email server" : "Serwer poczty", + "Security & setup checks" : "Kontrole bezpieczeństwa i konfiguracji", "Background jobs" : "Zadania w tle", "Unlimited" : "Bez limitu", "Verifying" : "Sprawdzanie", + "Allowed admin IP ranges" : "Dozwolone zakresy adresów IP administratora", + "Admin IP filtering isn’t applied." : "Filtrowanie adresów IP administratora nie jest stosowane.", + "Admin IP filtering is correctly configured." : "Filtrowanie adresów IP administratora jest poprawnie skonfigurowane.", + "App directories owner" : "Właściciel katalogów aplikacji", "Brute-force Throttle" : "Przepustowość brute-force", "Your remote address could not be determined." : "Nie można określić Twojego adresu zdalnego.", "Your remote address was identified as \"%s\" and is brute-force throttled at the moment slowing down the performance of various requests. If the remote address is not your address this can be an indication that a proxy is not configured correctly." : "Twój zdalny adres został zidentyfikowany jako \"%s\" i obecnie jest ograniczany metodą brute-force, co spowalnia wykonywanie różnych żądań. Jeśli adres zdalny nie jest Twoim adresem, może to oznaczać, że serwer proxy nie jest poprawnie skonfigurowany.", @@ -251,7 +259,10 @@ OC.L10N.register( "Set default expiration date for shares via link or mail" : "Ustaw domyślną datę wygaśnięcia udostępnień za pośrednictwem linku lub poczty", "Default expiration time of shares in days" : "Domyślny czas wygaśnięcia udostępnień w dniach", "Privacy settings for sharing" : "Ustawienia prywatności dotyczące udostępniania", + "Allow account name autocompletion in share dialog and allow access to the system address book" : "Zezwól na automatyczne uzupełnianie nazwy konta w oknie udostępniania i zezwól na dostęp do systemowej książki adresowej", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Jeśli automatyczne uzupełnianie \"ta sama grupa\" i \"integracja numeru telefonu\" są włączone, wystarczy dopasowanie w jednej z nich, aby pokazać użytkownikowi.", + "Restrict account name autocompletion and system address book access to users within the same groups" : "Ogranicz autouzupełnianie nazwy konta i dostęp do systemowej książki adresowej do użytkowników w tych samych grupach", + "Restrict account name autocompletion to users based on phone number integration" : "Ogranicz automatyczne uzupełnianie nazwy konta do użytkowników w oparciu o integrację numeru telefonu", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Zezwalaj na autouzupełnianie podczas wpisywania pełnej nazwy lub adresu e-mail (ignorując brak dopasowania książki telefonicznej i bycie w tej samej grupie)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Pokaż tekst zastrzeżenia na stronie przesyłania linków publicznych (wyświetlane tylko wtedy, gdy lista plików jest ukryta)", "Disclaimer text" : "Tekst zastrzeżenia", @@ -480,9 +491,12 @@ OC.L10N.register( "Language" : "Język", "Set default language" : "Ustaw domyślny język", "Manager" : "Menedżer", + "Account name will be autogenerated" : "Nazwa konta zostanie wygenerowana automatycznie", + "Account name (required)" : "Nazwa konta (wymagane)", "Total rows summary" : "Podsumowanie wszystkich wierszy", "Scroll to load more rows" : "Przewiń, aby załadować więcej wierszy", "Avatar" : "Awatar", + "Account name" : "Nazwa konta", "Group admin for" : "Administrator grupy", "Storage location" : "Lokalizacja magazynu", "Last login" : "Ostatnio zalogowany", @@ -547,8 +561,12 @@ OC.L10N.register( "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Jako administrator możesz zoptymalizować ustawienia udostępniania. Szczegółowe informacje znajdziesz w dokumentacji.", "You need to enable the File sharing App." : "Musisz włączyć aplikację do udostępniania plików.", "Loading app list" : "Wczytywanie listy aplikacji", + "App Store" : "Sklep aplikacji", "Loading categories" : "Wczytywanie kategorii", "Developer documentation ↗" : "Dokumentacja deweloperska ↗", + "Version {version}, {license}-licensed" : "Wersja {version}, {license}-licencjonowana", + "Version {version}" : "Wersja {version}", + "All accounts" : "Wszystkie konta", "Admins" : "Administratorzy", "Account group: {group}" : "Grupa kont: {group}", "Account management" : "Zarządzanie kontem", diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json index 49495158b07..f5436f70026 100644 --- a/apps/settings/l10n/pl.json +++ b/apps/settings/l10n/pl.json @@ -54,6 +54,7 @@ "Wrong password" : "Złe hasło", "Unable to change personal password" : "Nie można zmienić osobistego hasła", "Saved" : "Zapisano", + "No Login supplied" : "Nie podano loginu", "Unable to change password. Password too long." : "Nie można zmienić hasła. Hasło jest za długie.", "Authentication error" : "Błąd uwierzytelniania", "Please provide an admin recovery password; otherwise, all account data will be lost." : "Podaj hasło odzyskiwania administratora; w przeciwnym razie wszystkie dane konta zostaną utracone.", @@ -69,6 +70,7 @@ "Email could not be sent. Check your mail server log" : "E-mail nie został wysłany. Sprawdź logi swojego serwera poczty", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Wystąpił problem podczas wysyłania wiadomości e-mail. Zmień ustawienia. (Błąd: %s)", "You need to set your account email before being able to send test emails. Go to %s for that." : "Zanim będziesz mógł wysyłać wiadomości testowe, musisz ustawić adres e-mail swojego konta. Idź do %s, aby to zrobić.", + "Recently active" : "Ostatnio aktywny", "Disabled accounts" : "Wyłączone konta", "Invalid account" : "Nieprawidłowe konto", "Invalid mail address" : "Nieprawidłowy adres e-mail", @@ -96,6 +98,7 @@ "Welcome aboard" : "Witamy na pokładzie", "Welcome aboard %s" : "Witamy na pokładzie %s", "Welcome to your %s account, you can add, protect, and share your data." : "Witamy na koncie %s, możesz dodawać, chronić i udostępniać swoje dane.", + "Your Login is: %s" : "Twój login to: %s", "Set your password" : "Ustaw hasło", "Go to %s" : "Przejdź do %s", "Install Client" : "Zainstaluj klienta", @@ -116,9 +119,14 @@ "Personal info" : "Informacje osobiste", "Mobile & desktop" : "Mobilne i stacjonarne", "Email server" : "Serwer poczty", + "Security & setup checks" : "Kontrole bezpieczeństwa i konfiguracji", "Background jobs" : "Zadania w tle", "Unlimited" : "Bez limitu", "Verifying" : "Sprawdzanie", + "Allowed admin IP ranges" : "Dozwolone zakresy adresów IP administratora", + "Admin IP filtering isn’t applied." : "Filtrowanie adresów IP administratora nie jest stosowane.", + "Admin IP filtering is correctly configured." : "Filtrowanie adresów IP administratora jest poprawnie skonfigurowane.", + "App directories owner" : "Właściciel katalogów aplikacji", "Brute-force Throttle" : "Przepustowość brute-force", "Your remote address could not be determined." : "Nie można określić Twojego adresu zdalnego.", "Your remote address was identified as \"%s\" and is brute-force throttled at the moment slowing down the performance of various requests. If the remote address is not your address this can be an indication that a proxy is not configured correctly." : "Twój zdalny adres został zidentyfikowany jako \"%s\" i obecnie jest ograniczany metodą brute-force, co spowalnia wykonywanie różnych żądań. Jeśli adres zdalny nie jest Twoim adresem, może to oznaczać, że serwer proxy nie jest poprawnie skonfigurowany.", @@ -249,7 +257,10 @@ "Set default expiration date for shares via link or mail" : "Ustaw domyślną datę wygaśnięcia udostępnień za pośrednictwem linku lub poczty", "Default expiration time of shares in days" : "Domyślny czas wygaśnięcia udostępnień w dniach", "Privacy settings for sharing" : "Ustawienia prywatności dotyczące udostępniania", + "Allow account name autocompletion in share dialog and allow access to the system address book" : "Zezwól na automatyczne uzupełnianie nazwy konta w oknie udostępniania i zezwól na dostęp do systemowej książki adresowej", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Jeśli automatyczne uzupełnianie \"ta sama grupa\" i \"integracja numeru telefonu\" są włączone, wystarczy dopasowanie w jednej z nich, aby pokazać użytkownikowi.", + "Restrict account name autocompletion and system address book access to users within the same groups" : "Ogranicz autouzupełnianie nazwy konta i dostęp do systemowej książki adresowej do użytkowników w tych samych grupach", + "Restrict account name autocompletion to users based on phone number integration" : "Ogranicz automatyczne uzupełnianie nazwy konta do użytkowników w oparciu o integrację numeru telefonu", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Zezwalaj na autouzupełnianie podczas wpisywania pełnej nazwy lub adresu e-mail (ignorując brak dopasowania książki telefonicznej i bycie w tej samej grupie)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Pokaż tekst zastrzeżenia na stronie przesyłania linków publicznych (wyświetlane tylko wtedy, gdy lista plików jest ukryta)", "Disclaimer text" : "Tekst zastrzeżenia", @@ -478,9 +489,12 @@ "Language" : "Język", "Set default language" : "Ustaw domyślny język", "Manager" : "Menedżer", + "Account name will be autogenerated" : "Nazwa konta zostanie wygenerowana automatycznie", + "Account name (required)" : "Nazwa konta (wymagane)", "Total rows summary" : "Podsumowanie wszystkich wierszy", "Scroll to load more rows" : "Przewiń, aby załadować więcej wierszy", "Avatar" : "Awatar", + "Account name" : "Nazwa konta", "Group admin for" : "Administrator grupy", "Storage location" : "Lokalizacja magazynu", "Last login" : "Ostatnio zalogowany", @@ -545,8 +559,12 @@ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Jako administrator możesz zoptymalizować ustawienia udostępniania. Szczegółowe informacje znajdziesz w dokumentacji.", "You need to enable the File sharing App." : "Musisz włączyć aplikację do udostępniania plików.", "Loading app list" : "Wczytywanie listy aplikacji", + "App Store" : "Sklep aplikacji", "Loading categories" : "Wczytywanie kategorii", "Developer documentation ↗" : "Dokumentacja deweloperska ↗", + "Version {version}, {license}-licensed" : "Wersja {version}, {license}-licencjonowana", + "Version {version}" : "Wersja {version}", + "All accounts" : "Wszystkie konta", "Admins" : "Administratorzy", "Account group: {group}" : "Grupa kont: {group}", "Account management" : "Zarządzanie kontem", diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js index b8a9b607058..9aa7eeb6193 100644 --- a/apps/settings/l10n/zh_TW.js +++ b/apps/settings/l10n/zh_TW.js @@ -710,6 +710,7 @@ OC.L10N.register( "Loading categories" : "正在載入分類", "Developer documentation ↗" : "開發者文件 ↗", "Version {version}, {license}-licensed" : "版本 {version},授權條款:{license}", + "Version {version}" : "版本 {version}", "All accounts" : "所有帳號", "Admins" : "管理員", "Account group: {group}" : "帳號群組:{group}", @@ -753,6 +754,9 @@ OC.L10N.register( "Show to logged in accounts only" : "僅對已登入的帳號顯示", "Hide" : "隱藏", "manual-install apps cannot be updated" : "無法更新手動安裝應用程式", + "{progress}% Deploying …" : "{progress}% 正在部署……", + "{progress}% Initializing …" : "{progress}% 正在初始化……", + "Health checking" : "健康檢查", "Deploy and Enable" : "部署與啟用", "Download and enable" : "下載並啟用", "Disable" : "停用", diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json index 1f349239c0a..d304fb98390 100644 --- a/apps/settings/l10n/zh_TW.json +++ b/apps/settings/l10n/zh_TW.json @@ -708,6 +708,7 @@ "Loading categories" : "正在載入分類", "Developer documentation ↗" : "開發者文件 ↗", "Version {version}, {license}-licensed" : "版本 {version},授權條款:{license}", + "Version {version}" : "版本 {version}", "All accounts" : "所有帳號", "Admins" : "管理員", "Account group: {group}" : "帳號群組:{group}", @@ -751,6 +752,9 @@ "Show to logged in accounts only" : "僅對已登入的帳號顯示", "Hide" : "隱藏", "manual-install apps cannot be updated" : "無法更新手動安裝應用程式", + "{progress}% Deploying …" : "{progress}% 正在部署……", + "{progress}% Initializing …" : "{progress}% 正在初始化……", + "Health checking" : "健康檢查", "Deploy and Enable" : "部署與啟用", "Download and enable" : "下載並啟用", "Disable" : "停用", diff --git a/apps/systemtags/l10n/da.js b/apps/systemtags/l10n/da.js index 442a47a73c4..22762cdbae4 100644 --- a/apps/systemtags/l10n/da.js +++ b/apps/systemtags/l10n/da.js @@ -42,9 +42,10 @@ OC.L10N.register( "Public" : "Offentlig", "Restricted" : "Begrænset", "Invisible" : "Usynlig", + "No tags found" : "Ingen tags fundet", + "Cancel" : "Annullér", "Failed to load tags" : "Kunne ikke indlæse tags.", "Open in Files" : "Åben i Filer", - "No tags found" : "Ingen tags fundet", "This file has the tag {tag}" : "Denne fil har tagget {tag}", "This file has the tags {firstTags} and {lastTag}" : "Denne fil har taggene {firstTags} og {lastTag}", "No files in here" : "Her er ingen filer", diff --git a/apps/systemtags/l10n/da.json b/apps/systemtags/l10n/da.json index e8ec1ec3fbe..43f9dceb09c 100644 --- a/apps/systemtags/l10n/da.json +++ b/apps/systemtags/l10n/da.json @@ -40,9 +40,10 @@ "Public" : "Offentlig", "Restricted" : "Begrænset", "Invisible" : "Usynlig", + "No tags found" : "Ingen tags fundet", + "Cancel" : "Annullér", "Failed to load tags" : "Kunne ikke indlæse tags.", "Open in Files" : "Åben i Filer", - "No tags found" : "Ingen tags fundet", "This file has the tag {tag}" : "Denne fil har tagget {tag}", "This file has the tags {firstTags} and {lastTag}" : "Denne fil har taggene {firstTags} og {lastTag}", "No files in here" : "Her er ingen filer", diff --git a/apps/systemtags/l10n/de_DE.js b/apps/systemtags/l10n/de_DE.js index b1cdf0f6395..44be76fc85c 100644 --- a/apps/systemtags/l10n/de_DE.js +++ b/apps/systemtags/l10n/de_DE.js @@ -66,8 +66,17 @@ OC.L10N.register( "Deleted tag" : "Schlagwort gelöscht", "Failed to delete tag" : "Fehler beim Löschen des Schlagwortes", "Manage tags" : "Schlagworte verwalten", + "Applying tags changes…" : "Schlagwort-Änderungen werden angewendet…", + "Search or create tag" : "Schlagwort suchen oder erstellen", + "Create tag" : "Schlagwort erstellen", "No tags found" : "Keine Schlagworte gefunden", + "Select or create tags to apply to all selected files" : "Schlagwort auswählen oder erstellen, die auf alle ausgewählten Dateien angewendet werden sollen", "Cancel" : "Abbrechen", + "Apply changes" : "Änderungen anwenden", + "{displayName} (hidden)" : "{displayName} (versteckt)", + "{displayName} (restricted)" : "{displayName} (eingeschränkt)", + "Failed to apply tags changes" : "Schlagwort-Änderungen konnten nicht angewendet werden", + "File tags modification canceled" : "Änderung der Datei-Schlagwörter abgebrochen", "Loading collaborative tags …" : "Lade kollaborative Schlagworte …", "Search or create collaborative tags" : "Suchen oder erstellen von kollaborativen Schlagworten", "No tags to select, type to create a new tag" : "Keine Schlagworte zur Auswahl, geben Sie ein, um ein neues Schlagwort zu erstellen", @@ -79,8 +88,10 @@ OC.L10N.register( "Open in Files" : "In Dateien öffnen", "List of tags and their associated files and folders." : "Liste der Schlagworte und der zugehörigen Dateien und Ordner.", "Tags you have created will show up here." : "Die von Ihnen erstellten Schlagworte werden hier angezeigt.", + "Failed to load tag" : "Schlagwort konnte nicht geladen werden", "Failed to load last used tags" : "Zuletzt verwendete Schlagworte konnten nicht geladen werden", "Missing \"Content-Location\" header" : "Fehlender \"Content-Location\"-Header", + "A tag with the same name already exists" : "Ein Schlagwort mit demselben Namen existiert bereits", "Failed to load tags for file" : "Schlagworte für Datei konnten nicht geladen werden", "Failed to set tag for file" : "Schlagwort für Datei konnte nicht gesetzt werden", "Failed to delete tag for file" : "Schlagwort für Datei konnte nicht gelöscht werden", diff --git a/apps/systemtags/l10n/de_DE.json b/apps/systemtags/l10n/de_DE.json index deffa8b29f1..877fe7914f9 100644 --- a/apps/systemtags/l10n/de_DE.json +++ b/apps/systemtags/l10n/de_DE.json @@ -64,8 +64,17 @@ "Deleted tag" : "Schlagwort gelöscht", "Failed to delete tag" : "Fehler beim Löschen des Schlagwortes", "Manage tags" : "Schlagworte verwalten", + "Applying tags changes…" : "Schlagwort-Änderungen werden angewendet…", + "Search or create tag" : "Schlagwort suchen oder erstellen", + "Create tag" : "Schlagwort erstellen", "No tags found" : "Keine Schlagworte gefunden", + "Select or create tags to apply to all selected files" : "Schlagwort auswählen oder erstellen, die auf alle ausgewählten Dateien angewendet werden sollen", "Cancel" : "Abbrechen", + "Apply changes" : "Änderungen anwenden", + "{displayName} (hidden)" : "{displayName} (versteckt)", + "{displayName} (restricted)" : "{displayName} (eingeschränkt)", + "Failed to apply tags changes" : "Schlagwort-Änderungen konnten nicht angewendet werden", + "File tags modification canceled" : "Änderung der Datei-Schlagwörter abgebrochen", "Loading collaborative tags …" : "Lade kollaborative Schlagworte …", "Search or create collaborative tags" : "Suchen oder erstellen von kollaborativen Schlagworten", "No tags to select, type to create a new tag" : "Keine Schlagworte zur Auswahl, geben Sie ein, um ein neues Schlagwort zu erstellen", @@ -77,8 +86,10 @@ "Open in Files" : "In Dateien öffnen", "List of tags and their associated files and folders." : "Liste der Schlagworte und der zugehörigen Dateien und Ordner.", "Tags you have created will show up here." : "Die von Ihnen erstellten Schlagworte werden hier angezeigt.", + "Failed to load tag" : "Schlagwort konnte nicht geladen werden", "Failed to load last used tags" : "Zuletzt verwendete Schlagworte konnten nicht geladen werden", "Missing \"Content-Location\" header" : "Fehlender \"Content-Location\"-Header", + "A tag with the same name already exists" : "Ein Schlagwort mit demselben Namen existiert bereits", "Failed to load tags for file" : "Schlagworte für Datei konnten nicht geladen werden", "Failed to set tag for file" : "Schlagwort für Datei konnte nicht gesetzt werden", "Failed to delete tag for file" : "Schlagwort für Datei konnte nicht gelöscht werden", diff --git a/apps/systemtags/l10n/en_GB.js b/apps/systemtags/l10n/en_GB.js index d9c6a4957d7..d2da1234213 100644 --- a/apps/systemtags/l10n/en_GB.js +++ b/apps/systemtags/l10n/en_GB.js @@ -66,8 +66,17 @@ OC.L10N.register( "Deleted tag" : "Deleted tag", "Failed to delete tag" : "Failed to delete tag", "Manage tags" : "Manage tags", + "Applying tags changes…" : "Applying tags changes…", + "Search or create tag" : "Search or create tag", + "Create tag" : "Create tag", "No tags found" : "No tags found", + "Select or create tags to apply to all selected files" : "Select or create tags to apply to all selected files", "Cancel" : "Cancel", + "Apply changes" : "Apply changes", + "{displayName} (hidden)" : "{displayName} (hidden)", + "{displayName} (restricted)" : "{displayName} (restricted)", + "Failed to apply tags changes" : "Failed to apply tags changes", + "File tags modification canceled" : "File tags modification cancelled", "Loading collaborative tags …" : "Loading collaborative tags …", "Search or create collaborative tags" : "Search or create collaborative tags", "No tags to select, type to create a new tag" : "No tags to select, type to create a new tag", @@ -79,8 +88,10 @@ OC.L10N.register( "Open in Files" : "Open in Files", "List of tags and their associated files and folders." : "List of tags and their associated files and folders.", "Tags you have created will show up here." : "Tags you have created will show up here.", + "Failed to load tag" : "Failed to load tag", "Failed to load last used tags" : "Failed to load last used tags", "Missing \"Content-Location\" header" : "Missing \"Content-Location\" header", + "A tag with the same name already exists" : "A tag with the same name already exists", "Failed to load tags for file" : "Failed to load tags for file", "Failed to set tag for file" : "Failed to set tag for file", "Failed to delete tag for file" : "Failed to delete tag for file", diff --git a/apps/systemtags/l10n/en_GB.json b/apps/systemtags/l10n/en_GB.json index 43850757a71..4ab474bf1e7 100644 --- a/apps/systemtags/l10n/en_GB.json +++ b/apps/systemtags/l10n/en_GB.json @@ -64,8 +64,17 @@ "Deleted tag" : "Deleted tag", "Failed to delete tag" : "Failed to delete tag", "Manage tags" : "Manage tags", + "Applying tags changes…" : "Applying tags changes…", + "Search or create tag" : "Search or create tag", + "Create tag" : "Create tag", "No tags found" : "No tags found", + "Select or create tags to apply to all selected files" : "Select or create tags to apply to all selected files", "Cancel" : "Cancel", + "Apply changes" : "Apply changes", + "{displayName} (hidden)" : "{displayName} (hidden)", + "{displayName} (restricted)" : "{displayName} (restricted)", + "Failed to apply tags changes" : "Failed to apply tags changes", + "File tags modification canceled" : "File tags modification cancelled", "Loading collaborative tags …" : "Loading collaborative tags …", "Search or create collaborative tags" : "Search or create collaborative tags", "No tags to select, type to create a new tag" : "No tags to select, type to create a new tag", @@ -77,8 +86,10 @@ "Open in Files" : "Open in Files", "List of tags and their associated files and folders." : "List of tags and their associated files and folders.", "Tags you have created will show up here." : "Tags you have created will show up here.", + "Failed to load tag" : "Failed to load tag", "Failed to load last used tags" : "Failed to load last used tags", "Missing \"Content-Location\" header" : "Missing \"Content-Location\" header", + "A tag with the same name already exists" : "A tag with the same name already exists", "Failed to load tags for file" : "Failed to load tags for file", "Failed to set tag for file" : "Failed to set tag for file", "Failed to delete tag for file" : "Failed to delete tag for file", diff --git a/apps/systemtags/l10n/gl.js b/apps/systemtags/l10n/gl.js index 598ffd6e5bb..8349747bd4b 100644 --- a/apps/systemtags/l10n/gl.js +++ b/apps/systemtags/l10n/gl.js @@ -66,8 +66,17 @@ OC.L10N.register( "Deleted tag" : "Etiqueta eliminada", "Failed to delete tag" : "Produciuse un fallo ao eliminar a etiqueta", "Manage tags" : "Xestionar as etiquetas", + "Applying tags changes…" : "Aplicando os cambios das etiquetas…", + "Search or create tag" : "Buscar ou crear unha etiqueta", + "Create tag" : "Crear etiqueta", "No tags found" : "Non se atoparon etiquetas", + "Select or create tags to apply to all selected files" : "Seleccionar ou crear etiquetas para aplicalas a todos os ficheiros seleccionados", "Cancel" : "Cancelar", + "Apply changes" : "Aplicar os cambios", + "{displayName} (hidden)" : "{displayName} (agochado)", + "{displayName} (restricted)" : "{displayName} (restrinxido)", + "Failed to apply tags changes" : "Produciuse un fallo ao aplicar os cambios das etiquetas", + "File tags modification canceled" : "Cancelouse a modificación das etiquetas do ficheiro", "Loading collaborative tags …" : "Cargando etiquetas colaborativas…", "Search or create collaborative tags" : "Buscar ou crear etiquetas colaborativas", "No tags to select, type to create a new tag" : "Non hai etiquetas que seleccionar, escriba para crear unha nova", @@ -79,8 +88,10 @@ OC.L10N.register( "Open in Files" : "Abrir en Ficheiros", "List of tags and their associated files and folders." : "Lista de etiquetas e os seus ficheiros e cartafoles asociados.", "Tags you have created will show up here." : "As etiquetas que creou aparecerán aquí.", + "Failed to load tag" : "Produciuse un fallo ao cargar a etiqueta", "Failed to load last used tags" : "Produciuse un fallo ao cargar as últimas etiquetas utilizadas", "Missing \"Content-Location\" header" : "Falta a cabeceira «Content-Location».", + "A tag with the same name already exists" : "Xa existe outra etiqueta co mesmo nome", "Failed to load tags for file" : "Produciuse un fallo ao cargar as etiquetas do ficheiro", "Failed to set tag for file" : "Produciuse un fallo ao definir a etiqueta para o ficheiro", "Failed to delete tag for file" : "Produciuse un fallo ao eliminar a etiqueta do ficheiro", diff --git a/apps/systemtags/l10n/gl.json b/apps/systemtags/l10n/gl.json index 635b5886cfb..0e26c5eb00b 100644 --- a/apps/systemtags/l10n/gl.json +++ b/apps/systemtags/l10n/gl.json @@ -64,8 +64,17 @@ "Deleted tag" : "Etiqueta eliminada", "Failed to delete tag" : "Produciuse un fallo ao eliminar a etiqueta", "Manage tags" : "Xestionar as etiquetas", + "Applying tags changes…" : "Aplicando os cambios das etiquetas…", + "Search or create tag" : "Buscar ou crear unha etiqueta", + "Create tag" : "Crear etiqueta", "No tags found" : "Non se atoparon etiquetas", + "Select or create tags to apply to all selected files" : "Seleccionar ou crear etiquetas para aplicalas a todos os ficheiros seleccionados", "Cancel" : "Cancelar", + "Apply changes" : "Aplicar os cambios", + "{displayName} (hidden)" : "{displayName} (agochado)", + "{displayName} (restricted)" : "{displayName} (restrinxido)", + "Failed to apply tags changes" : "Produciuse un fallo ao aplicar os cambios das etiquetas", + "File tags modification canceled" : "Cancelouse a modificación das etiquetas do ficheiro", "Loading collaborative tags …" : "Cargando etiquetas colaborativas…", "Search or create collaborative tags" : "Buscar ou crear etiquetas colaborativas", "No tags to select, type to create a new tag" : "Non hai etiquetas que seleccionar, escriba para crear unha nova", @@ -77,8 +86,10 @@ "Open in Files" : "Abrir en Ficheiros", "List of tags and their associated files and folders." : "Lista de etiquetas e os seus ficheiros e cartafoles asociados.", "Tags you have created will show up here." : "As etiquetas que creou aparecerán aquí.", + "Failed to load tag" : "Produciuse un fallo ao cargar a etiqueta", "Failed to load last used tags" : "Produciuse un fallo ao cargar as últimas etiquetas utilizadas", "Missing \"Content-Location\" header" : "Falta a cabeceira «Content-Location».", + "A tag with the same name already exists" : "Xa existe outra etiqueta co mesmo nome", "Failed to load tags for file" : "Produciuse un fallo ao cargar as etiquetas do ficheiro", "Failed to set tag for file" : "Produciuse un fallo ao definir a etiqueta para o ficheiro", "Failed to delete tag for file" : "Produciuse un fallo ao eliminar a etiqueta do ficheiro", diff --git a/apps/systemtags/l10n/sv.js b/apps/systemtags/l10n/sv.js index fd6b3d13351..54e48a2e82d 100644 --- a/apps/systemtags/l10n/sv.js +++ b/apps/systemtags/l10n/sv.js @@ -66,8 +66,17 @@ OC.L10N.register( "Deleted tag" : "Raderade tagg", "Failed to delete tag" : "Det gick inte att ta bort tagg", "Manage tags" : "Hantera taggar", + "Applying tags changes…" : "Tillämpar taggändringar...", + "Search or create tag" : "Sök eller skapa tagg", + "Create tag" : "Skapa tagg", "No tags found" : "Inga taggar hittades", + "Select or create tags to apply to all selected files" : "Välj eller skapa taggar som ska tillämpas på alla valda filer", "Cancel" : "Avbryt", + "Apply changes" : "Tillämpa ändringar", + "{displayName} (hidden)" : "{displayName} (dold)", + "{displayName} (restricted)" : "{displayName} (begränsad)", + "Failed to apply tags changes" : "Kunde inte tillämpa taggändringar", + "File tags modification canceled" : "Ändring av filtaggar avbröts", "Loading collaborative tags …" : "Läser in samarbetstaggar …", "Search or create collaborative tags" : "Sök eller skapa samarbetstaggar", "No tags to select, type to create a new tag" : "Inga taggar att välja, skriv för att skapa en ny tagg", @@ -79,8 +88,10 @@ OC.L10N.register( "Open in Files" : "Öppna i Filer", "List of tags and their associated files and folders." : "Lista över taggar och deras tillhörande filer och mappar.", "Tags you have created will show up here." : "Taggar du har skapat kommer att visas här.", + "Failed to load tag" : "Kunde inte läsa in tagg", "Failed to load last used tags" : "Det gick inte att läsa in senast använda taggar", "Missing \"Content-Location\" header" : "\"Content-Location\" header saknas", + "A tag with the same name already exists" : "En tagg med samma namn finns redan", "Failed to load tags for file" : "Kunde inte läsa in taggar för filen", "Failed to set tag for file" : "Kunde inte sätta tagg för filen", "Failed to delete tag for file" : "Kunde inte ta bort tagg för filen", diff --git a/apps/systemtags/l10n/sv.json b/apps/systemtags/l10n/sv.json index a6ad35351e4..8bc5c1556b7 100644 --- a/apps/systemtags/l10n/sv.json +++ b/apps/systemtags/l10n/sv.json @@ -64,8 +64,17 @@ "Deleted tag" : "Raderade tagg", "Failed to delete tag" : "Det gick inte att ta bort tagg", "Manage tags" : "Hantera taggar", + "Applying tags changes…" : "Tillämpar taggändringar...", + "Search or create tag" : "Sök eller skapa tagg", + "Create tag" : "Skapa tagg", "No tags found" : "Inga taggar hittades", + "Select or create tags to apply to all selected files" : "Välj eller skapa taggar som ska tillämpas på alla valda filer", "Cancel" : "Avbryt", + "Apply changes" : "Tillämpa ändringar", + "{displayName} (hidden)" : "{displayName} (dold)", + "{displayName} (restricted)" : "{displayName} (begränsad)", + "Failed to apply tags changes" : "Kunde inte tillämpa taggändringar", + "File tags modification canceled" : "Ändring av filtaggar avbröts", "Loading collaborative tags …" : "Läser in samarbetstaggar …", "Search or create collaborative tags" : "Sök eller skapa samarbetstaggar", "No tags to select, type to create a new tag" : "Inga taggar att välja, skriv för att skapa en ny tagg", @@ -77,8 +86,10 @@ "Open in Files" : "Öppna i Filer", "List of tags and their associated files and folders." : "Lista över taggar och deras tillhörande filer och mappar.", "Tags you have created will show up here." : "Taggar du har skapat kommer att visas här.", + "Failed to load tag" : "Kunde inte läsa in tagg", "Failed to load last used tags" : "Det gick inte att läsa in senast använda taggar", "Missing \"Content-Location\" header" : "\"Content-Location\" header saknas", + "A tag with the same name already exists" : "En tagg med samma namn finns redan", "Failed to load tags for file" : "Kunde inte läsa in taggar för filen", "Failed to set tag for file" : "Kunde inte sätta tagg för filen", "Failed to delete tag for file" : "Kunde inte ta bort tagg för filen", diff --git a/apps/systemtags/l10n/zh_HK.js b/apps/systemtags/l10n/zh_HK.js index 7307ad33a92..c65b85c94bd 100644 --- a/apps/systemtags/l10n/zh_HK.js +++ b/apps/systemtags/l10n/zh_HK.js @@ -66,8 +66,17 @@ OC.L10N.register( "Deleted tag" : "已刪除標籤", "Failed to delete tag" : "刪除標籤失敗", "Manage tags" : "管理標籤", + "Applying tags changes…" : "正在套用標籤更新 …", + "Search or create tag" : "搜尋或創建標籤", + "Create tag" : "創建標籤", "No tags found" : "找不到標籤", + "Select or create tags to apply to all selected files" : "選擇或創建標籤以應用於所有已選擇的檔案。", "Cancel" : "取消", + "Apply changes" : "應用更新", + "{displayName} (hidden)" : "{displayName}(隱藏)", + "{displayName} (restricted)" : "{displayName}(受限)", + "Failed to apply tags changes" : "應用標籤失敗", + "File tags modification canceled" : "檔案標籤修改已取消", "Loading collaborative tags …" : "正在載入協作標籤 ...", "Search or create collaborative tags" : "搜索或創建協作標籤", "No tags to select, type to create a new tag" : "沒有可供選擇的標籤,鍵入以創建新標籤", @@ -79,8 +88,10 @@ OC.L10N.register( "Open in Files" : "在「檔案」應用程式中打開", "List of tags and their associated files and folders." : "標籤及其關聯檔案與資料夾的清單。", "Tags you have created will show up here." : "您建立的標籤將會顯示在此處。", + "Failed to load tag" : "載入標記失敗", "Failed to load last used tags" : "無法加載上次使用的標籤", "Missing \"Content-Location\" header" : "缺少 “Content-Location” 標頭", + "A tag with the same name already exists" : "另一個同名的標籤已經存在", "Failed to load tags for file" : "無法載入檔案的標籤", "Failed to set tag for file" : "無法設定檔案的標籤", "Failed to delete tag for file" : "無法刪除檔案的標籤", diff --git a/apps/systemtags/l10n/zh_HK.json b/apps/systemtags/l10n/zh_HK.json index 7172411c4b4..142b828974b 100644 --- a/apps/systemtags/l10n/zh_HK.json +++ b/apps/systemtags/l10n/zh_HK.json @@ -64,8 +64,17 @@ "Deleted tag" : "已刪除標籤", "Failed to delete tag" : "刪除標籤失敗", "Manage tags" : "管理標籤", + "Applying tags changes…" : "正在套用標籤更新 …", + "Search or create tag" : "搜尋或創建標籤", + "Create tag" : "創建標籤", "No tags found" : "找不到標籤", + "Select or create tags to apply to all selected files" : "選擇或創建標籤以應用於所有已選擇的檔案。", "Cancel" : "取消", + "Apply changes" : "應用更新", + "{displayName} (hidden)" : "{displayName}(隱藏)", + "{displayName} (restricted)" : "{displayName}(受限)", + "Failed to apply tags changes" : "應用標籤失敗", + "File tags modification canceled" : "檔案標籤修改已取消", "Loading collaborative tags …" : "正在載入協作標籤 ...", "Search or create collaborative tags" : "搜索或創建協作標籤", "No tags to select, type to create a new tag" : "沒有可供選擇的標籤,鍵入以創建新標籤", @@ -77,8 +86,10 @@ "Open in Files" : "在「檔案」應用程式中打開", "List of tags and their associated files and folders." : "標籤及其關聯檔案與資料夾的清單。", "Tags you have created will show up here." : "您建立的標籤將會顯示在此處。", + "Failed to load tag" : "載入標記失敗", "Failed to load last used tags" : "無法加載上次使用的標籤", "Missing \"Content-Location\" header" : "缺少 “Content-Location” 標頭", + "A tag with the same name already exists" : "另一個同名的標籤已經存在", "Failed to load tags for file" : "無法載入檔案的標籤", "Failed to set tag for file" : "無法設定檔案的標籤", "Failed to delete tag for file" : "無法刪除檔案的標籤", diff --git a/apps/systemtags/l10n/zh_TW.js b/apps/systemtags/l10n/zh_TW.js index df4e42f211d..abc051d4f9d 100644 --- a/apps/systemtags/l10n/zh_TW.js +++ b/apps/systemtags/l10n/zh_TW.js @@ -66,8 +66,17 @@ OC.L10N.register( "Deleted tag" : "已刪除標籤", "Failed to delete tag" : "標籤刪除失敗", "Manage tags" : "管理標籤", + "Applying tags changes…" : "正在套用標籤變更……", + "Search or create tag" : "搜尋或建立標籤", + "Create tag" : "建立標籤", "No tags found" : "找不到標籤", + "Select or create tags to apply to all selected files" : "選取或建立標籤以套用至所有選定的檔案", "Cancel" : "取消", + "Apply changes" : "套用變更", + "{displayName} (hidden)" : "{displayName}(隱藏)", + "{displayName} (restricted)" : "{displayName}(受限)", + "Failed to apply tags changes" : "套用標籤變更失敗", + "File tags modification canceled" : "已取消檔案標籤修改", "Loading collaborative tags …" : "正在載入協作標籤…", "Search or create collaborative tags" : "搜尋或建立協作標籤", "No tags to select, type to create a new tag" : "無可供選取的標籤,輸入以建立新標籤", @@ -79,8 +88,10 @@ OC.L10N.register( "Open in Files" : "在「檔案」應用程式中開啟", "List of tags and their associated files and folders." : "標籤及其關聯檔案與資料夾的清單。", "Tags you have created will show up here." : "您建立的標籤將會顯示在此處。", + "Failed to load tag" : "載入標籤失敗", "Failed to load last used tags" : "上次使用的標籤載入失敗", "Missing \"Content-Location\" header" : "缺少「Content-Location」標頭", + "A tag with the same name already exists" : "已有相同名稱的標籤", "Failed to load tags for file" : "檔案的標籤載入失敗", "Failed to set tag for file" : "檔案的標籤設定失敗", "Failed to delete tag for file" : "檔案的標籤刪除失敗", diff --git a/apps/systemtags/l10n/zh_TW.json b/apps/systemtags/l10n/zh_TW.json index 595b3f531b2..297c0b3e012 100644 --- a/apps/systemtags/l10n/zh_TW.json +++ b/apps/systemtags/l10n/zh_TW.json @@ -64,8 +64,17 @@ "Deleted tag" : "已刪除標籤", "Failed to delete tag" : "標籤刪除失敗", "Manage tags" : "管理標籤", + "Applying tags changes…" : "正在套用標籤變更……", + "Search or create tag" : "搜尋或建立標籤", + "Create tag" : "建立標籤", "No tags found" : "找不到標籤", + "Select or create tags to apply to all selected files" : "選取或建立標籤以套用至所有選定的檔案", "Cancel" : "取消", + "Apply changes" : "套用變更", + "{displayName} (hidden)" : "{displayName}(隱藏)", + "{displayName} (restricted)" : "{displayName}(受限)", + "Failed to apply tags changes" : "套用標籤變更失敗", + "File tags modification canceled" : "已取消檔案標籤修改", "Loading collaborative tags …" : "正在載入協作標籤…", "Search or create collaborative tags" : "搜尋或建立協作標籤", "No tags to select, type to create a new tag" : "無可供選取的標籤,輸入以建立新標籤", @@ -77,8 +86,10 @@ "Open in Files" : "在「檔案」應用程式中開啟", "List of tags and their associated files and folders." : "標籤及其關聯檔案與資料夾的清單。", "Tags you have created will show up here." : "您建立的標籤將會顯示在此處。", + "Failed to load tag" : "載入標籤失敗", "Failed to load last used tags" : "上次使用的標籤載入失敗", "Missing \"Content-Location\" header" : "缺少「Content-Location」標頭", + "A tag with the same name already exists" : "已有相同名稱的標籤", "Failed to load tags for file" : "檔案的標籤載入失敗", "Failed to set tag for file" : "檔案的標籤設定失敗", "Failed to delete tag for file" : "檔案的標籤刪除失敗", diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js index 1175ddcdc50..7dc69403053 100644 --- a/apps/user_ldap/l10n/pl.js +++ b/apps/user_ldap/l10n/pl.js @@ -61,8 +61,10 @@ OC.L10N.register( "Your password will expire today." : "Twoje hasło wygasa dzisiaj.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Twoje hasło wygaśnie w ciągu %n dnia.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni."], "LDAP/AD integration" : "Integracja z LDAP/AD", + "LDAP Connection" : "Połączenie LDAP", "Invalid LDAP UUIDs" : "Nieprawidłowy LDAP UUID", "None found" : "Nie znaleziono", + "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." : "Znaleziono nieprawidłowe identyfikatory UUID kont lub grup LDAP. Sprawdź ustawienia „Zastąp wykrywanie UUID” w części eksperckiej konfiguracji LDAP i użyj „occ ldap:update-uuid”, aby je zaktualizować.", "_%n group found_::_%n groups found_" : ["Znaleziono %n grupę","Znaleziono %n grupy","Znaleziono %n grup","Znaleziono %n grup"], "> 1000 groups found" : "> 1000 znalezionych grup", "> 1000 users found" : "> 1000 znalezionych użytkowników", @@ -93,6 +95,7 @@ OC.L10N.register( "Other Attributes:" : "Inne atrybuty:", "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Definiuje filter do zastosowania podczas próby logowania. \"%%uid\" zastępuje nazwę użytkownika podczas logowania. Przykład: \"uid=%%uid\"", "Test Loginname" : "Testowa nazwa użytkownika", + "Attempts to receive a DN for the given loginname and the current login filter" : "Próbuje otrzymać nazwę wyróżniającą dla podanej nazwy użytkownika i bieżącego filtra logowania", "Verify settings" : "Weryfikuj ustawienia", "%s. Server:" : "%s. Serwer:", "Add a new configuration" : "Dodaj nową konfigurację", @@ -156,6 +159,8 @@ OC.L10N.register( "One User Base DN per line" : "Jeden użytkownik Bazy DN na linię", "User Search Attributes" : "Szukaj atrybutów", "Optional; one attribute per line" : "Opcjonalnie; jeden atrybut w wierszu", + "Disable users missing from LDAP" : "Wyłącz brakujących użytkowników w LDAP", + "When switched on, users imported from LDAP which are then missing will be disabled" : "Po włączeniu, użytkownicy zaimportowani z LDAP, których brakuje, zostaną wyłączeni", "Group Display Name Field" : "Pole wyświetlanej nazwy grupy", "The LDAP attribute to use to generate the groups's display name." : "Atrybut LDAP służący do generowania wyświetlanej nazwy grupy ownCloud.", "Base Group Tree" : "Drzewo bazy grup", @@ -184,6 +189,11 @@ OC.L10N.register( "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Pozostaw puste dla nazwy użytkownika (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.", "\"$home\" Placeholder Field" : "Pole zastępcze \"$home\"", "$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home w zewnętrznej konfiguracji pamięci zostanie zastąpiony wartością określonego atrybutu", + "User Profile Attributes" : "Atrybuty profilu użytkownika", + "Phone Field" : "Pole Telefonu", + "User profile Phone will be set from the specified attribute" : "Telefon profilu użytkownika zostanie ustawiony na podstawie określonego atrybutu", + "Website Field" : "Pole witryny internetowej", + "User profile Website will be set from the specified attribute" : "Witryna internetowa profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu", "Internal Username" : "Wewnętrzna nazwa użytkownika", "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Domyślnie wewnętrzna nazwa użytkownika zostanie utworzona z atrybutu UUID. Zapewnia to unikalność nazwy użytkownika, a znaki nie muszą być konwertowane. Wewnętrzna nazwa użytkownika ma ograniczenie, dlatego dozwolone są tylko znaki: [a-zA-Z0-9_.@-]. Inne znaki są zastępowane przez ich odpowiedniki ASCII lub po prostu pomijane. W przypadku kolizji zostanie dodany/zwiększony numer. Wewnętrzna nazwa użytkownika służy do wewnętrznej identyfikacji użytkownika. Jest również domyślną nazwą katalogu domowego użytkownika oraz częścią zdalnych adresów URL, na przykład dla wszystkich usług DAV. Dzięki temu ustawieniu można zastąpić domyślne zachowanie. Zmiany będą miały wpływ tylko na nowo zmapowanych (dodanych) użytkowników LDAP. Dla domyślnego zachowania pozostaw to puste.", "Internal Username Attribute:" : "Wewnętrzny atrybut nazwy uzżytkownika:", diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json index fdfdad1f415..5ee00f9d209 100644 --- a/apps/user_ldap/l10n/pl.json +++ b/apps/user_ldap/l10n/pl.json @@ -59,8 +59,10 @@ "Your password will expire today." : "Twoje hasło wygasa dzisiaj.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Twoje hasło wygaśnie w ciągu %n dnia.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni."], "LDAP/AD integration" : "Integracja z LDAP/AD", + "LDAP Connection" : "Połączenie LDAP", "Invalid LDAP UUIDs" : "Nieprawidłowy LDAP UUID", "None found" : "Nie znaleziono", + "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." : "Znaleziono nieprawidłowe identyfikatory UUID kont lub grup LDAP. Sprawdź ustawienia „Zastąp wykrywanie UUID” w części eksperckiej konfiguracji LDAP i użyj „occ ldap:update-uuid”, aby je zaktualizować.", "_%n group found_::_%n groups found_" : ["Znaleziono %n grupę","Znaleziono %n grupy","Znaleziono %n grup","Znaleziono %n grup"], "> 1000 groups found" : "> 1000 znalezionych grup", "> 1000 users found" : "> 1000 znalezionych użytkowników", @@ -91,6 +93,7 @@ "Other Attributes:" : "Inne atrybuty:", "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Definiuje filter do zastosowania podczas próby logowania. \"%%uid\" zastępuje nazwę użytkownika podczas logowania. Przykład: \"uid=%%uid\"", "Test Loginname" : "Testowa nazwa użytkownika", + "Attempts to receive a DN for the given loginname and the current login filter" : "Próbuje otrzymać nazwę wyróżniającą dla podanej nazwy użytkownika i bieżącego filtra logowania", "Verify settings" : "Weryfikuj ustawienia", "%s. Server:" : "%s. Serwer:", "Add a new configuration" : "Dodaj nową konfigurację", @@ -154,6 +157,8 @@ "One User Base DN per line" : "Jeden użytkownik Bazy DN na linię", "User Search Attributes" : "Szukaj atrybutów", "Optional; one attribute per line" : "Opcjonalnie; jeden atrybut w wierszu", + "Disable users missing from LDAP" : "Wyłącz brakujących użytkowników w LDAP", + "When switched on, users imported from LDAP which are then missing will be disabled" : "Po włączeniu, użytkownicy zaimportowani z LDAP, których brakuje, zostaną wyłączeni", "Group Display Name Field" : "Pole wyświetlanej nazwy grupy", "The LDAP attribute to use to generate the groups's display name." : "Atrybut LDAP służący do generowania wyświetlanej nazwy grupy ownCloud.", "Base Group Tree" : "Drzewo bazy grup", @@ -182,6 +187,11 @@ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Pozostaw puste dla nazwy użytkownika (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.", "\"$home\" Placeholder Field" : "Pole zastępcze \"$home\"", "$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home w zewnętrznej konfiguracji pamięci zostanie zastąpiony wartością określonego atrybutu", + "User Profile Attributes" : "Atrybuty profilu użytkownika", + "Phone Field" : "Pole Telefonu", + "User profile Phone will be set from the specified attribute" : "Telefon profilu użytkownika zostanie ustawiony na podstawie określonego atrybutu", + "Website Field" : "Pole witryny internetowej", + "User profile Website will be set from the specified attribute" : "Witryna internetowa profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu", "Internal Username" : "Wewnętrzna nazwa użytkownika", "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Domyślnie wewnętrzna nazwa użytkownika zostanie utworzona z atrybutu UUID. Zapewnia to unikalność nazwy użytkownika, a znaki nie muszą być konwertowane. Wewnętrzna nazwa użytkownika ma ograniczenie, dlatego dozwolone są tylko znaki: [a-zA-Z0-9_.@-]. Inne znaki są zastępowane przez ich odpowiedniki ASCII lub po prostu pomijane. W przypadku kolizji zostanie dodany/zwiększony numer. Wewnętrzna nazwa użytkownika służy do wewnętrznej identyfikacji użytkownika. Jest również domyślną nazwą katalogu domowego użytkownika oraz częścią zdalnych adresów URL, na przykład dla wszystkich usług DAV. Dzięki temu ustawieniu można zastąpić domyślne zachowanie. Zmiany będą miały wpływ tylko na nowo zmapowanych (dodanych) użytkowników LDAP. Dla domyślnego zachowania pozostaw to puste.", "Internal Username Attribute:" : "Wewnętrzny atrybut nazwy uzżytkownika:", diff --git a/apps/user_status/l10n/pl.js b/apps/user_status/l10n/pl.js index 1c11b438615..08a013fc32a 100644 --- a/apps/user_status/l10n/pl.js +++ b/apps/user_status/l10n/pl.js @@ -20,6 +20,8 @@ OC.L10N.register( "Set status" : "Ustaw status", "Online status" : "Status online", "Status message" : "Komunikat statusu", + "Set absence period" : "Ustaw okres nieobecności", + "Set absence period and replacement" : "Ustaw okres nieobecności i zastępstwo", "Your status was set automatically" : "Twój status został ustawiony automatycznie", "Clear status message" : "Wyczyść komunikat statusu", "Set status message" : "Ustaw komunikat statusu", diff --git a/apps/user_status/l10n/pl.json b/apps/user_status/l10n/pl.json index d953ef97001..159e2847163 100644 --- a/apps/user_status/l10n/pl.json +++ b/apps/user_status/l10n/pl.json @@ -18,6 +18,8 @@ "Set status" : "Ustaw status", "Online status" : "Status online", "Status message" : "Komunikat statusu", + "Set absence period" : "Ustaw okres nieobecności", + "Set absence period and replacement" : "Ustaw okres nieobecności i zastępstwo", "Your status was set automatically" : "Twój status został ustawiony automatycznie", "Clear status message" : "Wyczyść komunikat statusu", "Set status message" : "Ustaw komunikat statusu", diff --git a/apps/weather_status/l10n/ar.js b/apps/weather_status/l10n/ar.js index f063ce101fc..b6dce8f49cc 100644 --- a/apps/weather_status/l10n/ar.js +++ b/apps/weather_status/l10n/ar.js @@ -2,7 +2,7 @@ OC.L10N.register( "weather_status", { "Unknown address" : "عنوان غير معروف", - "No result." : "لا توجد أية نتيجة", + "No result." : "لا توجد أي نتيجة", "Malformed JSON data." : "بيانات JSON غير مكونة بشكل صحيح", "Error" : "خطأ", "Weather status" : "حالة الطقس", diff --git a/apps/weather_status/l10n/ar.json b/apps/weather_status/l10n/ar.json index d0c8ee4ab0d..4704fafab53 100644 --- a/apps/weather_status/l10n/ar.json +++ b/apps/weather_status/l10n/ar.json @@ -1,6 +1,6 @@ { "translations": { "Unknown address" : "عنوان غير معروف", - "No result." : "لا توجد أية نتيجة", + "No result." : "لا توجد أي نتيجة", "Malformed JSON data." : "بيانات JSON غير مكونة بشكل صحيح", "Error" : "خطأ", "Weather status" : "حالة الطقس", diff --git a/apps/workflowengine/l10n/pl.js b/apps/workflowengine/l10n/pl.js index b4f7b26ae0b..0d46a071143 100644 --- a/apps/workflowengine/l10n/pl.js +++ b/apps/workflowengine/l10n/pl.js @@ -48,6 +48,7 @@ OC.L10N.register( "Nextcloud workflow engine" : "Silnik przepływu pracy Nextcloud", "Select a filter" : "Wybierz filtr", "Select a comparator" : "Wybierz komparator", + "Remove filter" : "Usuń filtr", "Select a file type" : "Wybierz typ pliku", "e.g. httpd/unix-directory" : "np. httpd/unix-directory", "Folder" : "Katalog", diff --git a/apps/workflowengine/l10n/pl.json b/apps/workflowengine/l10n/pl.json index f625df96b51..074f2dd7c5a 100644 --- a/apps/workflowengine/l10n/pl.json +++ b/apps/workflowengine/l10n/pl.json @@ -46,6 +46,7 @@ "Nextcloud workflow engine" : "Silnik przepływu pracy Nextcloud", "Select a filter" : "Wybierz filtr", "Select a comparator" : "Wybierz komparator", + "Remove filter" : "Usuń filtr", "Select a file type" : "Wybierz typ pliku", "e.g. httpd/unix-directory" : "np. httpd/unix-directory", "Folder" : "Katalog", diff --git a/build/integration/features/provisioning-v1.feature b/build/integration/features/provisioning-v1.feature index 0d1d5b1a345..be5473ea1e7 100644 --- a/build/integration/features/provisioning-v1.feature +++ b/build/integration/features/provisioning-v1.feature @@ -208,7 +208,7 @@ Feature: provisioning And sending "PUT" to "/cloud/users/brand-new-user" with | key | additional_mail | | value | no-reply@nextcloud.com | - And the OCS status code should be "102" + And the OCS status code should be "101" And the HTTP status code should be "200" And sending "PUT" to "/cloud/users/brand-new-user" with | key | additional_mail | @@ -219,7 +219,7 @@ Feature: provisioning And sending "PUT" to "/cloud/users/brand-new-user" with | key | additional_mail | | value | no.reply2@nextcloud.com | - And the OCS status code should be "102" + And the OCS status code should be "101" And the HTTP status code should be "200" Then user "brand-new-user" has | id | brand-new-user | @@ -264,17 +264,17 @@ Feature: provisioning When sending "PUT" to "/cloud/users/brand-new-user" with | key | phoneScope | | value | invalid | - Then the OCS status code should be "102" + Then the OCS status code should be "101" And the HTTP status code should be "200" When sending "PUT" to "/cloud/users/brand-new-user" with | key | displaynameScope | | value | v2-private | - Then the OCS status code should be "102" + Then the OCS status code should be "101" And the HTTP status code should be "200" When sending "PUT" to "/cloud/users/brand-new-user" with | key | emailScope | | value | v2-private | - Then the OCS status code should be "102" + Then the OCS status code should be "101" And the HTTP status code should be "200" Scenario: Edit a user account multi-value property scopes with invalid or unsupported value @@ -320,7 +320,7 @@ Feature: provisioning When sending "PUT" to "/cloud/users/brand-new-user" with | key | phoneScope | | value | v2-private | - Then the OCS status code should be "103" + Then the OCS status code should be "113" And the HTTP status code should be "200" Scenario: Search by phone number diff --git a/build/psalm-baseline-ocp.xml b/build/psalm-baseline-ocp.xml index 09110c58190..68f18c5c3dc 100644 --- a/build/psalm-baseline-ocp.xml +++ b/build/psalm-baseline-ocp.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> -<files psalm-version="5.9.0@8b9ad1eb9e8b7d3101f949291da2b9f7767cd163"> +<files psalm-version="5.26.1@d747f6500b38ac4f7dfc5edbcae6e4b637d7add0"> <file src="lib/private/legacy/OC_Template.php"> <UndefinedClass> - <code>OC</code> + <code><![CDATA[OC]]></code> </UndefinedClass> </file> <file src="lib/public/AppFramework/ApiController.php"> @@ -15,84 +15,85 @@ <code><![CDATA[new RouteConfig($this->container, $router, $routes)]]></code> </InternalMethod> <UndefinedClass> - <code>\OC</code> + <code><![CDATA[\OC]]></code> </UndefinedClass> </file> <file src="lib/public/AppFramework/Db/Entity.php"> <InvalidNullableReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>$column</code> + <code><![CDATA[$column]]></code> </NullableReturnStatement> </file> <file src="lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php"> <UndefinedClass> - <code>\OC</code> + <code><![CDATA[\OC]]></code> </UndefinedClass> </file> <file src="lib/public/AppFramework/Http/Response.php"> <UndefinedClass> - <code>\OC</code> - <code>\OC</code> + <code><![CDATA[\OC]]></code> </UndefinedClass> </file> + <file src="lib/public/DB/QueryBuilder/IQueryBuilder.php"> + <InvalidDocblock> + <code><![CDATA[public function createFunction($call);]]></code> + </InvalidDocblock> + </file> <file src="lib/public/Defaults.php"> <UndefinedClass> - <code>\OC</code> + <code><![CDATA[\OC]]></code> </UndefinedClass> </file> <file src="lib/public/Diagnostics/IQueryLogger.php"> <LessSpecificImplementedReturnType> - <code>mixed</code> + <code><![CDATA[mixed]]></code> </LessSpecificImplementedReturnType> </file> <file src="lib/public/EventDispatcher/GenericEvent.php"> <MissingTemplateParam> - <code>ArrayAccess</code> - <code>IteratorAggregate</code> + <code><![CDATA[ArrayAccess]]></code> + <code><![CDATA[IteratorAggregate]]></code> </MissingTemplateParam> </file> <file src="lib/public/Files.php"> <FalsableReturnStatement> - <code>\OC_App::getStorage($app)</code> + <code><![CDATA[\OC_App::getStorage($app)]]></code> </FalsableReturnStatement> <UndefinedClass> - <code>\OC</code> + <code><![CDATA[\OC]]></code> </UndefinedClass> </file> <file src="lib/public/L10N/ILanguageIterator.php"> <MissingTemplateParam> - <code>\Iterator</code> + <code><![CDATA[\Iterator]]></code> </MissingTemplateParam> </file> <file src="lib/public/Template.php"> <UndefinedFunction> - <code>\html_select_options($options, $selected, $params)</code> - <code>\human_file_size($bytes)</code> - <code>\image_path($app, $image)</code> - <code>\mimetype_icon($mimetype)</code> - <code>\preview_icon($path)</code> - <code>\publicPreview_icon($path, $token)</code> - <code>\relative_modified_date($timestamp, null, $dateOnly)</code> + <code><![CDATA[\html_select_options($options, $selected, $params)]]></code> + <code><![CDATA[\human_file_size($bytes)]]></code> + <code><![CDATA[\image_path($app, $image)]]></code> + <code><![CDATA[\mimetype_icon($mimetype)]]></code> + <code><![CDATA[\preview_icon($path)]]></code> + <code><![CDATA[\publicPreview_icon($path, $token)]]></code> + <code><![CDATA[\relative_modified_date($timestamp, null, $dateOnly)]]></code> </UndefinedFunction> </file> <file src="lib/public/Util.php"> <UndefinedClass> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> - <code>\OC</code> + <code><![CDATA[\OC]]></code> + <code><![CDATA[\OC]]></code> + <code><![CDATA[\OC]]></code> + <code><![CDATA[\OC]]></code> + <code><![CDATA[\OC]]></code> + <code><![CDATA[\OC]]></code> + <code><![CDATA[\OC]]></code> + <code><![CDATA[\OC]]></code> + <code><![CDATA[\OC]]></code> + <code><![CDATA[\OC]]></code> + <code><![CDATA[\OC]]></code> </UndefinedClass> </file> </files> diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index 31fac17ef49..bff1ee6815f 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -1,94 +1,92 @@ <?xml version="1.0" encoding="UTF-8"?> -<files psalm-version="5.9.0@8b9ad1eb9e8b7d3101f949291da2b9f7767cd163"> +<files psalm-version="5.26.1@d747f6500b38ac4f7dfc5edbcae6e4b637d7add0"> <file src="3rdparty/sabre/dav/lib/CalDAV/Calendar.php"> <MoreSpecificImplementedParamType> - <code>$data</code> + <code><![CDATA[$data]]></code> </MoreSpecificImplementedParamType> </file> <file src="3rdparty/sabre/dav/lib/CalDAV/CalendarHome.php"> <MoreSpecificImplementedParamType> - <code>$data</code> + <code><![CDATA[$data]]></code> </MoreSpecificImplementedParamType> </file> <file src="3rdparty/sabre/dav/lib/CalDAV/Principal/User.php"> <MoreSpecificImplementedParamType> - <code>$data</code> + <code><![CDATA[$data]]></code> </MoreSpecificImplementedParamType> </file> <file src="3rdparty/sabre/dav/lib/CardDAV/AddressBook.php"> <MoreSpecificImplementedParamType> - <code>$data</code> + <code><![CDATA[$data]]></code> </MoreSpecificImplementedParamType> </file> <file src="3rdparty/sabre/dav/lib/CardDAV/AddressBookHome.php"> <InvalidPropertyAssignmentValue> - <code>$principalUri</code> + <code><![CDATA[$principalUri]]></code> </InvalidPropertyAssignmentValue> <MoreSpecificImplementedParamType> - <code>$data</code> + <code><![CDATA[$data]]></code> </MoreSpecificImplementedParamType> </file> <file src="3rdparty/sabre/dav/lib/CardDAV/Card.php"> <MoreSpecificImplementedParamType> - <code>$cardData</code> + <code><![CDATA[$cardData]]></code> </MoreSpecificImplementedParamType> </file> + <file src="3rdparty/sabre/dav/lib/DAV/SimpleCollection.php"> + <NoValue> + <code><![CDATA[$child]]></code> + <code><![CDATA[$child]]></code> + </NoValue> + </file> <file src="3rdparty/sabre/dav/lib/DAVACL/AbstractPrincipalCollection.php"> <LessSpecificImplementedReturnType> - <code>array</code> + <code><![CDATA[array]]></code> </LessSpecificImplementedReturnType> </file> - <file src="apps/comments/lib/Notification/Listener.php"> - <LessSpecificReturnStatement> - <code>$uids</code> - </LessSpecificReturnStatement> - <MoreSpecificReturnType> - <code><![CDATA[list<string>]]></code> - </MoreSpecificReturnType> - </file> <file src="apps/dav/appinfo/v1/caldav.php"> <UndefinedGlobalVariable> - <code>$baseuri</code> + <code><![CDATA[$baseuri]]></code> </UndefinedGlobalVariable> </file> <file src="apps/dav/appinfo/v1/carddav.php"> <UndefinedGlobalVariable> - <code>$baseuri</code> + <code><![CDATA[$baseuri]]></code> </UndefinedGlobalVariable> </file> <file src="apps/dav/appinfo/v1/publicwebdav.php"> <InternalMethod> - <code>\OC\Files\Filesystem::logWarningWhenAddingStorageWrapper($previousLog)</code> - <code>\OC\Files\Filesystem::logWarningWhenAddingStorageWrapper(false)</code> + <code><![CDATA[\OC\Files\Filesystem::logWarningWhenAddingStorageWrapper($previousLog)]]></code> + <code><![CDATA[\OC\Files\Filesystem::logWarningWhenAddingStorageWrapper(false)]]></code> </InternalMethod> <UndefinedGlobalVariable> - <code>$baseuri</code> + <code><![CDATA[$baseuri]]></code> </UndefinedGlobalVariable> </file> <file src="apps/dav/appinfo/v1/webdav.php"> <UndefinedGlobalVariable> - <code>$baseuri</code> + <code><![CDATA[$baseuri]]></code> </UndefinedGlobalVariable> </file> <file src="apps/dav/appinfo/v2/direct.php"> <UndefinedGlobalVariable> - <code>$baseuri</code> + <code><![CDATA[$baseuri]]></code> </UndefinedGlobalVariable> </file> <file src="apps/dav/appinfo/v2/remote.php"> <UndefinedGlobalVariable> - <code>$baseuri</code> + <code><![CDATA[$baseuri]]></code> </UndefinedGlobalVariable> </file> <file src="apps/dav/lib/AppInfo/Application.php"> <InvalidArgument> - <code>registerEventListener</code> + <code><![CDATA[registerEventListener]]></code> </InvalidArgument> </file> <file src="apps/dav/lib/CalDAV/BirthdayService.php"> <UndefinedMethod> - <code>setDateTime</code> - <code>setDateTime</code> + <code><![CDATA[setDateTime]]></code> + <code><![CDATA[setDateTime]]></code> </UndefinedMethod> <UndefinedPropertyFetch> <code><![CDATA[$existingBirthday->VEVENT->DTSTART]]></code> @@ -102,62 +100,61 @@ <code><![CDATA[$this->objectData['calendardata']]]></code> </NullableReturnStatement> <ParamNameMismatch> - <code>$calendarData</code> - <code>$calendarData</code> + <code><![CDATA[$calendarData]]></code> + <code><![CDATA[$calendarData]]></code> </ParamNameMismatch> </file> <file src="apps/dav/lib/CalDAV/CalDavBackend.php"> <InvalidNullableReturnType> - <code>array</code> - <code>array</code> + <code><![CDATA[array]]></code> </InvalidNullableReturnType> <LessSpecificReturnStatement> - <code>Reader::read($objectData)</code> + <code><![CDATA[Reader::read($objectData)]]></code> </LessSpecificReturnStatement> <MoreSpecificImplementedParamType> - <code>$objectData</code> - <code>$uris</code> - <code>$uris</code> + <code><![CDATA[$objectData]]></code> + <code><![CDATA[$uris]]></code> + <code><![CDATA[$uris]]></code> </MoreSpecificImplementedParamType> <MoreSpecificReturnType> - <code>VCalendar</code> + <code><![CDATA[VCalendar]]></code> </MoreSpecificReturnType> <NullableReturnStatement> - <code>null</code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="apps/dav/lib/CalDAV/CalendarHome.php"> <InvalidNullableReturnType> - <code>INode</code> + <code><![CDATA[INode]]></code> </InvalidNullableReturnType> <LessSpecificImplementedReturnType> - <code>INode</code> + <code><![CDATA[INode]]></code> </LessSpecificImplementedReturnType> <NullableReturnStatement> <code><![CDATA[$calendarPlugin->getCalendarInCalendarHome($this->principalInfo['uri'], $calendarUri)]]></code> </NullableReturnStatement> <UndefinedInterfaceMethod> - <code>calendarSearch</code> + <code><![CDATA[calendarSearch]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/dav/lib/CalDAV/CalendarRoot.php"> <ParamNameMismatch> - <code>$principal</code> + <code><![CDATA[$principal]]></code> </ParamNameMismatch> </file> <file src="apps/dav/lib/CalDAV/Plugin.php"> <ImplementedReturnTypeMismatch> - <code>string|null</code> + <code><![CDATA[string|null]]></code> </ImplementedReturnTypeMismatch> </file> <file src="apps/dav/lib/CalDAV/Principal/Collection.php"> <ParamNameMismatch> - <code>$principalInfo</code> + <code><![CDATA[$principalInfo]]></code> </ParamNameMismatch> </file> <file src="apps/dav/lib/CalDAV/PublicCalendar.php"> <MoreSpecificImplementedParamType> - <code>$paths</code> + <code><![CDATA[$paths]]></code> </MoreSpecificImplementedParamType> </file> <file src="apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php"> @@ -165,47 +162,47 @@ <code><![CDATA[$vevent->DTEND]]></code> </LessSpecificReturnStatement> <UndefinedMethod> - <code>hasTime</code> - <code>isFloating</code> - <code>isFloating</code> + <code><![CDATA[hasTime]]></code> + <code><![CDATA[isFloating]]></code> + <code><![CDATA[isFloating]]></code> </UndefinedMethod> </file> <file src="apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php"> <LessSpecificReturnStatement> - <code>$emailAddresses</code> + <code><![CDATA[$emailAddresses]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> <code><![CDATA[array<string, array{LANG?: string}>]]></code> </MoreSpecificReturnType> <UndefinedMethod> - <code>getDateTime</code> - <code>getDateTime</code> - <code>isFloating</code> + <code><![CDATA[getDateTime]]></code> + <code><![CDATA[getDateTime]]></code> + <code><![CDATA[isFloating]]></code> </UndefinedMethod> </file> <file src="apps/dav/lib/CalDAV/Reminder/NotificationProviderManager.php"> <UndefinedConstant> - <code>$provider::NOTIFICATION_TYPE</code> + <code><![CDATA[$provider::NOTIFICATION_TYPE]]></code> </UndefinedConstant> </file> <file src="apps/dav/lib/CalDAV/Reminder/Notifier.php"> <TypeDoesNotContainType> - <code>$diff === false</code> + <code><![CDATA[$diff === false]]></code> </TypeDoesNotContainType> </file> <file src="apps/dav/lib/CalDAV/Reminder/ReminderService.php"> <LessSpecificReturnStatement> - <code>$vevents</code> - <code>VObject\Reader::read($calendarData, - VObject\Reader::OPTION_FORGIVING)</code> + <code><![CDATA[$vevents]]></code> + <code><![CDATA[VObject\Reader::read($calendarData, + VObject\Reader::OPTION_FORGIVING)]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>VObject\Component\VCalendar|null</code> - <code>VObject\Component\VEvent[]</code> + <code><![CDATA[VObject\Component\VCalendar|null]]></code> + <code><![CDATA[VObject\Component\VEvent[]]]></code> </MoreSpecificReturnType> <UndefinedMethod> - <code>getDateTime</code> - <code>getDateTime</code> + <code><![CDATA[getDateTime]]></code> + <code><![CDATA[getDateTime]]></code> </UndefinedMethod> <UndefinedPropertyFetch> <code><![CDATA[$valarm->parent->UID]]></code> @@ -213,17 +210,17 @@ </file> <file src="apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php"> <InvalidNullableReturnType> - <code>array</code> + <code><![CDATA[array]]></code> </InvalidNullableReturnType> <InvalidReturnStatement> - <code>$principals</code> + <code><![CDATA[$principals]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string[]</code> + <code><![CDATA[string[]]]></code> </InvalidReturnType> <NullableReturnStatement> - <code>null</code> - <code>null</code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="apps/dav/lib/CalDAV/Schedule/IMipPlugin.php"> @@ -237,8 +234,8 @@ </file> <file src="apps/dav/lib/CalDAV/Schedule/IMipService.php"> <UndefinedMethod> - <code>getNormalizedValue</code> - <code>getNormalizedValue</code> + <code><![CDATA[getNormalizedValue]]></code> + <code><![CDATA[getNormalizedValue]]></code> </UndefinedMethod> </file> <file src="apps/dav/lib/CalDAV/Schedule/Plugin.php"> @@ -250,20 +247,20 @@ <code><![CDATA[$vevent->DTEND]]></code> </LessSpecificReturnStatement> <UndefinedInterfaceMethod> - <code>get</code> - <code>getChildren</code> + <code><![CDATA[get]]></code> + <code><![CDATA[getChildren]]></code> </UndefinedInterfaceMethod> <UndefinedMethod> - <code>getDateTime</code> - <code>hasTime</code> - <code>isFloating</code> - <code>isFloating</code> - <code>principalSearch</code> + <code><![CDATA[getDateTime]]></code> + <code><![CDATA[hasTime]]></code> + <code><![CDATA[isFloating]]></code> + <code><![CDATA[isFloating]]></code> + <code><![CDATA[principalSearch]]></code> </UndefinedMethod> </file> <file src="apps/dav/lib/CalDAV/Search/SearchPlugin.php"> <InvalidNullableReturnType> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidNullableReturnType> </file> <file src="apps/dav/lib/CalDAV/Search/Xml/Filter/ParamFilter.php"> @@ -274,7 +271,7 @@ ]]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidReturnType> </file> <file src="apps/dav/lib/CalDAV/Search/Xml/Request/CalendarSearchReport.php"> @@ -289,7 +286,7 @@ </file> <file src="apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php"> <InvalidArgument> - <code>$webcalData</code> + <code><![CDATA[$webcalData]]></code> </InvalidArgument> </file> <file src="apps/dav/lib/CardDAV/AddressBookImpl.php"> @@ -298,26 +295,26 @@ <code><![CDATA[$this->getKey()]]></code> </InvalidArgument> <LessSpecificReturnStatement> - <code>Reader::read($cardData)</code> + <code><![CDATA[Reader::read($cardData)]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>VCard</code> + <code><![CDATA[VCard]]></code> </MoreSpecificReturnType> </file> <file src="apps/dav/lib/CardDAV/AddressBookRoot.php"> <ParamNameMismatch> - <code>$principal</code> + <code><![CDATA[$principal]]></code> </ParamNameMismatch> </file> <file src="apps/dav/lib/CardDAV/CardDavBackend.php"> <FalsableReturnStatement> - <code>false</code> + <code><![CDATA[false]]></code> </FalsableReturnStatement> <LessSpecificReturnStatement> - <code>Reader::read($cardData)</code> + <code><![CDATA[Reader::read($cardData)]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>VCard</code> + <code><![CDATA[VCard]]></code> </MoreSpecificReturnType> <TypeDoesNotContainType> <code><![CDATA[$addressBooks[$row['id']][$readOnlyPropertyName] === 0]]></code> @@ -325,23 +322,12 @@ </file> <file src="apps/dav/lib/CardDAV/MultiGetExportPlugin.php"> <InvalidNullableReturnType> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidNullableReturnType> </file> - <file src="apps/dav/lib/CardDAV/PhotoCache.php"> - <LessSpecificReturnStatement> - <code><![CDATA[[ - 'Content-Type' => $type, - 'body' => $val - ]]]></code> - </LessSpecificReturnStatement> - <MoreSpecificReturnType> - <code>false|array{body: string, Content-Type: string}</code> - </MoreSpecificReturnType> - </file> <file src="apps/dav/lib/CardDAV/Plugin.php"> <ImplementedReturnTypeMismatch> - <code>string|null</code> + <code><![CDATA[string|null]]></code> </ImplementedReturnTypeMismatch> </file> <file src="apps/dav/lib/CardDAV/UserAddressBooks.php"> @@ -352,55 +338,55 @@ </file> <file src="apps/dav/lib/CardDAV/Xml/Groups.php"> <InvalidPropertyAssignmentValue> - <code>$groups</code> + <code><![CDATA[$groups]]></code> </InvalidPropertyAssignmentValue> </file> <file src="apps/dav/lib/Comments/CommentsPlugin.php"> <UndefinedFunction> - <code>\Sabre\HTTP\toDate($value)</code> + <code><![CDATA[\Sabre\HTTP\toDate($value)]]></code> </UndefinedFunction> </file> <file src="apps/dav/lib/Connector/Sabre/AnonymousOptionsPlugin.php"> <InvalidNullableReturnType> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidNullableReturnType> </file> <file src="apps/dav/lib/Connector/Sabre/Auth.php"> <LessSpecificReturnStatement> - <code>$data</code> + <code><![CDATA[$data]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>array{bool, string}</code> + <code><![CDATA[array{bool, string}]]></code> </MoreSpecificReturnType> </file> <file src="apps/dav/lib/Connector/Sabre/BearerAuth.php"> <UndefinedInterfaceMethod> - <code>tryTokenLogin</code> + <code><![CDATA[tryTokenLogin]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/dav/lib/Connector/Sabre/Directory.php"> <InvalidPropertyAssignmentValue> - <code>$nodes</code> + <code><![CDATA[$nodes]]></code> </InvalidPropertyAssignmentValue> <InvalidReturnStatement> <code><![CDATA[$this->dirContent]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>\Sabre\DAV\INode[]</code> + <code><![CDATA[\Sabre\DAV\INode[]]]></code> </InvalidReturnType> <LessSpecificReturnStatement> <code><![CDATA[$this->node]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>Folder</code> + <code><![CDATA[Folder]]></code> </MoreSpecificReturnType> <NullArgument> - <code>null</code> - <code>null</code> - <code>null</code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> </NullArgument> <ParamNameMismatch> - <code>$fullSourcePath</code> + <code><![CDATA[$fullSourcePath]]></code> </ParamNameMismatch> </file> <file src="apps/dav/lib/Connector/Sabre/File.php"> @@ -408,33 +394,39 @@ <code><![CDATA[$this->node]]></code> </LessSpecificReturnStatement> <MoreSpecificImplementedParamType> - <code>$data</code> + <code><![CDATA[$data]]></code> </MoreSpecificImplementedParamType> <MoreSpecificReturnType> - <code>\OCP\Files\File</code> + <code><![CDATA[\OCP\Files\File]]></code> </MoreSpecificReturnType> + <NoValue> + <code><![CDATA[$data]]></code> + </NoValue> + <RedundantCondition> + <code><![CDATA[$data !== null]]></code> + </RedundantCondition> </file> <file src="apps/dav/lib/Connector/Sabre/FilesReportPlugin.php"> <InvalidArgument> - <code>0</code> + <code><![CDATA[0]]></code> </InvalidArgument> <InvalidNullableReturnType> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidNullableReturnType> <TooManyArguments> <code><![CDATA[new PreconditionFailed('Cannot filter by non-existing tag', 0, $e)]]></code> </TooManyArguments> <UndefinedClass> - <code>\OCA\Circles\Api\v1\Circles</code> + <code><![CDATA[\OCA\Circles\Api\v1\Circles]]></code> </UndefinedClass> <UndefinedInterfaceMethod> - <code>getPath</code> + <code><![CDATA[getPath]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/dav/lib/Connector/Sabre/Node.php"> <InvalidNullableReturnType> - <code>int</code> - <code>integer</code> + <code><![CDATA[int]]></code> + <code><![CDATA[integer]]></code> </InvalidNullableReturnType> <NullableReturnStatement> <code><![CDATA[$this->info->getId()]]></code> @@ -443,41 +435,41 @@ </file> <file src="apps/dav/lib/Connector/Sabre/Principal.php"> <InvalidNullableReturnType> - <code>array</code> + <code><![CDATA[array]]></code> </InvalidNullableReturnType> <InvalidReturnStatement> - <code>$principals</code> + <code><![CDATA[$principals]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string[]</code> + <code><![CDATA[string[]]]></code> </InvalidReturnType> <InvalidScalarArgument> - <code>$results</code> + <code><![CDATA[$results]]></code> </InvalidScalarArgument> <NullableReturnStatement> <code><![CDATA[$this->circleToPrincipal($decodedName) ?: $this->circleToPrincipal($name)]]></code> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> </NullableReturnStatement> <UndefinedClass> - <code>\OCA\Circles\Api\v1\Circles</code> - <code>\OCA\Circles\Api\v1\Circles</code> + <code><![CDATA[\OCA\Circles\Api\v1\Circles]]></code> + <code><![CDATA[\OCA\Circles\Api\v1\Circles]]></code> </UndefinedClass> </file> <file src="apps/dav/lib/Connector/Sabre/ServerFactory.php"> <TooManyArguments> - <code>new \OCA\DAV\Connector\Sabre\QuotaPlugin($view, true)</code> + <code><![CDATA[new \OCA\DAV\Connector\Sabre\QuotaPlugin($view, true)]]></code> </TooManyArguments> </file> <file src="apps/dav/lib/Connector/Sabre/ShareTypeList.php"> <InvalidArgument> - <code>$shareType</code> + <code><![CDATA[$shareType]]></code> </InvalidArgument> </file> <file src="apps/dav/lib/Connector/Sabre/ShareeList.php"> @@ -487,10 +479,10 @@ </file> <file src="apps/dav/lib/Connector/Sabre/TagsPlugin.php"> <NullableReturnStatement> - <code>null</code> + <code><![CDATA[null]]></code> </NullableReturnStatement> <UndefinedInterfaceMethod> - <code>getId</code> + <code><![CDATA[getId]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/dav/lib/Controller/InvitationResponseController.php"> @@ -500,39 +492,39 @@ </file> <file src="apps/dav/lib/DAV/CustomPropertiesBackend.php"> <InvalidArgument> - <code>$whereValues</code> + <code><![CDATA[$whereValues]]></code> </InvalidArgument> </file> <file src="apps/dav/lib/DAV/GroupPrincipalBackend.php"> <InvalidNullableReturnType> - <code>array</code> - <code>string</code> + <code><![CDATA[array]]></code> + <code><![CDATA[string]]></code> </InvalidNullableReturnType> <InvalidReturnStatement> - <code>$principals</code> + <code><![CDATA[$principals]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string[]</code> + <code><![CDATA[string[]]]></code> </InvalidReturnType> <MoreSpecificImplementedParamType> - <code>$members</code> + <code><![CDATA[$members]]></code> </MoreSpecificImplementedParamType> <NullableReturnStatement> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="apps/dav/lib/DAV/SystemPrincipalBackend.php"> <InvalidNullableReturnType> - <code>array</code> + <code><![CDATA[array]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>null</code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="apps/dav/lib/Direct/Server.php"> @@ -542,13 +534,13 @@ </file> <file src="apps/dav/lib/Files/FileSearchBackend.php"> <InvalidReturnStatement> - <code>$value</code> + <code><![CDATA[$value]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>?string</code> + <code><![CDATA[?string]]></code> </InvalidReturnType> <ParamNameMismatch> - <code>$search</code> + <code><![CDATA[$search]]></code> </ParamNameMismatch> <RedundantCondition> <code><![CDATA[$date->getTimestamp() !== false]]></code> @@ -563,7 +555,7 @@ <code><![CDATA[$this->backend->getArbiterPath()]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidReturnType> </file> <file src="apps/dav/lib/HookManager.php"> @@ -574,12 +566,12 @@ </file> <file src="apps/dav/lib/Migration/BuildCalendarSearchIndexBackgroundJob.php"> <ParamNameMismatch> - <code>$arguments</code> + <code><![CDATA[$arguments]]></code> </ParamNameMismatch> </file> <file src="apps/dav/lib/Migration/BuildSocialSearchIndexBackgroundJob.php"> <ParamNameMismatch> - <code>$arguments</code> + <code><![CDATA[$arguments]]></code> </ParamNameMismatch> </file> <file src="apps/dav/lib/Search/ContactsSearchProvider.php"> @@ -604,14 +596,14 @@ <code><![CDATA[$this->l10n->l('date', $startDateTime, ['width' => 'medium'])]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidReturnType> <UndefinedMethod> - <code>getDateTime</code> - <code>getDateTime</code> - <code>hasTime</code> - <code>isFloating</code> - <code>isFloating</code> + <code><![CDATA[getDateTime]]></code> + <code><![CDATA[getDateTime]]></code> + <code><![CDATA[hasTime]]></code> + <code><![CDATA[isFloating]]></code> + <code><![CDATA[isFloating]]></code> </UndefinedMethod> </file> <file src="apps/dav/lib/Search/TasksSearchProvider.php"> @@ -619,52 +611,52 @@ <code><![CDATA[$query->getCursor()]]></code> </InvalidOperand> <UndefinedMethod> - <code>getDateTime</code> - <code>getDateTime</code> - <code>hasTime</code> + <code><![CDATA[getDateTime]]></code> + <code><![CDATA[getDateTime]]></code> + <code><![CDATA[hasTime]]></code> </UndefinedMethod> </file> <file src="apps/dav/lib/SystemTag/SystemTagsObjectMappingCollection.php"> <ParamNameMismatch> - <code>$tagId</code> - <code>$tagName</code> + <code><![CDATA[$tagId]]></code> + <code><![CDATA[$tagName]]></code> </ParamNameMismatch> </file> <file src="apps/dav/lib/SystemTag/SystemTagsObjectTypeCollection.php"> <ParamNameMismatch> - <code>$objectName</code> + <code><![CDATA[$objectName]]></code> </ParamNameMismatch> </file> <file src="apps/dav/lib/Traits/PrincipalProxyTrait.php"> <MoreSpecificImplementedParamType> - <code>$members</code> + <code><![CDATA[$members]]></code> </MoreSpecificImplementedParamType> </file> <file src="apps/dav/lib/Upload/AssemblyStream.php"> <FalsableReturnStatement> - <code>false</code> + <code><![CDATA[false]]></code> </FalsableReturnStatement> <InvalidPropertyAssignmentValue> <code><![CDATA[$this->currentStream]]></code> </InvalidPropertyAssignmentValue> <InvalidReturnStatement> - <code>$context</code> + <code><![CDATA[$context]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>array</code> + <code><![CDATA[array]]></code> </InvalidReturnType> <RedundantFunctionCall> - <code>array_values</code> + <code><![CDATA[array_values]]></code> </RedundantFunctionCall> </file> <file src="apps/dav/lib/Upload/ChunkingV2Plugin.php"> <UndefinedInterfaceMethod> - <code>getId</code> - <code>getId</code> - <code>getId</code> - <code>getInternalPath</code> - <code>getNode</code> - <code>getSize</code> + <code><![CDATA[getId]]></code> + <code><![CDATA[getId]]></code> + <code><![CDATA[getId]]></code> + <code><![CDATA[getInternalPath]]></code> + <code><![CDATA[getNode]]></code> + <code><![CDATA[getSize]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/dav/lib/UserMigration/ContactsMigrator.php"> @@ -677,7 +669,7 @@ ]]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>array{name: string, displayName: string, description: ?string, vCards: VCard[]}</code> + <code><![CDATA[array{name: string, displayName: string, description: ?string, vCards: VCard[]}]]></code> </MoreSpecificReturnType> </file> <file src="apps/encryption/lib/Command/FixKeyLocation.php"> @@ -692,12 +684,12 @@ </file> <file src="apps/encryption/lib/Crypto/Encryption.php"> <ImplementedParamTypeMismatch> - <code>$position</code> + <code><![CDATA[$position]]></code> </ImplementedParamTypeMismatch> </file> <file src="apps/encryption/lib/KeyManager.php"> <InvalidThrow> - <code>throw $exception;</code> + <code><![CDATA[throw $exception;]]></code> </InvalidThrow> </file> <file src="apps/encryption/lib/Session.php"> @@ -710,64 +702,56 @@ <code><![CDATA[$this->files->getMount($path)->getStorage()]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>\OC\Files\Storage\Storage|null</code> + <code><![CDATA[\OC\Files\Storage\Storage|null]]></code> </MoreSpecificReturnType> </file> <file src="apps/federatedfilesharing/lib/Controller/RequestHandlerController.php"> <InvalidArgument> - <code>$id</code> - <code>$id</code> - <code>$id</code> - <code>$id</code> - <code>$id</code> - <code>$id</code> - <code>$remoteId</code> + <code><![CDATA[$id]]></code> + <code><![CDATA[$id]]></code> + <code><![CDATA[$id]]></code> + <code><![CDATA[$id]]></code> + <code><![CDATA[$id]]></code> + <code><![CDATA[$id]]></code> + <code><![CDATA[$remoteId]]></code> </InvalidArgument> </file> <file src="apps/federatedfilesharing/lib/FederatedShareProvider.php"> <InvalidArgument> - <code>$shareId</code> - <code>$shareId</code> - <code>$shareId</code> - <code>$shareId</code> + <code><![CDATA[$shareId]]></code> + <code><![CDATA[$shareId]]></code> + <code><![CDATA[$shareId]]></code> + <code><![CDATA[$shareId]]></code> <code><![CDATA[(int)$data['id']]]></code> </InvalidArgument> </file> <file src="apps/federatedfilesharing/lib/Notifications.php"> <InvalidReturnType> - <code>bool</code> - <code>bool</code> - <code>bool</code> + <code><![CDATA[bool]]></code> + <code><![CDATA[bool]]></code> + <code><![CDATA[bool]]></code> </InvalidReturnType> </file> <file src="apps/federatedfilesharing/lib/OCM/CloudFederationProviderFiles.php"> <InvalidArgument> - <code>$id</code> - <code>$id</code> - <code>$id</code> - <code>$id</code> + <code><![CDATA[$id]]></code> + <code><![CDATA[$id]]></code> + <code><![CDATA[$id]]></code> + <code><![CDATA[$id]]></code> </InvalidArgument> <InvalidReturnStatement> - <code>$shareId</code> + <code><![CDATA[$shareId]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidReturnType> <InvalidScalarArgument> <code><![CDATA[(int)$share['id']]]></code> </InvalidScalarArgument> </file> - <file src="apps/federation/lib/DbHandler.php"> - <LessSpecificReturnStatement> - <code>$result</code> - </LessSpecificReturnStatement> - <MoreSpecificReturnType> - <code><![CDATA[list<array{id: int, url: string, url_hash: string, shared_secret: ?string, status: int, sync_token: ?string}>]]></code> - </MoreSpecificReturnType> - </file> <file src="apps/files/ajax/download.php"> <InvalidArgument> - <code>$files_list</code> + <code><![CDATA[$files_list]]></code> </InvalidArgument> </file> <file src="apps/files/lib/Activity/Provider.php"> @@ -775,11 +759,11 @@ <code><![CDATA[$this->fileEncrypted[$fileId]]]></code> </FalsableReturnStatement> <LessSpecificReturnStatement> - <code>$folder</code> + <code><![CDATA[$folder]]></code> <code><![CDATA[$this->fileEncrypted[$fileId]]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>Folder</code> + <code><![CDATA[Folder]]></code> </MoreSpecificReturnType> <TypeDoesNotContainType> <code><![CDATA[$this->fileIsEncrypted]]></code> @@ -800,50 +784,50 @@ </file> <file src="apps/files/lib/Command/ScanAppData.php"> <NullArgument> - <code>null</code> - <code>null</code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> </NullArgument> </file> <file src="apps/files/lib/Controller/DirectEditingController.php"> <InvalidArgument> - <code>$templateId</code> + <code><![CDATA[$templateId]]></code> </InvalidArgument> <UndefinedInterfaceMethod> - <code>getTemplates</code> - <code>open</code> + <code><![CDATA[getTemplates]]></code> + <code><![CDATA[open]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/files/lib/Helper.php"> <UndefinedInterfaceMethod> - <code>$file</code> - <code>$i</code> - <code>$i</code> - <code>$i</code> - <code>$i</code> - <code>$i</code> - <code>$i</code> - <code>$i</code> - <code>$i</code> - <code>$i</code> - <code>$i</code> - <code>$i</code> - <code>$i</code> + <code><![CDATA[$file]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> + <code><![CDATA[$i]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/files/lib/Service/OwnershipTransferService.php"> <UndefinedInterfaceMethod> - <code>isReadyForUser</code> + <code><![CDATA[isReadyForUser]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/files_external/appinfo/routes.php"> <InvalidScope> - <code>$this</code> + <code><![CDATA[$this]]></code> </InvalidScope> </file> <file src="apps/files_external/lib/Controller/StoragesController.php"> <RedundantCast> <code><![CDATA[(int)$e->getCode()]]></code> - <code>(int)$status</code> + <code><![CDATA[(int)$status]]></code> </RedundantCast> </file> <file src="apps/files_external/lib/Lib/Backend/Backend.php"> @@ -856,8 +840,14 @@ </file> <file src="apps/files_external/lib/Lib/Storage/SFTP.php"> <InternalMethod> - <code>put</code> + <code><![CDATA[put]]></code> </InternalMethod> + <InvalidNullableReturnType> + <code><![CDATA[int]]></code> + </InvalidNullableReturnType> + <NullableReturnStatement> + <code><![CDATA[$size]]></code> + </NullableReturnStatement> </file> <file src="apps/files_external/lib/Lib/Storage/SMB.php"> <RedundantCast> @@ -875,59 +865,59 @@ <code><![CDATA[$object->lastModified]]></code> </InvalidArgument> <InvalidNullableReturnType> - <code>filetype</code> - <code>fopen</code> + <code><![CDATA[filetype]]></code> + <code><![CDATA[fopen]]></code> </InvalidNullableReturnType> </file> <file src="apps/files_external/lib/Migration/DummyUserSession.php"> <InvalidReturnType> - <code>login</code> + <code><![CDATA[login]]></code> </InvalidReturnType> </file> <file src="apps/files_external/lib/MountConfig.php"> <InternalMethod> - <code>decrypt</code> - <code>encrypt</code> - <code>setIV</code> - <code>setIV</code> - <code>setKey</code> + <code><![CDATA[decrypt]]></code> + <code><![CDATA[encrypt]]></code> + <code><![CDATA[setIV]]></code> + <code><![CDATA[setIV]]></code> + <code><![CDATA[setKey]]></code> </InternalMethod> <TooManyArguments> - <code>test</code> + <code><![CDATA[test]]></code> </TooManyArguments> </file> <file src="apps/files_sharing/lib/Controller/ShareAPIController.php"> <RedundantCast> - <code>(int)$code</code> - <code>(int)$code</code> + <code><![CDATA[(int)$code]]></code> + <code><![CDATA[(int)$code]]></code> </RedundantCast> <UndefinedClass> - <code>\OCA\Circles\Api\v1\Circles</code> - <code>\OCA\Circles\Api\v1\Circles</code> + <code><![CDATA[\OCA\Circles\Api\v1\Circles]]></code> + <code><![CDATA[\OCA\Circles\Api\v1\Circles]]></code> </UndefinedClass> <UndefinedDocblockClass> <code><![CDATA[$this->getRoomShareHelper()]]></code> <code><![CDATA[$this->getRoomShareHelper()]]></code> <code><![CDATA[$this->getRoomShareHelper()]]></code> - <code>\OCA\Talk\Share\Helper\ShareAPIController</code> + <code><![CDATA[\OCA\Talk\Share\Helper\ShareAPIController]]></code> </UndefinedDocblockClass> </file> <file src="apps/files_sharing/lib/Controller/ShareController.php"> <InvalidArgument> - <code>$files_list</code> + <code><![CDATA[$files_list]]></code> </InvalidArgument> </file> <file src="apps/files_sharing/lib/External/Manager.php"> <LessSpecificReturnStatement> - <code>$mount</code> + <code><![CDATA[$mount]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>Mount</code> + <code><![CDATA[Mount]]></code> </MoreSpecificReturnType> </file> <file src="apps/files_sharing/lib/External/Scanner.php"> <MoreSpecificImplementedParamType> - <code>$cacheData</code> + <code><![CDATA[$cacheData]]></code> </MoreSpecificImplementedParamType> </file> <file src="apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php"> @@ -937,26 +927,26 @@ </file> <file src="apps/files_sharing/lib/MountProvider.php"> <RedundantFunctionCall> - <code>array_values</code> + <code><![CDATA[array_values]]></code> </RedundantFunctionCall> </file> <file src="apps/files_sharing/lib/ShareBackend/File.php"> <InvalidArgument> - <code>$itemSource</code> - <code>$itemSource</code> + <code><![CDATA[$itemSource]]></code> + <code><![CDATA[$itemSource]]></code> </InvalidArgument> <MoreSpecificImplementedParamType> - <code>$shareWith</code> + <code><![CDATA[$shareWith]]></code> </MoreSpecificImplementedParamType> </file> <file src="apps/files_sharing/lib/ShareBackend/Folder.php"> <UndefinedInterfaceMethod> - <code>fetchRow</code> + <code><![CDATA[fetchRow]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/files_sharing/lib/SharedMount.php"> <InvalidReturnType> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidReturnType> </file> <file src="apps/files_sharing/lib/SharedStorage.php"> @@ -964,10 +954,10 @@ <code><![CDATA[$this->sourceRootInfo]]></code> </FalsableReturnStatement> <InvalidNullableReturnType> - <code>ICacheEntry</code> + <code><![CDATA[ICacheEntry]]></code> </InvalidNullableReturnType> <InvalidReturnStatement> - <code>new FailedCache()</code> + <code><![CDATA[new FailedCache()]]></code> </InvalidReturnStatement> <NullableReturnStatement> <code><![CDATA[$this->sourceRootInfo]]></code> @@ -975,7 +965,7 @@ </file> <file src="apps/files_sharing/lib/Updater.php"> <UndefinedMethod> - <code>moveMount</code> + <code><![CDATA[moveMount]]></code> </UndefinedMethod> </file> <file src="apps/files_sharing/templates/public.php"> @@ -986,7 +976,7 @@ </file> <file src="apps/files_trashbin/lib/Sabre/AbstractTrash.php"> <InvalidNullableReturnType> - <code>int</code> + <code><![CDATA[int]]></code> </InvalidNullableReturnType> <NullableReturnStatement> <code><![CDATA[$this->data->getId()]]></code> @@ -994,66 +984,66 @@ </file> <file src="apps/files_trashbin/lib/Sabre/AbstractTrashFolder.php"> <InvalidReturnStatement> - <code>$entry</code> + <code><![CDATA[$entry]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>ITrash</code> + <code><![CDATA[ITrash]]></code> </InvalidReturnType> </file> <file src="apps/files_trashbin/lib/Sabre/RestoreFolder.php"> <InvalidNullableReturnType> - <code>getChild</code> + <code><![CDATA[getChild]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>null</code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="apps/files_trashbin/lib/Sabre/RootCollection.php"> <MismatchingDocblockReturnType> - <code>INode</code> + <code><![CDATA[INode]]></code> </MismatchingDocblockReturnType> </file> <file src="apps/files_trashbin/lib/Sabre/TrashRoot.php"> <InvalidReturnStatement> - <code>$entry</code> + <code><![CDATA[$entry]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>ITrash</code> + <code><![CDATA[ITrash]]></code> </InvalidReturnType> </file> <file src="apps/files_trashbin/lib/Trash/LegacyTrashBackend.php"> <UndefinedInterfaceMethod> - <code>$file</code> + <code><![CDATA[$file]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/files_trashbin/lib/Trashbin.php"> <FalsableReturnStatement> - <code>false</code> + <code><![CDATA[false]]></code> </FalsableReturnStatement> <InvalidArgument> - <code>$timestamp</code> + <code><![CDATA[$timestamp]]></code> </InvalidArgument> <InvalidScalarArgument> - <code>$timestamp</code> + <code><![CDATA[$timestamp]]></code> </InvalidScalarArgument> </file> <file src="apps/files_versions/appinfo/routes.php"> <InvalidScope> - <code>$this</code> - <code>$this</code> + <code><![CDATA[$this]]></code> + <code><![CDATA[$this]]></code> </InvalidScope> </file> <file src="apps/files_versions/lib/Sabre/RestoreFolder.php"> <InvalidNullableReturnType> - <code>getChild</code> + <code><![CDATA[getChild]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>null</code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="apps/files_versions/lib/Sabre/VersionHome.php"> <InvalidNullableReturnType> - <code>getChild</code> + <code><![CDATA[getChild]]></code> </InvalidNullableReturnType> </file> <file src="apps/files_versions/lib/Storage.php"> @@ -1073,23 +1063,23 @@ </file> <file src="apps/provisioning_api/lib/Controller/UsersController.php"> <TypeDoesNotContainNull> - <code>$groupid === null</code> - <code>$groupid === null</code> + <code><![CDATA[$groupid === null]]></code> + <code><![CDATA[$groupid === null]]></code> </TypeDoesNotContainNull> </file> <file src="apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php"> <InvalidReturnType> - <code>Response</code> + <code><![CDATA[Response]]></code> </InvalidReturnType> </file> <file src="apps/settings/lib/AppInfo/Application.php"> <UndefinedInterfaceMethod> - <code>getSettingsManager</code> + <code><![CDATA[getSettingsManager]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/settings/lib/Controller/AppSettingsController.php"> <UndefinedInterfaceMethod> - <code>ignoreNextcloudRequirementForApp</code> + <code><![CDATA[ignoreNextcloudRequirementForApp]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/settings/lib/Hooks.php"> @@ -1099,12 +1089,12 @@ </file> <file src="apps/settings/lib/Settings/Admin/Security.php"> <UndefinedInterfaceMethod> - <code>isReady</code> + <code><![CDATA[isReady]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/settings/lib/Settings/Admin/Sharing.php"> <NullArgument> - <code>null</code> + <code><![CDATA[null]]></code> </NullArgument> </file> <file src="apps/sharebymail/lib/ShareByMailProvider.php"> @@ -1121,79 +1111,282 @@ </file> <file src="apps/theming/lib/Jobs/MigrateBackgroundImages.php"> <OverriddenInterfaceConstant> - <code>TIME_SENSITIVE</code> + <code><![CDATA[TIME_SENSITIVE]]></code> </OverriddenInterfaceConstant> </file> <file src="apps/theming/lib/Util.php"> <InvalidReturnStatement> + <code><![CDATA[$svg]]></code> <code><![CDATA[array_values($color->getRgb())]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>array{0: int, 1: int, 2: int}</code> + <code><![CDATA[array{0: int, 1: int, 2: int}]]></code> + <code><![CDATA[string]]></code> </InvalidReturnType> </file> <file src="apps/user_ldap/ajax/getNewServerConfigPrefix.php"> <InvalidScalarArgument> - <code>$ln + 1</code> + <code><![CDATA[$ln + 1]]></code> </InvalidScalarArgument> </file> + <file src="apps/user_ldap/ajax/wizard.php"> + <UndefinedMagicPropertyAssignment> + <code><![CDATA[$con->ldapConfigurationActive]]></code> + </UndefinedMagicPropertyAssignment> + </file> <file src="apps/user_ldap/appinfo/routes.php"> <InvalidScope> - <code>$this</code> + <code><![CDATA[$this]]></code> </InvalidScope> </file> <file src="apps/user_ldap/lib/Access.php"> <InvalidReturnStatement> - <code>$uuid</code> - <code>$values</code> + <code><![CDATA[$uuid]]></code> + <code><![CDATA[$values]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string[]</code> + <code><![CDATA[string[]]]></code> </InvalidReturnType> <RedundantCast> <code><![CDATA[(int)$e->getCode()]]></code> </RedundantCast> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$this->connection->ldapAttributesForGroupSearch]]></code> + <code><![CDATA[$this->connection->ldapAttributesForUserSearch]]></code> + <code><![CDATA[$this->connection->ldapBase]]></code> + <code><![CDATA[$this->connection->ldapBaseGroups]]></code> + <code><![CDATA[$this->connection->ldapBaseGroups]]></code> + <code><![CDATA[$this->connection->ldapBaseGroups]]></code> + <code><![CDATA[$this->connection->ldapBaseUsers]]></code> + <code><![CDATA[$this->connection->ldapBaseUsers]]></code> + <code><![CDATA[$this->connection->ldapBaseUsers]]></code> + <code><![CDATA[$this->connection->ldapBaseUsers]]></code> + <code><![CDATA[$this->connection->ldapBaseUsers]]></code> + <code><![CDATA[$this->connection->ldapCacheTTL]]></code> + <code><![CDATA[$this->connection->ldapCacheTTL]]></code> + <code><![CDATA[$this->connection->ldapExpertUUIDGroupAttr]]></code> + <code><![CDATA[$this->connection->ldapExpertUUIDGroupAttr]]></code> + <code><![CDATA[$this->connection->ldapExpertUUIDUserAttr]]></code> + <code><![CDATA[$this->connection->ldapExpertUUIDUserAttr]]></code> + <code><![CDATA[$this->connection->ldapExpertUUIDUserAttr]]></code> + <code><![CDATA[$this->connection->ldapExpertUsernameAttr]]></code> + <code><![CDATA[$this->connection->ldapGroupDisplayName]]></code> + <code><![CDATA[$this->connection->ldapGroupDisplayName]]></code> + <code><![CDATA[$this->connection->ldapGroupDisplayName]]></code> + <code><![CDATA[$this->connection->ldapGroupFilter]]></code> + <code><![CDATA[$this->connection->ldapIgnoreNamingRules]]></code> + <code><![CDATA[$this->connection->ldapLoginFilter]]></code> + <code><![CDATA[$this->connection->ldapLoginFilter]]></code> + <code><![CDATA[$this->connection->ldapPagingSize]]></code> + <code><![CDATA[$this->connection->ldapPagingSize]]></code> + <code><![CDATA[$this->connection->ldapPagingSize]]></code> + <code><![CDATA[$this->connection->ldapPagingSize]]></code> + <code><![CDATA[$this->connection->ldapPagingSize]]></code> + <code><![CDATA[$this->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->connection->ldapUserDisplayName2]]></code> + <code><![CDATA[$this->connection->ldapUserFilter]]></code> + <code><![CDATA[$this->connection->ldapUserFilter]]></code> + <code><![CDATA[$this->connection->ldapUserFilter]]></code> + <code><![CDATA[$this->connection->ldapUuidUserAttribute]]></code> + <code><![CDATA[$this->connection->turnOnPasswordChange]]></code> + </UndefinedMagicPropertyFetch> + </file> + <file src="apps/user_ldap/lib/Command/CreateEmptyConfig.php"> + <UndefinedMagicPropertyAssignment> + <code><![CDATA[$configHolder->ldapConfigurationActive]]></code> + </UndefinedMagicPropertyAssignment> + </file> + <file src="apps/user_ldap/lib/Command/PromoteGroup.php"> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$access->connection->ldapAdminGroup]]></code> + </UndefinedMagicPropertyFetch> + </file> + <file src="apps/user_ldap/lib/Configuration.php"> + <UndefinedThisPropertyFetch> + <code><![CDATA[$this->ldapUserAvatarRule]]></code> + </UndefinedThisPropertyFetch> </file> <file src="apps/user_ldap/lib/Connection.php"> <NoValue> - <code>$subj</code> + <code><![CDATA[$subj]]></code> </NoValue> <ParadoxicalCondition> - <code>default: + <code><![CDATA[default: $subj = $key; - break;</code> + break;]]></code> </ParadoxicalCondition> + <UndefinedMagicPropertyAssignment> + <code><![CDATA[$this->configuration->ldapBackupPort]]></code> + <code><![CDATA[$this->configuration->ldapTLS]]></code> + </UndefinedMagicPropertyAssignment> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$this->configuration->ldapAgentName]]></code> + <code><![CDATA[$this->configuration->ldapAgentName]]></code> + <code><![CDATA[$this->configuration->ldapAgentName]]></code> + <code><![CDATA[$this->configuration->ldapAgentPassword]]></code> + <code><![CDATA[$this->configuration->ldapAgentPassword]]></code> + <code><![CDATA[$this->configuration->ldapAgentPassword]]></code> + <code><![CDATA[$this->configuration->ldapBackupPort]]></code> + <code><![CDATA[$this->configuration->ldapBase]]></code> + <code><![CDATA[$this->configuration->ldapBase]]></code> + <code><![CDATA[$this->configuration->ldapBaseGroups]]></code> + <code><![CDATA[$this->configuration->ldapBaseUsers]]></code> + <code><![CDATA[$this->configuration->ldapCacheTTL]]></code> + <code><![CDATA[$this->configuration->ldapCacheTTL]]></code> + <code><![CDATA[$this->configuration->ldapConfigurationActive]]></code> + <code><![CDATA[$this->configuration->ldapConfigurationActive]]></code> + <code><![CDATA[$this->configuration->ldapConfigurationActive]]></code> + <code><![CDATA[$this->configuration->ldapConnectionTimeout]]></code> + <code><![CDATA[$this->configuration->ldapHost]]></code> + <code><![CDATA[$this->configuration->ldapHost]]></code> + <code><![CDATA[$this->configuration->ldapLoginFilter]]></code> + <code><![CDATA[$this->configuration->ldapOverrideMainServer]]></code> + <code><![CDATA[$this->configuration->ldapPort]]></code> + <code><![CDATA[$this->configuration->ldapTLS]]></code> + <code><![CDATA[$this->configuration->ldapTLS]]></code> + <code><![CDATA[$this->configuration->turnOffCertCheck]]></code> + </UndefinedMagicPropertyFetch> + </file> + <file src="apps/user_ldap/lib/Controller/ConfigAPIController.php"> + <UndefinedMagicPropertyAssignment> + <code><![CDATA[$configHolder->ldapConfigurationActive]]></code> + </UndefinedMagicPropertyAssignment> </file> <file src="apps/user_ldap/lib/Group_LDAP.php"> + <InvalidArgument> + <code><![CDATA[$filterParts]]></code> + <code><![CDATA[$filterParts]]></code> + <code><![CDATA[[ + str_replace('%uid', trim($member), $this->access->connection->ldapLoginFilter), + $this->access->combineFilterWithAnd([ + $this->access->getFilterPartForUserSearch($search), + $this->access->connection->ldapUserFilter + ]) + ]]]></code> + <code><![CDATA[[ + str_replace('%uid', $member, $this->access->connection->ldapLoginFilter), + $this->access->getFilterPartForUserSearch($search) + ]]]></code> + </InvalidArgument> <InvalidScalarArgument> - <code>$groupID</code> + <code><![CDATA[$groupID]]></code> </InvalidScalarArgument> + <UndefinedMagicPropertyAssignment> + <code><![CDATA[$this->access->connection->ldapMatchingRuleInChainState]]></code> + <code><![CDATA[$this->access->connection->ldapMatchingRuleInChainState]]></code> + </UndefinedMagicPropertyAssignment> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$this->access->connection->hasMemberOfFilterSupport]]></code> + <code><![CDATA[$this->access->connection->hasMemberOfFilterSupport]]></code> + <code><![CDATA[$this->access->connection->ldapAdminGroup]]></code> + <code><![CDATA[$this->access->connection->ldapBaseGroups]]></code> + <code><![CDATA[$this->access->connection->ldapDynamicGroupMemberURL]]></code> + <code><![CDATA[$this->access->connection->ldapDynamicGroupMemberURL]]></code> + <code><![CDATA[$this->access->connection->ldapGidNumber]]></code> + <code><![CDATA[$this->access->connection->ldapGidNumber]]></code> + <code><![CDATA[$this->access->connection->ldapGidNumber]]></code> + <code><![CDATA[$this->access->connection->ldapGroupDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapGroupDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapGroupDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapGroupDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapGroupDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapGroupFilter]]></code> + <code><![CDATA[$this->access->connection->ldapGroupFilter]]></code> + <code><![CDATA[$this->access->connection->ldapGroupFilter]]></code> + <code><![CDATA[$this->access->connection->ldapGroupFilter]]></code> + <code><![CDATA[$this->access->connection->ldapGroupFilter]]></code> + <code><![CDATA[$this->access->connection->ldapGroupFilter]]></code> + <code><![CDATA[$this->access->connection->ldapGroupFilter]]></code> + <code><![CDATA[$this->access->connection->ldapGroupFilter]]></code> + <code><![CDATA[$this->access->connection->ldapGroupMemberAssocAttr]]></code> + <code><![CDATA[$this->access->connection->ldapGroupMemberAssocAttr]]></code> + <code><![CDATA[$this->access->connection->ldapGroupMemberAssocAttr]]></code> + <code><![CDATA[$this->access->connection->ldapHost]]></code> + <code><![CDATA[$this->access->connection->ldapLoginFilter]]></code> + <code><![CDATA[$this->access->connection->ldapLoginFilter]]></code> + <code><![CDATA[$this->access->connection->ldapLoginFilter]]></code> + <code><![CDATA[$this->access->connection->ldapMatchingRuleInChainState]]></code> + <code><![CDATA[$this->access->connection->ldapMatchingRuleInChainState]]></code> + <code><![CDATA[$this->access->connection->ldapNestedGroups]]></code> + <code><![CDATA[$this->access->connection->ldapNestedGroups]]></code> + <code><![CDATA[$this->access->connection->ldapNestedGroups]]></code> + <code><![CDATA[$this->access->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapUserFilter]]></code> + <code><![CDATA[$this->access->connection->ldapUserFilter]]></code> + <code><![CDATA[$this->access->connection->ldapUserFilter]]></code> + <code><![CDATA[$this->access->connection->useMemberOfToDetectMembership]]></code> + <code><![CDATA[$this->access->connection->useMemberOfToDetectMembership]]></code> + </UndefinedMagicPropertyFetch> </file> <file src="apps/user_ldap/lib/Group_Proxy.php"> <ParamNameMismatch> - <code>$gid</code> + <code><![CDATA[$gid]]></code> </ParamNameMismatch> + <UnsupportedPropertyReferenceUsage> + <code><![CDATA[$this->refBackend = &$this->backends[$configPrefix]]]></code> + </UnsupportedPropertyReferenceUsage> + </file> + <file src="apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php"> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$access->connection->ldapExtStorageHomeAttribute]]></code> + </UndefinedMagicPropertyFetch> </file> <file src="apps/user_ldap/lib/Jobs/Sync.php"> <InvalidOperand> - <code>$i</code> + <code><![CDATA[$i]]></code> </InvalidOperand> <NullArgument> - <code>null</code> + <code><![CDATA[null]]></code> </NullArgument> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$access->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$access->connection->ldapUserFilter]]></code> + <code><![CDATA[$connection->ldapPagingSize]]></code> + <code><![CDATA[$ldapConfig->ldapPagingSize]]></code> + </UndefinedMagicPropertyFetch> + </file> + <file src="apps/user_ldap/lib/LDAP.php"> + <UndefinedVariable> + <code><![CDATA[$oldHandler]]></code> + </UndefinedVariable> </file> <file src="apps/user_ldap/lib/Mapping/AbstractMapping.php"> <RedundantCondition> - <code>isset($qb)</code> + <code><![CDATA[isset($qb)]]></code> </RedundantCondition> <TypeDoesNotContainNull> - <code>isset($qb)</code> + <code><![CDATA[isset($qb)]]></code> </TypeDoesNotContainNull> </file> <file src="apps/user_ldap/lib/User/Manager.php"> <InvalidDocblock> - <code>public function setLdapAccess(Access $access) {</code> + <code><![CDATA[public function setLdapAccess(Access $access) {]]></code> </InvalidDocblock> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$this->access->getConnection()->homeFolderNamingRule]]></code> + <code><![CDATA[$this->access->getConnection()->ldapAttributeAddress]]></code> + <code><![CDATA[$this->access->getConnection()->ldapAttributeBiography]]></code> + <code><![CDATA[$this->access->getConnection()->ldapAttributeFediverse]]></code> + <code><![CDATA[$this->access->getConnection()->ldapAttributeHeadline]]></code> + <code><![CDATA[$this->access->getConnection()->ldapAttributeOrganisation]]></code> + <code><![CDATA[$this->access->getConnection()->ldapAttributePhone]]></code> + <code><![CDATA[$this->access->getConnection()->ldapAttributeRole]]></code> + <code><![CDATA[$this->access->getConnection()->ldapAttributeTwitter]]></code> + <code><![CDATA[$this->access->getConnection()->ldapAttributeWebsite]]></code> + <code><![CDATA[$this->access->getConnection()->ldapEmailAttribute]]></code> + <code><![CDATA[$this->access->getConnection()->ldapExpertUUIDUserAttr]]></code> + <code><![CDATA[$this->access->getConnection()->ldapExtStorageHomeAttribute]]></code> + <code><![CDATA[$this->access->getConnection()->ldapQuotaAttribute]]></code> + <code><![CDATA[$this->access->getConnection()->ldapUserDisplayName]]></code> + <code><![CDATA[$this->access->getConnection()->ldapUserDisplayName2]]></code> + </UndefinedMagicPropertyFetch> </file> <file src="apps/user_ldap/lib/User/User.php"> <FalsableReturnStatement> @@ -1203,46 +1396,137 @@ <code><![CDATA[$this->refreshedFeatures]]></code> </InvalidPropertyAssignmentValue> <InvalidReturnType> - <code>null</code> + <code><![CDATA[null]]></code> </InvalidReturnType> <RedundantCondition> <code><![CDATA[$aQuota && (count($aQuota) > 0)]]></code> </RedundantCondition> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$this->access->connection->homeFolderNamingRule]]></code> + <code><![CDATA[$this->connection->homeFolderNamingRule]]></code> + <code><![CDATA[$this->connection->ldapAttributeAddress]]></code> + <code><![CDATA[$this->connection->ldapAttributeBiography]]></code> + <code><![CDATA[$this->connection->ldapAttributeFediverse]]></code> + <code><![CDATA[$this->connection->ldapAttributeHeadline]]></code> + <code><![CDATA[$this->connection->ldapAttributeOrganisation]]></code> + <code><![CDATA[$this->connection->ldapAttributePhone]]></code> + <code><![CDATA[$this->connection->ldapAttributeRole]]></code> + <code><![CDATA[$this->connection->ldapAttributeTwitter]]></code> + <code><![CDATA[$this->connection->ldapAttributeWebsite]]></code> + <code><![CDATA[$this->connection->ldapDefaultPPolicyDN]]></code> + <code><![CDATA[$this->connection->ldapEmailAttribute]]></code> + <code><![CDATA[$this->connection->ldapEmailAttribute]]></code> + <code><![CDATA[$this->connection->ldapExtStorageHomeAttribute]]></code> + <code><![CDATA[$this->connection->ldapExtStorageHomeAttribute]]></code> + <code><![CDATA[$this->connection->ldapQuotaAttribute]]></code> + <code><![CDATA[$this->connection->ldapQuotaAttribute]]></code> + <code><![CDATA[$this->connection->ldapQuotaDefault]]></code> + <code><![CDATA[$this->connection->ldapQuotaDefault]]></code> + <code><![CDATA[$this->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->connection->ldapUserDisplayName2]]></code> + <code><![CDATA[$this->connection->turnOnPasswordChange]]></code> + </UndefinedMagicPropertyFetch> </file> <file src="apps/user_ldap/lib/User_LDAP.php"> <ImplementedReturnTypeMismatch> - <code>string|false</code> + <code><![CDATA[string|false]]></code> </ImplementedReturnTypeMismatch> <MoreSpecificImplementedParamType> - <code>$limit</code> - <code>$offset</code> + <code><![CDATA[$limit]]></code> + <code><![CDATA[$offset]]></code> </MoreSpecificImplementedParamType> <NullableReturnStatement> - <code>null</code> + <code><![CDATA[null]]></code> </NullableReturnStatement> <RedundantCondition> <code><![CDATA[$displayName && (count($displayName) > 0)]]></code> - <code>is_string($dn)</code> + <code><![CDATA[is_string($dn)]]></code> </RedundantCondition> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$this->access->connection->ldapDefaultPPolicyDN]]></code> + <code><![CDATA[$this->access->connection->ldapHost]]></code> + <code><![CDATA[$this->access->connection->ldapHost]]></code> + <code><![CDATA[$this->access->connection->ldapPort]]></code> + <code><![CDATA[$this->access->connection->ldapUserAvatarRule]]></code> + <code><![CDATA[$this->access->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapUserDisplayName]]></code> + <code><![CDATA[$this->access->connection->ldapUserDisplayName2]]></code> + <code><![CDATA[$this->access->connection->ldapUserFilter]]></code> + <code><![CDATA[$this->access->connection->ldapUserFilter]]></code> + <code><![CDATA[$this->access->connection->markRemnantsAsDisabled]]></code> + <code><![CDATA[$this->access->connection->turnOnPasswordChange]]></code> + <code><![CDATA[$this->access->connection->turnOnPasswordChange]]></code> + </UndefinedMagicPropertyFetch> </file> <file src="apps/user_ldap/lib/User_Proxy.php"> <ParamNameMismatch> - <code>$uid</code> + <code><![CDATA[$uid]]></code> </ParamNameMismatch> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$this->getAccess(array_key_first($this->backends) ?? '')->connection->markRemnantsAsDisabled]]></code> + </UndefinedMagicPropertyFetch> + <UnsupportedPropertyReferenceUsage> + <code><![CDATA[$this->refBackend = &$this->backends[$configPrefix]]]></code> + </UnsupportedPropertyReferenceUsage> </file> <file src="apps/user_ldap/lib/Wizard.php"> <InvalidArrayOffset> - <code>$possibleAttrs[$i]</code> + <code><![CDATA[$possibleAttrs[$i]]]></code> </InvalidArrayOffset> + <UndefinedMagicPropertyAssignment> + <code><![CDATA[$this->configuration->hasMemberOfFilterSupport]]></code> + </UndefinedMagicPropertyAssignment> + <UndefinedMagicPropertyFetch> + <code><![CDATA[$this->access->connection->ldapLoginFilter]]></code> + <code><![CDATA[$this->configuration->hasMemberOfFilterSupport]]></code> + <code><![CDATA[$this->configuration->ldapAgentName]]></code> + <code><![CDATA[$this->configuration->ldapAgentName]]></code> + <code><![CDATA[$this->configuration->ldapAgentName]]></code> + <code><![CDATA[$this->configuration->ldapAgentName]]></code> + <code><![CDATA[$this->configuration->ldapAgentPassword]]></code> + <code><![CDATA[$this->configuration->ldapAgentPassword]]></code> + <code><![CDATA[$this->configuration->ldapAgentPassword]]></code> + <code><![CDATA[$this->configuration->ldapBase]]></code> + <code><![CDATA[$this->configuration->ldapBase]]></code> + <code><![CDATA[$this->configuration->ldapBase]]></code> + <code><![CDATA[$this->configuration->ldapBase]]></code> + <code><![CDATA[$this->configuration->ldapBaseGroups]]></code> + <code><![CDATA[$this->configuration->ldapEmailAttribute]]></code> + <code><![CDATA[$this->configuration->ldapGroupDisplayName]]></code> + <code><![CDATA[$this->configuration->ldapGroupFilter]]></code> + <code><![CDATA[$this->configuration->ldapGroupFilter]]></code> + <code><![CDATA[$this->configuration->ldapGroupFilterGroups]]></code> + <code><![CDATA[$this->configuration->ldapGroupFilterObjectclass]]></code> + <code><![CDATA[$this->configuration->ldapHost]]></code> + <code><![CDATA[$this->configuration->ldapHost]]></code> + <code><![CDATA[$this->configuration->ldapHost]]></code> + <code><![CDATA[$this->configuration->ldapHost]]></code> + <code><![CDATA[$this->configuration->ldapHost]]></code> + <code><![CDATA[$this->configuration->ldapLoginFilterAttributes]]></code> + <code><![CDATA[$this->configuration->ldapLoginFilterAttributes]]></code> + <code><![CDATA[$this->configuration->ldapLoginFilterEmail]]></code> + <code><![CDATA[$this->configuration->ldapLoginFilterUsername]]></code> + <code><![CDATA[$this->configuration->ldapPort]]></code> + <code><![CDATA[$this->configuration->ldapPort]]></code> + <code><![CDATA[$this->configuration->ldapTLS]]></code> + <code><![CDATA[$this->configuration->ldapUserDisplayName]]></code> + <code><![CDATA[$this->configuration->ldapUserDisplayName]]></code> + <code><![CDATA[$this->configuration->ldapUserFilter]]></code> + <code><![CDATA[$this->configuration->ldapUserFilter]]></code> + <code><![CDATA[$this->configuration->ldapUserFilter]]></code> + <code><![CDATA[$this->configuration->ldapUserFilter]]></code> + <code><![CDATA[$this->configuration->ldapUserFilterGroups]]></code> + <code><![CDATA[$this->configuration->ldapUserFilterObjectclass]]></code> + </UndefinedMagicPropertyFetch> </file> <file src="apps/user_status/lib/AppInfo/Application.php"> <UndefinedInterfaceMethod> - <code>registerProvider</code> + <code><![CDATA[registerProvider]]></code> </UndefinedInterfaceMethod> </file> <file src="apps/workflowengine/lib/Check/AbstractStringCheck.php"> <NullArgument> - <code>null</code> + <code><![CDATA[null]]></code> </NullArgument> </file> <file src="apps/workflowengine/lib/Check/FileSize.php"> @@ -1250,27 +1534,27 @@ <code><![CDATA[$this->size]]></code> </FalsableReturnStatement> <InvalidPropertyAssignmentValue> - <code>$size</code> + <code><![CDATA[$size]]></code> </InvalidPropertyAssignmentValue> <InvalidReturnStatement> <code><![CDATA[$this->size]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidReturnType> </file> <file src="apps/workflowengine/lib/Check/RequestRemoteAddress.php"> <InvalidArgument> - <code>$decodedValue[1]</code> - <code>$decodedValue[1]</code> - <code>$decodedValue[1]</code> - <code>$decodedValue[1]</code> + <code><![CDATA[$decodedValue[1]]]></code> + <code><![CDATA[$decodedValue[1]]]></code> + <code><![CDATA[$decodedValue[1]]]></code> + <code><![CDATA[$decodedValue[1]]]></code> </InvalidArgument> </file> <file src="apps/workflowengine/lib/Check/RequestTime.php"> <InvalidScalarArgument> - <code>$hour1</code> - <code>$minute1</code> + <code><![CDATA[$hour1]]></code> + <code><![CDATA[$minute1]]></code> </InvalidScalarArgument> </file> <file src="apps/workflowengine/lib/Check/TFileCheck.php"> @@ -1280,56 +1564,56 @@ </file> <file src="apps/workflowengine/lib/Entity/File.php"> <InvalidReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidReturnType> </file> <file src="apps/workflowengine/lib/Manager.php"> <InvalidArgument> - <code>$missingCheck</code> + <code><![CDATA[$missingCheck]]></code> </InvalidArgument> <InvalidOperand> - <code>$result</code> + <code><![CDATA[$result]]></code> </InvalidOperand> <InvalidReturnStatement> - <code>$result</code> + <code><![CDATA[$result]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidReturnType> </file> <file src="apps/workflowengine/lib/Service/RuleMatcher.php"> <UndefinedInterfaceMethod> - <code>getAllConfiguredScopesForOperation</code> - <code>getChecks</code> - <code>getOperations</code> - <code>getOperations</code> - <code>isUserScopeEnabled</code> + <code><![CDATA[getAllConfiguredScopesForOperation]]></code> + <code><![CDATA[getChecks]]></code> + <code><![CDATA[getOperations]]></code> + <code><![CDATA[getOperations]]></code> + <code><![CDATA[isUserScopeEnabled]]></code> </UndefinedInterfaceMethod> </file> <file src="core/BackgroundJobs/CheckForUserCertificates.php"> <ParamNameMismatch> - <code>$arguments</code> + <code><![CDATA[$arguments]]></code> </ParamNameMismatch> </file> <file src="core/Command/App/Install.php"> <TypeDoesNotContainType> - <code>$result === false</code> + <code><![CDATA[$result === false]]></code> </TypeDoesNotContainType> </file> <file src="core/Command/App/ListApps.php"> <LessSpecificImplementedReturnType> - <code>array</code> + <code><![CDATA[array]]></code> </LessSpecificImplementedReturnType> </file> <file src="core/Command/App/Update.php"> <RedundantCondition> - <code>$result === true</code> + <code><![CDATA[$result === true]]></code> </RedundantCondition> </file> <file src="core/Command/Config/Import.php"> <InvalidScalarArgument> - <code>0</code> - <code>1</code> + <code><![CDATA[0]]></code> + <code><![CDATA[1]]></code> </InvalidScalarArgument> </file> <file src="core/Command/Config/ListConfigs.php"> @@ -1337,31 +1621,31 @@ <code><![CDATA[$this->appConfig->getValues($app, false)]]></code> </FalsableReturnStatement> <TooManyArguments> - <code>getFilteredValues</code> + <code><![CDATA[getFilteredValues]]></code> </TooManyArguments> </file> <file src="core/Command/Db/ConvertType.php"> <InvalidScalarArgument> - <code>0</code> - <code>1</code> + <code><![CDATA[0]]></code> + <code><![CDATA[1]]></code> </InvalidScalarArgument> </file> <file src="core/Command/Encryption/Enable.php"> <NullArgument> - <code>null</code> + <code><![CDATA[null]]></code> </NullArgument> </file> <file src="core/Command/Log/File.php"> <InvalidReturnStatement> - <code>[0]</code> + <code><![CDATA[[0]]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string[]</code> + <code><![CDATA[string[]]]></code> </InvalidReturnType> </file> <file src="core/Command/Log/Manage.php"> <InvalidArgument> - <code>$levelNum</code> + <code><![CDATA[$levelNum]]></code> </InvalidArgument> </file> <file src="core/Command/Maintenance/DataFingerprint.php"> @@ -1369,43 +1653,48 @@ <code><![CDATA[$this->timeFactory->getTime()]]></code> </InvalidScalarArgument> </file> + <file src="core/Command/Maintenance/Mimetype/GenerateMimetypeFileBuilder.php"> + <InvalidArrayAccess> + <code><![CDATA[$key[0]]]></code> + </InvalidArrayAccess> + </file> <file src="core/Command/Maintenance/Mimetype/UpdateDB.php"> <UndefinedInterfaceMethod> - <code>getAllMappings</code> - <code>updateFilecache</code> + <code><![CDATA[getAllMappings]]></code> + <code><![CDATA[updateFilecache]]></code> </UndefinedInterfaceMethod> </file> - <file src="core/Command/Maintenance/RepairShareOwnership.php"> - <LessSpecificReturnStatement> - <code>$found</code> - <code>$found</code> - </LessSpecificReturnStatement> - <MoreSpecificReturnType> - <code>array{shareId: int, fileTarget: string, initiator: string, receiver: string, owner: string, mountOwner: string}[]</code> - <code>array{shareId: int, fileTarget: string, initiator: string, receiver: string, owner: string, mountOwner: string}[]</code> - </MoreSpecificReturnType> + <file src="core/Command/Preview/Generate.php"> + <UndefinedVariable> + <code><![CDATA[$error]]></code> + </UndefinedVariable> </file> <file src="core/Command/Preview/Repair.php"> <UndefinedInterfaceMethod> - <code>section</code> - <code>section</code> + <code><![CDATA[section]]></code> + <code><![CDATA[section]]></code> </UndefinedInterfaceMethod> </file> <file src="core/Command/Preview/ResetRenderedTexts.php"> <InvalidReturnStatement> - <code>[]</code> + <code><![CDATA[[]]]></code> </InvalidReturnStatement> </file> <file src="core/Controller/ClientFlowLoginV2Controller.php"> <TypeDoesNotContainType> - <code>!is_string($stateToken)</code> + <code><![CDATA[!is_string($stateToken)]]></code> </TypeDoesNotContainType> </file> <file src="core/Controller/CollaborationResourcesController.php"> <UndefinedInterfaceMethod> - <code>searchCollections</code> + <code><![CDATA[searchCollections]]></code> </UndefinedInterfaceMethod> </file> + <file src="core/Controller/LoginController.php"> + <UndefinedThisPropertyFetch> + <code><![CDATA[$emailConfig->__get('ldapLoginFilterEmail')]]></code> + </UndefinedThisPropertyFetch> + </file> <file src="core/Controller/LostController.php"> <RedundantCast> <code><![CDATA[(int)$e->getCode()]]></code> @@ -1413,7 +1702,7 @@ </file> <file src="core/Controller/UnifiedSearchController.php"> <UndefinedInterfaceMethod> - <code>findMatchingRoute</code> + <code><![CDATA[findMatchingRoute]]></code> </UndefinedInterfaceMethod> </file> <file src="core/Middleware/TwoFactorMiddleware.php"> @@ -1423,14 +1712,13 @@ </file> <file src="core/routes.php"> <InvalidScope> - <code>$this</code> - <code>$this</code> + <code><![CDATA[$this]]></code> <code><![CDATA[$this->create('core_ajax_update', '/core/ajax/update.php')]]></code> </InvalidScope> </file> <file src="core/templates/layout.public.php"> <UndefinedInterfaceMethod> - <code>getIcon</code> + <code><![CDATA[getIcon]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/autoloader.php"> @@ -1440,12 +1728,12 @@ </file> <file src="lib/base.php"> <InvalidArgument> - <code>$restrictions</code> + <code><![CDATA[$restrictions]]></code> </InvalidArgument> </file> <file src="lib/private/Activity/Event.php"> <ParamNameMismatch> - <code>$affectedUser</code> + <code><![CDATA[$affectedUser]]></code> </ParamNameMismatch> </file> <file src="lib/private/Activity/Manager.php"> @@ -1458,7 +1746,7 @@ <code><![CDATA[$this->settings]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>ActivitySettings[]</code> + <code><![CDATA[ActivitySettings[]]]></code> </MoreSpecificReturnType> <TypeDoesNotContainType> <code><![CDATA[!is_string($currentUserId) && $currentUserId !== null]]></code> @@ -1466,47 +1754,53 @@ </file> <file src="lib/private/AllConfig.php"> <MoreSpecificImplementedParamType> - <code>$key</code> + <code><![CDATA[$key]]></code> </MoreSpecificImplementedParamType> <TypeDoesNotContainType> - <code>!is_array($userIds)</code> + <code><![CDATA[!is_array($userIds)]]></code> </TypeDoesNotContainType> </file> <file src="lib/private/App/AppManager.php"> <LessSpecificImplementedReturnType> - <code>array</code> - <code>array</code> + <code><![CDATA[array]]></code> + <code><![CDATA[array]]></code> </LessSpecificImplementedReturnType> </file> <file src="lib/private/App/AppStore/Fetcher/Fetcher.php"> <TooManyArguments> - <code>fetch</code> + <code><![CDATA[fetch]]></code> </TooManyArguments> </file> <file src="lib/private/App/DependencyAnalyzer.php"> <InvalidNullableReturnType> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>version_compare($first, $second, $operator)</code> + <code><![CDATA[version_compare($first, $second, $operator)]]></code> </NullableReturnStatement> </file> <file src="lib/private/App/InfoParser.php"> <InvalidArrayOffset> - <code>$array[$element][]</code> - <code>$array[$element][]</code> + <code><![CDATA[$array[$element][]]]></code> + <code><![CDATA[$array[$element][]]]></code> </InvalidArrayOffset> <InvalidReturnStatement> - <code>(string)$xml</code> + <code><![CDATA[(string)$xml]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>array</code> + <code><![CDATA[array]]></code> </InvalidReturnType> </file> <file src="lib/private/AppConfig.php"> <NullableReturnStatement> <code><![CDATA[$this->fastCache[$app][$key] ?? $default]]></code> </NullableReturnStatement> + <UnsupportedPropertyReferenceUsage> + <code><![CDATA[$cache = &$this->fastCache]]></code> + <code><![CDATA[$cache = &$this->fastCache]]></code> + <code><![CDATA[$cache = &$this->lazyCache]]></code> + <code><![CDATA[$cache = &$this->lazyCache]]></code> + </UnsupportedPropertyReferenceUsage> </file> <file src="lib/private/AppFramework/Bootstrap/Coordinator.php"> <InvalidPropertyAssignmentValue> @@ -1515,21 +1809,21 @@ </file> <file src="lib/private/AppFramework/Bootstrap/FunctionInjector.php"> <UndefinedMethod> - <code>getName</code> + <code><![CDATA[getName]]></code> </UndefinedMethod> </file> <file src="lib/private/AppFramework/DependencyInjection/DIContainer.php"> <ImplementedReturnTypeMismatch> - <code>boolean|null</code> + <code><![CDATA[boolean|null]]></code> </ImplementedReturnTypeMismatch> <InvalidReturnStatement> <code><![CDATA[$this->server]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>\OCP\IServerContainer</code> + <code><![CDATA[\OCP\IServerContainer]]></code> </InvalidReturnType> <UndefinedInterfaceMethod> - <code>getAppDataDir</code> + <code><![CDATA[getAppDataDir]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/AppFramework/Http/Dispatcher.php"> @@ -1537,45 +1831,53 @@ <code><![CDATA[$this->request->method]]></code> </NoInterfaceProperties> <NullArgument> - <code>null</code> + <code><![CDATA[null]]></code> </NullArgument> </file> <file src="lib/private/AppFramework/Http/Output.php"> <InvalidReturnStatement> - <code>@readfile($path)</code> - <code>http_response_code()</code> + <code><![CDATA[@readfile($path)]]></code> + <code><![CDATA[http_response_code()]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>bool</code> - <code>int</code> + <code><![CDATA[bool]]></code> + <code><![CDATA[int]]></code> </InvalidReturnType> </file> <file src="lib/private/AppFramework/Http/Request.php"> <NullableReturnStatement> - <code>$name</code> - <code>$remoteAddress</code> + <code><![CDATA[$remoteAddress]]></code> <code><![CDATA[$this->getOverwriteHost()]]></code> - <code><![CDATA[$this->method]]></code> - <code>$uri</code> + <code><![CDATA[$uri]]></code> <code><![CDATA[isset($this->cookies[$key]) ? $this->cookies[$key] : null]]></code> <code><![CDATA[isset($this->env[$key]) ? $this->env[$key] : null]]></code> <code><![CDATA[isset($this->files[$key]) ? $this->files[$key] : null]]></code> </NullableReturnStatement> <RedundantCondition> - <code>\is_array($params)</code> + <code><![CDATA[\is_array($params)]]></code> </RedundantCondition> <UndefinedFunction> - <code>\Sabre\HTTP\decodePath($pathInfo)</code> + <code><![CDATA[\Sabre\HTTP\decodePath($pathInfo)]]></code> </UndefinedFunction> + <UndefinedThisPropertyFetch> + <code><![CDATA[$this->method]]></code> + <code><![CDATA[$this->method]]></code> + <code><![CDATA[$this->method]]></code> + <code><![CDATA[$this->method]]></code> + <code><![CDATA[$this->method]]></code> + <code><![CDATA[$this->parameters]]></code> + <code><![CDATA[$this->server]]></code> + <code><![CDATA[$this->server]]></code> + </UndefinedThisPropertyFetch> </file> <file src="lib/private/AppFramework/Logger.php"> <InvalidReturnType> - <code>log</code> + <code><![CDATA[log]]></code> </InvalidReturnType> </file> <file src="lib/private/AppFramework/Middleware/OCSMiddleware.php"> <InternalMethod> - <code>setOCSVersion</code> + <code><![CDATA[setOCSVersion]]></code> </InternalMethod> </file> <file src="lib/private/AppFramework/Middleware/Security/CORSMiddleware.php"> @@ -1589,7 +1891,7 @@ <code><![CDATA[$this->request->server]]></code> </NoInterfaceProperties> <UndefinedClass> - <code>\OCA\Talk\Controller\PageController</code> + <code><![CDATA[\OCA\Talk\Controller\PageController]]></code> </UndefinedClass> </file> <file src="lib/private/AppFramework/Routing/RouteConfig.php"> @@ -1599,7 +1901,7 @@ </file> <file src="lib/private/AppFramework/Services/AppConfig.php"> <MoreSpecificImplementedParamType> - <code>$default</code> + <code><![CDATA[$default]]></code> </MoreSpecificImplementedParamType> </file> <file src="lib/private/AppFramework/Utility/SimpleContainer.php"> @@ -1645,43 +1947,46 @@ }, $constructor->getParameters()))]]></code> </LessSpecificReturnStatement> <MissingTemplateParam> - <code>ArrayAccess</code> + <code><![CDATA[ArrayAccess]]></code> </MissingTemplateParam> <MoreSpecificReturnType> - <code>\stdClass</code> + <code><![CDATA[\stdClass]]></code> </MoreSpecificReturnType> <RedundantCast> <code><![CDATA[(int) $e->getCode()]]></code> </RedundantCast> </file> <file src="lib/private/Archive/TAR.php"> + <NoValue> + <code><![CDATA[return $string;]]></code> + </NoValue> <UndefinedDocblockClass> <code><![CDATA[$this->tar->extractInString($path)]]></code> </UndefinedDocblockClass> </file> <file src="lib/private/Authentication/LoginCredentials/Store.php"> <RedundantCondition> - <code>$trySession</code> + <code><![CDATA[$trySession]]></code> </RedundantCondition> </file> <file src="lib/private/Authentication/Token/PublicKeyToken.php"> <UndefinedMagicMethod> - <code>getExpires</code> - <code>getLastCheck</code> - <code>getLoginName</code> - <code>getName</code> - <code>getPassword</code> - <code>getRemember</code> - <code>getScope</code> - <code>setExpires</code> - <code>setLastCheck</code> - <code>setName</code> - <code>setPassword</code> - <code>setPasswordInvalid</code> - <code>setScope</code> - <code>setScope</code> - <code>setToken</code> - <code>setType</code> + <code><![CDATA[getExpires]]></code> + <code><![CDATA[getLastCheck]]></code> + <code><![CDATA[getLoginName]]></code> + <code><![CDATA[getName]]></code> + <code><![CDATA[getPassword]]></code> + <code><![CDATA[getRemember]]></code> + <code><![CDATA[getScope]]></code> + <code><![CDATA[setExpires]]></code> + <code><![CDATA[setLastCheck]]></code> + <code><![CDATA[setName]]></code> + <code><![CDATA[setPassword]]></code> + <code><![CDATA[setPasswordInvalid]]></code> + <code><![CDATA[setScope]]></code> + <code><![CDATA[setScope]]></code> + <code><![CDATA[setToken]]></code> + <code><![CDATA[setType]]></code> </UndefinedMagicMethod> </file> <file src="lib/private/Authentication/TwoFactorAuth/ProviderSet.php"> @@ -1690,13 +1995,13 @@ </InvalidArgument> <InvalidPropertyAssignmentValue> <code><![CDATA[$this->providers]]></code> - <code>[]</code> + <code><![CDATA[[]]]></code> </InvalidPropertyAssignmentValue> <InvalidReturnStatement> <code><![CDATA[$this->providers]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>IProvider[]</code> + <code><![CDATA[IProvider[]]]></code> </InvalidReturnType> <UndefinedInterfaceMethod> <code><![CDATA[$this->providers]]></code> @@ -1704,27 +2009,27 @@ </file> <file src="lib/private/Blurhash/Listener/GenerateBlurhashMetadata.php"> <InvalidArgument> - <code>$image</code> - <code>$image</code> - <code>$image</code> - <code>$image</code> + <code><![CDATA[$image]]></code> + <code><![CDATA[$image]]></code> + <code><![CDATA[$image]]></code> + <code><![CDATA[$image]]></code> </InvalidArgument> <InvalidReturnStatement> - <code>($newImage !== false) ? $newImage : $image</code> + <code><![CDATA[($newImage !== false) ? $newImage : $image]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>GdImage|false</code> + <code><![CDATA[GdImage|false]]></code> </InvalidReturnType> </file> <file src="lib/private/Cache/CappedMemoryCache.php"> <MissingTemplateParam> - <code>\ArrayAccess</code> + <code><![CDATA[\ArrayAccess]]></code> </MissingTemplateParam> </file> <file src="lib/private/Cache/File.php"> <LessSpecificImplementedReturnType> - <code>bool|mixed</code> - <code>bool|mixed</code> + <code><![CDATA[bool|mixed]]></code> + <code><![CDATA[bool|mixed]]></code> </LessSpecificImplementedReturnType> </file> <file src="lib/private/Calendar/Manager.php"> @@ -1746,7 +2051,7 @@ )]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>ICreateFromString[]</code> + <code><![CDATA[ICreateFromString[]]]></code> </MoreSpecificReturnType> <NamedArgumentNotAllowed> <code><![CDATA[array_map(function ($registration) use ($principalUri, $calendarUris) { @@ -1766,17 +2071,17 @@ </file> <file src="lib/private/Command/CallableJob.php"> <ParamNameMismatch> - <code>$serializedCallable</code> + <code><![CDATA[$serializedCallable]]></code> </ParamNameMismatch> </file> <file src="lib/private/Command/ClosureJob.php"> <InvalidArgument> - <code>[LaravelClosure::class]</code> + <code><![CDATA[[LaravelClosure::class]]]></code> </InvalidArgument> </file> <file src="lib/private/Comments/Manager.php"> <RedundantCast> - <code>(string)$id</code> + <code><![CDATA[(string)$id]]></code> </RedundantCast> </file> <file src="lib/private/Config.php"> @@ -1785,8 +2090,8 @@ <code><![CDATA[$this->set($key, $value)]]></code> </InvalidOperand> <UndefinedVariable> - <code>$CONFIG</code> - <code>$CONFIG</code> + <code><![CDATA[$CONFIG]]></code> + <code><![CDATA[$CONFIG]]></code> </UndefinedVariable> </file> <file src="lib/private/Console/Application.php"> @@ -1796,12 +2101,12 @@ </file> <file src="lib/private/ContactsManager.php"> <InvalidArgument> - <code>$searchOptions</code> + <code><![CDATA[$searchOptions]]></code> </InvalidArgument> </file> <file src="lib/private/DB/AdapterMySQL.php"> <InternalMethod> - <code>getParams</code> + <code><![CDATA[getParams]]></code> </InternalMethod> <InvalidArrayOffset> <code><![CDATA[$params['collation']]]></code> @@ -1809,10 +2114,10 @@ </file> <file src="lib/private/DB/Connection.php"> <InternalMethod> - <code>getParams</code> + <code><![CDATA[getParams]]></code> </InternalMethod> <InvalidArgument> - <code>$params</code> + <code><![CDATA[$params]]></code> </InvalidArgument> <InvalidArrayOffset> <code><![CDATA[$params['adapter']]]></code> @@ -1824,15 +2129,15 @@ <code><![CDATA[is_int($original->getCode())]]></code> </RedundantCondition> <TypeDoesNotContainType> - <code>0</code> + <code><![CDATA[0]]></code> </TypeDoesNotContainType> </file> <file src="lib/private/DB/MigrationService.php"> <LessSpecificReturnStatement> - <code>$s</code> + <code><![CDATA[$s]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>IMigrationStep</code> + <code><![CDATA[IMigrationStep]]></code> </MoreSpecificReturnType> </file> <file src="lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php"> @@ -1840,13 +2145,13 @@ <code><![CDATA[$this->functionBuilder->lower($x)]]></code> </ImplicitToStringCast> <InvalidArgument> - <code>$y</code> - <code>$y</code> + <code><![CDATA[$y]]></code> + <code><![CDATA[$y]]></code> </InvalidArgument> </file> <file src="lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php"> <InternalMethod> - <code>getParams</code> + <code><![CDATA[getParams]]></code> </InternalMethod> <InvalidArrayOffset> <code><![CDATA[$params['collation']]]></code> @@ -1854,21 +2159,21 @@ </file> <file src="lib/private/DB/QueryBuilder/QueryBuilder.php"> <InvalidNullableReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>$alias</code> + <code><![CDATA[$alias]]></code> </NullableReturnStatement> <ParamNameMismatch> - <code>$selects</code> + <code><![CDATA[$selects]]></code> </ParamNameMismatch> </file> <file src="lib/private/DB/QueryBuilder/QuoteHelper.php"> <InvalidNullableReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>$string</code> + <code><![CDATA[$string]]></code> </NullableReturnStatement> </file> <file src="lib/private/DateTimeFormatter.php"> @@ -1883,25 +2188,25 @@ ])]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidReturnType> </file> <file src="lib/private/DateTimeZone.php"> <InvalidScalarArgument> - <code>$timestamp</code> + <code><![CDATA[$timestamp]]></code> </InvalidScalarArgument> </file> <file src="lib/private/Diagnostics/Query.php"> <ImplementedReturnTypeMismatch> - <code>float</code> + <code><![CDATA[float]]></code> </ImplementedReturnTypeMismatch> </file> <file src="lib/private/Diagnostics/QueryLogger.php"> <InvalidArgument> - <code>microtime(true)</code> + <code><![CDATA[microtime(true)]]></code> </InvalidArgument> <InvalidReturnType> - <code>stopQuery</code> + <code><![CDATA[stopQuery]]></code> </InvalidReturnType> </file> <file src="lib/private/DirectEditing/Manager.php"> @@ -1909,14 +2214,17 @@ <code><![CDATA[$query->execute()]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>TemplateResponse</code> - <code>int</code> + <code><![CDATA[TemplateResponse]]></code> + <code><![CDATA[int]]></code> </InvalidReturnType> + <NoValue> + <code><![CDATA[$filePath]]></code> + </NoValue> <UndefinedMethod> - <code>$template</code> - <code>$template</code> - <code>$template</code> - <code>$template</code> + <code><![CDATA[$template]]></code> + <code><![CDATA[$template]]></code> + <code><![CDATA[$template]]></code> + <code><![CDATA[$template]]></code> </UndefinedMethod> </file> <file src="lib/private/DirectEditing/Token.php"> @@ -1924,35 +2232,27 @@ <code><![CDATA[$this->manager->getFileForToken($this->data['user_id'], $this->data['file_id'], $this->data['file_path'])]]></code> </LessSpecificReturnStatement> <UndefinedMethod> - <code>getShareForToken</code> + <code><![CDATA[getShareForToken]]></code> </UndefinedMethod> </file> - <file src="lib/private/Encryption/File.php"> - <LessSpecificReturnStatement> - <code><![CDATA[['users' => $uniqueUserIds, 'public' => $public]]]></code> - </LessSpecificReturnStatement> - <MoreSpecificReturnType> - <code>array{users: string[], public: bool}</code> - </MoreSpecificReturnType> - </file> <file src="lib/private/Encryption/Keys/Storage.php"> <InvalidNullableReturnType> - <code>deleteUserKey</code> + <code><![CDATA[deleteUserKey]]></code> </InvalidNullableReturnType> <NullArgument> - <code>null</code> - <code>null</code> - <code>null</code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> </NullArgument> </file> <file src="lib/private/Encryption/Manager.php"> <ImplementedReturnTypeMismatch> - <code>bool</code> + <code><![CDATA[bool]]></code> </ImplementedReturnTypeMismatch> </file> <file src="lib/private/Federation/CloudFederationProviderManager.php"> <ParamNameMismatch> - <code>$providerId</code> + <code><![CDATA[$providerId]]></code> </ParamNameMismatch> </file> <file src="lib/private/Files/AppData/AppData.php"> @@ -1960,58 +2260,58 @@ <code><![CDATA[$this->folder]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>Folder</code> + <code><![CDATA[Folder]]></code> </MoreSpecificReturnType> </file> <file src="lib/private/Files/Cache/Cache.php"> <InvalidArgument> - <code>$parentData</code> + <code><![CDATA[$parentData]]></code> </InvalidArgument> <InvalidNullableReturnType> - <code>array</code> + <code><![CDATA[array]]></code> </InvalidNullableReturnType> <InvalidScalarArgument> - <code>$path</code> - <code>\OC_Util::normalizeUnicode($path)</code> + <code><![CDATA[$path]]></code> + <code><![CDATA[\OC_Util::normalizeUnicode($path)]]></code> </InvalidScalarArgument> <NullableReturnStatement> - <code>null</code> - <code>null</code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="lib/private/Files/Cache/FailedCache.php"> <InvalidReturnStatement> - <code>[]</code> + <code><![CDATA[[]]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>getIncomplete</code> - <code>insert</code> - <code>put</code> + <code><![CDATA[getIncomplete]]></code> + <code><![CDATA[insert]]></code> + <code><![CDATA[put]]></code> </InvalidReturnType> </file> <file src="lib/private/Files/Cache/HomeCache.php"> <FalsableReturnStatement> - <code>$data</code> + <code><![CDATA[$data]]></code> </FalsableReturnStatement> <MoreSpecificImplementedParamType> - <code>$file</code> - <code>$file</code> + <code><![CDATA[$file]]></code> + <code><![CDATA[$file]]></code> </MoreSpecificImplementedParamType> </file> <file src="lib/private/Files/Cache/Scanner.php"> <InvalidArgument> - <code>self::SCAN_RECURSIVE_INCOMPLETE</code> + <code><![CDATA[self::SCAN_RECURSIVE_INCOMPLETE]]></code> </InvalidArgument> <InvalidReturnStatement> - <code>$existingChildren</code> + <code><![CDATA[$existingChildren]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>array[]</code> + <code><![CDATA[array[]]]></code> </InvalidReturnType> </file> <file src="lib/private/Files/Cache/Storage.php"> <InvalidNullableReturnType> - <code>array</code> + <code><![CDATA[array]]></code> </InvalidNullableReturnType> <NullableReturnStatement> <code><![CDATA[self::getGlobalCache()->getStorageInfo($storageId)]]></code> @@ -2024,13 +2324,13 @@ </file> <file src="lib/private/Files/Cache/Wrapper/CacheWrapper.php"> <LessSpecificImplementedReturnType> - <code>array</code> - <code>array</code> + <code><![CDATA[array]]></code> + <code><![CDATA[array]]></code> </LessSpecificImplementedReturnType> </file> <file src="lib/private/Files/Config/MountProviderCollection.php"> <InvalidOperand> - <code>$user</code> + <code><![CDATA[$user]]></code> </InvalidOperand> <RedundantCondition> <code><![CDATA[get_class($provider) !== 'OCA\Files_Sharing\MountProvider']]></code> @@ -2041,17 +2341,17 @@ </file> <file src="lib/private/Files/Config/UserMountCache.php"> <InvalidReturnType> - <code>remoteStorageMounts</code> - <code>removeUserStorageMount</code> + <code><![CDATA[remoteStorageMounts]]></code> + <code><![CDATA[removeUserStorageMount]]></code> </InvalidReturnType> <LessSpecificImplementedReturnType> - <code>array</code> + <code><![CDATA[array]]></code> </LessSpecificImplementedReturnType> <LessSpecificReturnStatement> <code><![CDATA[$this->cacheInfoCache[$fileId]]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>array{int, string, int}</code> + <code><![CDATA[array{int, string, int}]]></code> </MoreSpecificReturnType> </file> <file src="lib/private/Files/Filesystem.php"> @@ -2061,25 +2361,25 @@ <code><![CDATA[self::getMountManager()->findByStorageId($id)]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>Mount\MountPoint[]</code> - <code>Mount\MountPoint[]</code> - <code>\OC\Files\Storage\Storage|null</code> + <code><![CDATA[Mount\MountPoint[]]]></code> + <code><![CDATA[Mount\MountPoint[]]]></code> + <code><![CDATA[\OC\Files\Storage\Storage|null]]></code> </MoreSpecificReturnType> <TooManyArguments> - <code>addStorageWrapper</code> + <code><![CDATA[addStorageWrapper]]></code> </TooManyArguments> </file> <file src="lib/private/Files/Mount/MountPoint.php"> <UndefinedInterfaceMethod> - <code>wrap</code> + <code><![CDATA[wrap]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/Files/Mount/ObjectHomeMountProvider.php"> <InvalidNullableReturnType> - <code>\OCP\Files\Mount\IMountPoint</code> + <code><![CDATA[\OCP\Files\Mount\IMountPoint]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>null</code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="lib/private/Files/Node/File.php"> @@ -2087,7 +2387,7 @@ <code><![CDATA[$this->view->hash($type, $this->path, $raw)]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidReturnType> </file> <file src="lib/private/Files/Node/Folder.php"> @@ -2098,29 +2398,28 @@ }, $files)]]></code> </LessSpecificReturnStatement> <MoreSpecificImplementedParamType> - <code>$node</code> + <code><![CDATA[$node]]></code> </MoreSpecificImplementedParamType> <MoreSpecificReturnType> - <code>\OC\Files\Node\Node</code> - <code>\OC\Files\Node\Node[]</code> - <code>\OC\Files\Node\Node[]</code> + <code><![CDATA[\OC\Files\Node\Node]]></code> + <code><![CDATA[\OC\Files\Node\Node[]]]></code> </MoreSpecificReturnType> </file> <file src="lib/private/Files/Node/HookConnector.php"> <UndefinedInterfaceMethod> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/Files/Node/LazyFolder.php"> @@ -2130,30 +2429,30 @@ </file> <file src="lib/private/Files/Node/LazyUserFolder.php"> <LessSpecificReturnStatement> - <code>$node</code> + <code><![CDATA[$node]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>Folder</code> + <code><![CDATA[Folder]]></code> </MoreSpecificReturnType> </file> <file src="lib/private/Files/Node/Node.php"> <InvalidNullableReturnType> - <code>FileInfo</code> + <code><![CDATA[FileInfo]]></code> </InvalidNullableReturnType> <InvalidReturnType> - <code>getChecksum</code> + <code><![CDATA[getChecksum]]></code> </InvalidReturnType> <LessSpecificReturnStatement> <code><![CDATA[$this->parent]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>INode|IRootFolder</code> + <code><![CDATA[INode|IRootFolder]]></code> </MoreSpecificReturnType> <NullableReturnStatement> <code><![CDATA[$this->fileInfo]]></code> </NullableReturnStatement> <ParamNameMismatch> - <code>$type</code> + <code><![CDATA[$type]]></code> </ParamNameMismatch> <UndefinedInterfaceMethod> <code><![CDATA[$this->fileInfo]]></code> @@ -2162,7 +2461,7 @@ </file> <file src="lib/private/Files/Node/Root.php"> <LessSpecificReturnStatement> - <code>$folders</code> + <code><![CDATA[$folders]]></code> <code><![CDATA[$this->createNode($fullPath, $fileInfo, false)]]></code> <code><![CDATA[$this->mountManager->findByNumericId($numericId)]]></code> <code><![CDATA[$this->mountManager->findByStorageId($storageId)]]></code> @@ -2170,58 +2469,58 @@ <code><![CDATA[$this->user]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>MountPoint[]</code> - <code>Node</code> - <code>\OC\Files\Mount\MountPoint[]</code> - <code>\OC\Files\Mount\MountPoint[]</code> - <code>\OC\User\User</code> + <code><![CDATA[MountPoint[]]]></code> + <code><![CDATA[Node]]></code> + <code><![CDATA[\OC\Files\Mount\MountPoint[]]]></code> + <code><![CDATA[\OC\Files\Mount\MountPoint[]]]></code> + <code><![CDATA[\OC\User\User]]></code> </MoreSpecificReturnType> <NullableReturnStatement> <code><![CDATA[$this->user]]></code> </NullableReturnStatement> <UndefinedMethod> - <code>remove</code> + <code><![CDATA[remove]]></code> </UndefinedMethod> </file> <file src="lib/private/Files/ObjectStore/ObjectStoreStorage.php"> <InvalidScalarArgument> - <code>$source</code> + <code><![CDATA[$source]]></code> </InvalidScalarArgument> </file> <file src="lib/private/Files/ObjectStore/S3ConnectionTrait.php"> <InternalClass> - <code>ClientResolver::_default_signature_provider()</code> - <code>ClientResolver::_default_signature_provider()</code> + <code><![CDATA[ClientResolver::_default_signature_provider()]]></code> + <code><![CDATA[ClientResolver::_default_signature_provider()]]></code> </InternalClass> <InternalMethod> - <code>ClientResolver::_default_signature_provider()</code> + <code><![CDATA[ClientResolver::_default_signature_provider()]]></code> </InternalMethod> <UndefinedFunction> - <code>Promise\promise_for( + <code><![CDATA[Promise\promise_for( new Credentials($key, $secret) - )</code> + )]]></code> <code><![CDATA[\Aws\or_chain([self::class, 'legacySignatureProvider'], ClientResolver::_default_signature_provider())]]></code> </UndefinedFunction> </file> <file src="lib/private/Files/ObjectStore/S3ObjectTrait.php"> <InternalMethod> - <code>upload</code> + <code><![CDATA[upload]]></code> </InternalMethod> <UndefinedFunction> - <code>\Aws\serialize($command)</code> + <code><![CDATA[\Aws\serialize($command)]]></code> </UndefinedFunction> </file> <file src="lib/private/Files/ObjectStore/S3Signature.php"> <NullArgument> - <code>null</code> + <code><![CDATA[null]]></code> </NullArgument> </file> <file src="lib/private/Files/Storage/Common.php"> <ImplementedReturnTypeMismatch> - <code>string|false</code> + <code><![CDATA[string|false]]></code> </ImplementedReturnTypeMismatch> <InvalidOperand> - <code>!$permissions</code> + <code><![CDATA[!$permissions]]></code> <code><![CDATA[$this->copyFromStorage($sourceStorage, $sourceInternalPath . '/' . $file, $targetInternalPath . '/' . $file)]]></code> </InvalidOperand> <NoInterfaceProperties> @@ -2237,36 +2536,37 @@ </file> <file src="lib/private/Files/Storage/DAV.php"> <InvalidClass> - <code>ArrayCache</code> - <code>ArrayCache</code> + <code><![CDATA[ArrayCache]]></code> + <code><![CDATA[ArrayCache]]></code> </InvalidClass> <InvalidReturnStatement> <code><![CDATA[$response->getBody()]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>fopen</code> + <code><![CDATA[fopen]]></code> </InvalidReturnType> <NullableReturnStatement> - <code>null</code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="lib/private/Files/Storage/FailedStorage.php"> <InvalidReturnStatement> - <code>new FailedCache()</code> - <code>true</code> + <code><![CDATA[new FailedCache()]]></code> + <code><![CDATA[true]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>getCache</code> - <code>verifyPath</code> + <code><![CDATA[getCache]]></code> + <code><![CDATA[verifyPath]]></code> </InvalidReturnType> </file> <file src="lib/private/Files/Storage/Local.php"> <TypeDoesNotContainNull> - <code>$space === false || is_null($space)</code> - <code>is_null($space)</code> + <code><![CDATA[$space === false || is_null($space)]]></code> + <code><![CDATA[is_null($space)]]></code> </TypeDoesNotContainNull> <TypeDoesNotContainType> - <code>$stat === false</code> + <code><![CDATA[$currentPath === '']]></code> + <code><![CDATA[$stat === false]]></code> </TypeDoesNotContainType> </file> <file src="lib/private/Files/Storage/LocalRootStorage.php"> @@ -2277,9 +2577,9 @@ </file> <file src="lib/private/Files/Storage/Wrapper/Encoding.php"> <InvalidArgument> - <code>\Normalizer::FORM_C</code> - <code>\Normalizer::FORM_C</code> - <code>\Normalizer::FORM_D</code> + <code><![CDATA[\Normalizer::FORM_C]]></code> + <code><![CDATA[\Normalizer::FORM_C]]></code> + <code><![CDATA[\Normalizer::FORM_D]]></code> </InvalidArgument> <UndefinedInterfaceMethod> <code><![CDATA[$this->namesCache]]></code> @@ -2303,21 +2603,21 @@ </file> <file src="lib/private/Files/Storage/Wrapper/Encryption.php"> <InvalidOperand> - <code>$result</code> - <code>$result</code> + <code><![CDATA[$result]]></code> + <code><![CDATA[$result]]></code> <code><![CDATA[$this->copyFromStorage($sourceStorage, $sourceInternalPath . '/' . $file, $targetInternalPath . '/' . $file, false, $isRename)]]></code> </InvalidOperand> <InvalidReturnStatement> - <code>$newUnencryptedSize</code> - <code>$result</code> + <code><![CDATA[$newUnencryptedSize]]></code> + <code><![CDATA[$result]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>bool</code> - <code>int</code> + <code><![CDATA[bool]]></code> + <code><![CDATA[int]]></code> </InvalidReturnType> <InvalidScalarArgument> - <code>$lastChunkPos</code> - <code>$size</code> + <code><![CDATA[$lastChunkPos]]></code> + <code><![CDATA[$size]]></code> </InvalidScalarArgument> </file> <file src="lib/private/Files/Storage/Wrapper/Jail.php"> @@ -2325,7 +2625,7 @@ <code><![CDATA[$this->getWrapperStorage()->filetype($this->getUnjailedPath($path))]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidReturnType> </file> <file src="lib/private/Files/Storage/Wrapper/Wrapper.php"> @@ -2333,23 +2633,23 @@ <code><![CDATA[$this->getWrapperStorage()->test()]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>true</code> + <code><![CDATA[true]]></code> </InvalidReturnType> </file> <file src="lib/private/Files/Stream/SeekableHttpStream.php"> <InvalidReturnType> - <code>stream_close</code> - <code>stream_flush</code> + <code><![CDATA[stream_close]]></code> + <code><![CDATA[stream_flush]]></code> </InvalidReturnType> </file> <file src="lib/private/Files/Template/TemplateManager.php"> <RedundantCondition> - <code>!$isDefaultTemplates</code> + <code><![CDATA[!$isDefaultTemplates]]></code> </RedundantCondition> </file> <file src="lib/private/Files/Type/Detection.php"> <ParamNameMismatch> - <code>$mimetype</code> + <code><![CDATA[$mimetype]]></code> </ParamNameMismatch> </file> <file src="lib/private/Files/Type/Loader.php"> @@ -2357,25 +2657,25 @@ <code><![CDATA[$update->execute()]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>int</code> + <code><![CDATA[int]]></code> </InvalidReturnType> </file> <file src="lib/private/Files/Utils/Scanner.php"> <LessSpecificReturnStatement> - <code>$mounts</code> + <code><![CDATA[$mounts]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>\OC\Files\Mount\MountPoint[]</code> + <code><![CDATA[\OC\Files\Mount\MountPoint[]]]></code> </MoreSpecificReturnType> </file> <file src="lib/private/Files/View.php"> <InvalidScalarArgument> - <code>$mtime</code> + <code><![CDATA[$mtime]]></code> </InvalidScalarArgument> <UndefinedInterfaceMethod> - <code>acquireLock</code> - <code>changeLock</code> - <code>releaseLock</code> + <code><![CDATA[acquireLock]]></code> + <code><![CDATA[changeLock]]></code> + <code><![CDATA[releaseLock]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/FullTextSearch/Model/IndexDocument.php"> @@ -2385,16 +2685,16 @@ </file> <file src="lib/private/Group/Group.php"> <InvalidArgument> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidArgument> <InvalidOperand> - <code>$hide</code> + <code><![CDATA[$hide]]></code> </InvalidOperand> <LessSpecificReturnStatement> - <code>$users</code> + <code><![CDATA[$users]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>\OC\User\User[]</code> + <code><![CDATA[\OC\User\User[]]]></code> </MoreSpecificReturnType> <RedundantCondition> <code><![CDATA[$this->emitter]]></code> @@ -2402,31 +2702,35 @@ <code><![CDATA[$this->emitter]]></code> </RedundantCondition> <UndefinedMethod> - <code>addToGroup</code> - <code>countUsersInGroup</code> - <code>deleteGroup</code> - <code>removeFromGroup</code> + <code><![CDATA[addToGroup]]></code> + <code><![CDATA[countUsersInGroup]]></code> + <code><![CDATA[deleteGroup]]></code> + <code><![CDATA[removeFromGroup]]></code> </UndefinedMethod> </file> <file src="lib/private/Group/Manager.php"> <LessSpecificReturnStatement> - <code>$groups</code> - <code>array_values($groups)</code> - <code>array_values($groups)</code> + <code><![CDATA[$groups]]></code> + <code><![CDATA[array_values($groups)]]></code> + <code><![CDATA[array_values($groups)]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>\OC\Group\Group[]</code> - <code>\OC\Group\Group[]</code> + <code><![CDATA[\OC\Group\Group[]]]></code> + <code><![CDATA[\OC\Group\Group[]]]></code> </MoreSpecificReturnType> <UndefinedInterfaceMethod> - <code>createGroup</code> - <code>getGroupDetails</code> - <code>isAdmin</code> + <code><![CDATA[createGroup]]></code> + <code><![CDATA[getGroupDetails]]></code> + <code><![CDATA[isAdmin]]></code> </UndefinedInterfaceMethod> + <UnsupportedPropertyReferenceUsage> + <code><![CDATA[$cachedGroups = &$this->cachedGroups]]></code> + <code><![CDATA[$cachedUserGroups = &$this->cachedUserGroups]]></code> + </UnsupportedPropertyReferenceUsage> </file> <file src="lib/private/Http/Client/Response.php"> <InvalidNullableReturnType> - <code>string|resource</code> + <code><![CDATA[string|resource]]></code> </InvalidNullableReturnType> <NullableReturnStatement> <code><![CDATA[$this->stream ? @@ -2436,15 +2740,19 @@ </file> <file src="lib/private/Installer.php"> <InvalidArgument> - <code>false</code> - <code>false</code> + <code><![CDATA[false]]></code> + <code><![CDATA[false]]></code> </InvalidArgument> <InvalidArrayOffset> <code><![CDATA[$app['path']]]></code> <code><![CDATA[$app['path']]]></code> </InvalidArrayOffset> + <InvalidPropertyFetch> + <code><![CDATA[$xml->id]]></code> + <code><![CDATA[$xml->version]]></code> + </InvalidPropertyFetch> <NullArgument> - <code>null</code> + <code><![CDATA[null]]></code> </NullArgument> </file> <file src="lib/private/IntegrityCheck/Checker.php"> @@ -2454,41 +2762,41 @@ <code><![CDATA[$x509->getDN(true)['CN']]]></code> </InvalidArrayAccess> <UndefinedInterfaceMethod> - <code>getOnlyDefaultAliases</code> + <code><![CDATA[getOnlyDefaultAliases]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php"> <MissingTemplateParam> - <code>ExcludeFileByNameFilterIterator</code> + <code><![CDATA[ExcludeFileByNameFilterIterator]]></code> </MissingTemplateParam> </file> <file src="lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php"> <MissingTemplateParam> - <code>ExcludeFoldersByPathFilterIterator</code> + <code><![CDATA[ExcludeFoldersByPathFilterIterator]]></code> </MissingTemplateParam> </file> <file src="lib/private/L10N/Factory.php"> <ImplementedReturnTypeMismatch> - <code>null|string</code> + <code><![CDATA[null|string]]></code> </ImplementedReturnTypeMismatch> <LessSpecificImplementedReturnType> - <code>array|mixed</code> + <code><![CDATA[array|mixed]]></code> </LessSpecificImplementedReturnType> </file> <file src="lib/private/LargeFileHelper.php"> <InvalidOperand> - <code>$matches[1]</code> + <code><![CDATA[$matches[1]]]></code> </InvalidOperand> </file> <file src="lib/private/Lockdown/Filesystem/NullCache.php"> <InvalidNullableReturnType> - <code>get</code> + <code><![CDATA[get]]></code> </InvalidNullableReturnType> <InvalidReturnStatement> - <code>[]</code> + <code><![CDATA[[]]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>getIncomplete</code> + <code><![CDATA[getIncomplete]]></code> </InvalidReturnType> <NullableReturnStatement> <code><![CDATA[$file !== '' ? null : @@ -2509,41 +2817,41 @@ </file> <file src="lib/private/Lockdown/Filesystem/NullStorage.php"> <InvalidNullableReturnType> - <code>getOwner</code> - <code>getPermissions</code> + <code><![CDATA[getOwner]]></code> + <code><![CDATA[getPermissions]]></code> </InvalidNullableReturnType> <InvalidReturnStatement> - <code>new IteratorDirectory([])</code> - <code>new NullCache()</code> + <code><![CDATA[new IteratorDirectory([])]]></code> + <code><![CDATA[new NullCache()]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>getCache</code> - <code>opendir</code> + <code><![CDATA[getCache]]></code> + <code><![CDATA[opendir]]></code> </InvalidReturnType> <NullableReturnStatement> - <code>null</code> - <code>null</code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> </NullableReturnStatement> <TooManyArguments> - <code>new IteratorDirectory([])</code> + <code><![CDATA[new IteratorDirectory([])]]></code> </TooManyArguments> </file> <file src="lib/private/Lockdown/LockdownManager.php"> <InvalidFunctionCall> - <code>$callback()</code> + <code><![CDATA[$callback()]]></code> </InvalidFunctionCall> <InvalidPropertyAssignmentValue> - <code>$sessionCallback</code> + <code><![CDATA[$sessionCallback]]></code> </InvalidPropertyAssignmentValue> </file> <file src="lib/private/Log.php"> <RedundantCondition> - <code>$request</code> + <code><![CDATA[$request]]></code> </RedundantCondition> </file> <file src="lib/private/Log/File.php"> <TypeDoesNotContainNull> - <code>$limit === null</code> + <code><![CDATA[$limit === null]]></code> </TypeDoesNotContainNull> </file> <file src="lib/private/Log/LogDetails.php"> @@ -2563,58 +2871,63 @@ <code><![CDATA[apcu_add($this->getPrefix() . $key, $value, $ttl)]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>bool</code> + <code><![CDATA[bool]]></code> </InvalidReturnType> </file> <file src="lib/private/Memcache/Cache.php"> <LessSpecificImplementedReturnType> - <code>mixed</code> - <code>mixed</code> - <code>mixed</code> - <code>mixed</code> + <code><![CDATA[mixed]]></code> + <code><![CDATA[mixed]]></code> + <code><![CDATA[mixed]]></code> + <code><![CDATA[mixed]]></code> </LessSpecificImplementedReturnType> </file> <file src="lib/private/Preview/BackgroundCleanupJob.php"> <InvalidReturnStatement> - <code>[]</code> + <code><![CDATA[[]]]></code> </InvalidReturnStatement> </file> <file src="lib/private/Preview/Generator.php"> <InvalidArgument> - <code>$maxPreviewImage</code> + <code><![CDATA[$maxPreviewImage]]></code> </InvalidArgument> <LessSpecificReturnType> - <code>null|string</code> + <code><![CDATA[null|string]]></code> </LessSpecificReturnType> <MismatchingDocblockParamType> - <code>ISimpleFile</code> + <code><![CDATA[ISimpleFile]]></code> </MismatchingDocblockParamType> <UndefinedInterfaceMethod> - <code>height</code> - <code>height</code> - <code>preciseResizeCopy</code> - <code>resizeCopy</code> - <code>valid</code> - <code>width</code> - <code>width</code> + <code><![CDATA[height]]></code> + <code><![CDATA[height]]></code> + <code><![CDATA[preciseResizeCopy]]></code> + <code><![CDATA[resizeCopy]]></code> + <code><![CDATA[valid]]></code> + <code><![CDATA[width]]></code> + <code><![CDATA[width]]></code> </UndefinedInterfaceMethod> </file> + <file src="lib/private/Preview/MimeIconProvider.php"> + <InvalidArrayAccess> + <code><![CDATA[$key[0]]]></code> + </InvalidArrayAccess> + </file> <file src="lib/private/Preview/ProviderV1Adapter.php"> <InvalidReturnStatement> - <code>$thumbnail === false ? null: $thumbnail</code> + <code><![CDATA[$thumbnail === false ? null: $thumbnail]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>?IImage</code> + <code><![CDATA[?IImage]]></code> </InvalidReturnType> </file> <file src="lib/private/RedisFactory.php"> <InvalidArgument> - <code>\RedisCluster::OPT_SLAVE_FAILOVER</code> + <code><![CDATA[\RedisCluster::OPT_SLAVE_FAILOVER]]></code> </InvalidArgument> </file> <file src="lib/private/Remote/Api/OCS.php"> <ImplementedReturnTypeMismatch> - <code>array</code> + <code><![CDATA[array]]></code> </ImplementedReturnTypeMismatch> </file> <file src="lib/private/Remote/Instance.php"> @@ -2622,25 +2935,25 @@ <code><![CDATA[$request->getBody()]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>bool|string</code> + <code><![CDATA[bool|string]]></code> </InvalidReturnType> <InvalidScalarArgument> - <code>$response</code> + <code><![CDATA[$response]]></code> </InvalidScalarArgument> </file> <file src="lib/private/Repair/Owncloud/CleanPreviews.php"> <InvalidArgument> - <code>false</code> + <code><![CDATA[false]]></code> </InvalidArgument> </file> <file src="lib/private/Repair/Owncloud/CleanPreviewsBackgroundJob.php"> <ParamNameMismatch> - <code>$arguments</code> + <code><![CDATA[$arguments]]></code> </ParamNameMismatch> </file> <file src="lib/private/Repair/Owncloud/MoveAvatarsBackgroundJob.php"> <ParamNameMismatch> - <code>$arguments</code> + <code><![CDATA[$arguments]]></code> </ParamNameMismatch> </file> <file src="lib/private/Repair/RemoveLinkShares.php"> @@ -2650,20 +2963,20 @@ </file> <file src="lib/private/Repair/RepairInvalidShares.php"> <ParamNameMismatch> - <code>$out</code> + <code><![CDATA[$out]]></code> </ParamNameMismatch> </file> <file src="lib/private/Repair/RepairMimeTypes.php"> <ParamNameMismatch> - <code>$out</code> + <code><![CDATA[$out]]></code> </ParamNameMismatch> </file> <file src="lib/private/Route/Router.php"> <InvalidClass> - <code>\OC_APP</code> + <code><![CDATA[\OC_APP]]></code> </InvalidClass> <InvalidNullableReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidNullableReturnType> <NullableReturnStatement> <code><![CDATA[$this->collectionName]]></code> @@ -2671,7 +2984,7 @@ </file> <file src="lib/private/Search.php"> <RedundantCondition> - <code>$provider instanceof Provider</code> + <code><![CDATA[$provider instanceof Provider]]></code> </RedundantCondition> </file> <file src="lib/private/Search/Result/File.php"> @@ -2684,7 +2997,7 @@ </file> <file src="lib/private/Security/Bruteforce/Throttler.php"> <NullArgument> - <code>null</code> + <code><![CDATA[null]]></code> </NullArgument> </file> <file src="lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php"> @@ -2703,25 +3016,25 @@ <code><![CDATA[$qb->execute()]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>int</code> - <code>int</code> + <code><![CDATA[int]]></code> + <code><![CDATA[int]]></code> </InvalidReturnType> </file> <file src="lib/private/Security/Crypto.php"> <InternalMethod> - <code>decrypt</code> - <code>encrypt</code> - <code>setIV</code> - <code>setIV</code> - <code>setPassword</code> - <code>setPassword</code> + <code><![CDATA[decrypt]]></code> + <code><![CDATA[encrypt]]></code> + <code><![CDATA[setIV]]></code> + <code><![CDATA[setIV]]></code> + <code><![CDATA[setPassword]]></code> + <code><![CDATA[setPassword]]></code> </InternalMethod> </file> <file src="lib/private/Server.php"> <ImplementedReturnTypeMismatch> - <code>\OCP\Calendar\Resource\IManager</code> - <code>\OCP\Calendar\Room\IManager</code> - <code>\OCP\Files\Folder|null</code> + <code><![CDATA[\OCP\Calendar\Resource\IManager]]></code> + <code><![CDATA[\OCP\Calendar\Room\IManager]]></code> + <code><![CDATA[\OCP\Files\Folder|null]]></code> </ImplementedReturnTypeMismatch> <LessSpecificReturnStatement> <code><![CDATA[$this->get(IFile::class)]]></code> @@ -2732,15 +3045,15 @@ <code><![CDATA[$this->get(\OCP\Encryption\IManager::class)]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>\OC\Encryption\File</code> - <code>\OC\Encryption\Manager</code> - <code>\OC\Group\Manager</code> - <code>\OC\NavigationManager</code> - <code>\OC\User\Manager</code> - <code>\OC\User\Session</code> + <code><![CDATA[\OC\Encryption\File]]></code> + <code><![CDATA[\OC\Encryption\Manager]]></code> + <code><![CDATA[\OC\Group\Manager]]></code> + <code><![CDATA[\OC\NavigationManager]]></code> + <code><![CDATA[\OC\User\Manager]]></code> + <code><![CDATA[\OC\User\Session]]></code> </MoreSpecificReturnType> <UndefinedDocblockClass> - <code>\OC\OCSClient</code> + <code><![CDATA[\OC\OCSClient]]></code> </UndefinedDocblockClass> </file> <file src="lib/private/ServerContainer.php"> @@ -2753,12 +3066,12 @@ </file> <file src="lib/private/Session/Internal.php"> <MoreSpecificImplementedParamType> - <code>$value</code> + <code><![CDATA[$value]]></code> </MoreSpecificImplementedParamType> </file> <file src="lib/private/Session/Memory.php"> <MoreSpecificImplementedParamType> - <code>$value</code> + <code><![CDATA[$value]]></code> </MoreSpecificImplementedParamType> </file> <file src="lib/private/Setup.php"> @@ -2766,7 +3079,7 @@ <code><![CDATA[$type === 'pdo']]></code> </RedundantCondition> <UndefinedVariable> - <code>$vendor</code> + <code><![CDATA[$vendor]]></code> </UndefinedVariable> </file> <file src="lib/private/Setup/AbstractDatabase.php"> @@ -2787,167 +3100,160 @@ <code><![CDATA[(int)$data['id']]]></code> </InvalidArgument> <TooManyArguments> - <code>set</code> + <code><![CDATA[set]]></code> </TooManyArguments> <UndefinedInterfaceMethod> - <code>getParent</code> + <code><![CDATA[getParent]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/Share20/Manager.php"> <InvalidArgument> - <code>$id</code> + <code><![CDATA[$id]]></code> </InvalidArgument> <TooManyArguments> - <code>update</code> + <code><![CDATA[update]]></code> </TooManyArguments> <UndefinedClass> - <code>\OCA\Circles\Api\v1\Circles</code> + <code><![CDATA[\OCA\Circles\Api\v1\Circles]]></code> </UndefinedClass> <UndefinedInterfaceMethod> - <code>getChildren</code> + <code><![CDATA[getChildren]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/Share20/ProviderFactory.php"> <InvalidNullableReturnType> - <code>FederatedShareProvider</code> - <code>ShareByMailProvider</code> + <code><![CDATA[FederatedShareProvider]]></code> + <code><![CDATA[ShareByMailProvider]]></code> </InvalidNullableReturnType> <InvalidReturnStatement> - <code>$provider</code> - <code>$provider</code> + <code><![CDATA[$provider]]></code> + <code><![CDATA[$provider]]></code> <code><![CDATA[$this->shareByCircleProvider]]></code> </InvalidReturnStatement> <InvalidReturnType> - <code>getProviderForType</code> + <code><![CDATA[getProviderForType]]></code> </InvalidReturnType> <NullableReturnStatement> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> </NullableReturnStatement> <ParamNameMismatch> - <code>$shareProviderClass</code> + <code><![CDATA[$shareProviderClass]]></code> </ParamNameMismatch> <UndefinedClass> - <code>\OCA\Circles\ShareByCircleProvider</code> + <code><![CDATA[\OCA\Circles\ShareByCircleProvider]]></code> </UndefinedClass> <UndefinedDocblockClass> - <code>RoomShareProvider</code> - <code>\OCA\Circles\ShareByCircleProvider</code> - <code>\OCA\Talk\Share\RoomShareProvider</code> - <code>private $roomShareProvider = null;</code> - <code>private $shareByCircleProvider = null;</code> + <code><![CDATA[RoomShareProvider]]></code> + <code><![CDATA[\OCA\Circles\ShareByCircleProvider]]></code> + <code><![CDATA[\OCA\Talk\Share\RoomShareProvider]]></code> + <code><![CDATA[private $roomShareProvider = null;]]></code> + <code><![CDATA[private $shareByCircleProvider = null;]]></code> </UndefinedDocblockClass> </file> <file src="lib/private/Share20/Share.php"> + <InvalidCast> + <code><![CDATA[$id]]></code> + </InvalidCast> <LessSpecificReturnStatement> <code><![CDATA[$this->node]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>getNode</code> + <code><![CDATA[getNode]]></code> </MoreSpecificReturnType> </file> <file src="lib/private/Streamer.php"> <UndefinedInterfaceMethod> - <code>get</code> + <code><![CDATA[get]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/SubAdmin.php"> <UndefinedInterfaceMethod> - <code>listen</code> - <code>listen</code> + <code><![CDATA[listen]]></code> + <code><![CDATA[listen]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/Support/Subscription/Registry.php"> <UndefinedInterfaceMethod> - <code>getSupportedApps</code> + <code><![CDATA[getSupportedApps]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/TagManager.php"> <InvalidNullableReturnType> - <code>\OCP\ITags</code> + <code><![CDATA[\OCP\ITags]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>null</code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="lib/private/Tags.php"> <InvalidScalarArgument> - <code>$from</code> - <code>$names</code> + <code><![CDATA[$from]]></code> + <code><![CDATA[$names]]></code> </InvalidScalarArgument> <MoreSpecificImplementedParamType> - <code>$tag</code> + <code><![CDATA[$tag]]></code> </MoreSpecificImplementedParamType> </file> <file src="lib/private/TempManager.php"> <FalsableReturnStatement> - <code>false</code> - <code>false</code> + <code><![CDATA[false]]></code> + <code><![CDATA[false]]></code> </FalsableReturnStatement> </file> <file src="lib/private/Template/CSSResourceLocator.php"> <ParamNameMismatch> - <code>$style</code> - <code>$style</code> + <code><![CDATA[$style]]></code> + <code><![CDATA[$style]]></code> </ParamNameMismatch> </file> <file src="lib/private/Template/JSConfigHelper.php"> <NullArgument> - <code>null</code> - <code>null</code> + <code><![CDATA[null]]></code> + <code><![CDATA[null]]></code> </NullArgument> </file> <file src="lib/private/Template/JSResourceLocator.php"> <InvalidArgument> - <code>false</code> + <code><![CDATA[false]]></code> </InvalidArgument> <ParamNameMismatch> - <code>$script</code> - <code>$script</code> + <code><![CDATA[$script]]></code> + <code><![CDATA[$script]]></code> </ParamNameMismatch> </file> - <file src="lib/private/TemplateLayout.php"> - <InvalidParamDefault> - <code>string</code> - <code>string</code> - </InvalidParamDefault> - <InvalidScalarArgument> - <code>$appName</code> - <code>$appName</code> - </InvalidScalarArgument> - <UndefinedInterfaceMethod> - <code>getInitialStates</code> - </UndefinedInterfaceMethod> - </file> <file src="lib/private/URLGenerator.php"> <InvalidReturnStatement> - <code>$path</code> + <code><![CDATA[$path]]></code> </InvalidReturnStatement> </file> <file src="lib/private/User/Database.php"> <FalsableReturnStatement> - <code>false</code> + <code><![CDATA[false]]></code> </FalsableReturnStatement> </file> <file src="lib/private/User/Manager.php"> <ImplementedReturnTypeMismatch> - <code>IUser|false</code> + <code><![CDATA[IUser|false]]></code> </ImplementedReturnTypeMismatch> <InvalidArgument> - <code>$backend</code> + <code><![CDATA[$backend]]></code> </InvalidArgument> <UndefinedInterfaceMethod> - <code>createUser</code> - <code>getUsersForUserValueCaseInsensitive</code> + <code><![CDATA[createUser]]></code> + <code><![CDATA[getUsersForUserValueCaseInsensitive]]></code> </UndefinedInterfaceMethod> + <UnsupportedPropertyReferenceUsage> + <code><![CDATA[$cachedUsers = &$this->cachedUsers]]></code> + </UnsupportedPropertyReferenceUsage> </file> <file src="lib/private/User/Session.php"> <ImplementedReturnTypeMismatch> - <code>boolean|null</code> + <code><![CDATA[boolean|null]]></code> </ImplementedReturnTypeMismatch> <NoInterfaceProperties> <code><![CDATA[$request->server]]></code> @@ -2959,77 +3265,84 @@ </file> <file src="lib/private/User/User.php"> <UndefinedInterfaceMethod> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> - <code>emit</code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> + <code><![CDATA[emit]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/legacy/OC_API.php"> <InvalidNullableReturnType> - <code>int</code> + <code><![CDATA[int]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>null</code> + <code><![CDATA[null]]></code> </NullableReturnStatement> </file> <file src="lib/private/legacy/OC_App.php"> <InvalidArgument> - <code>$groupsList</code> + <code><![CDATA[$groupsList]]></code> </InvalidArgument> <InvalidArrayOffset> <code><![CDATA[$dir['path']]]></code> <code><![CDATA[$dir['url']]]></code> </InvalidArrayOffset> <NullArgument> - <code>null</code> + <code><![CDATA[null]]></code> </NullArgument> <TypeDoesNotContainNull> - <code>$appId === null</code> - <code>$appId === null</code> + <code><![CDATA[$appId === null]]></code> + <code><![CDATA[$appId === null]]></code> </TypeDoesNotContainNull> </file> <file src="lib/private/legacy/OC_FileChunking.php"> <UndefinedDocblockClass> - <code>\OC\InsufficientStorageException</code> + <code><![CDATA[\OC\InsufficientStorageException]]></code> </UndefinedDocblockClass> </file> <file src="lib/private/legacy/OC_Files.php"> + <InvalidIterator> + <code><![CDATA[$files]]></code> + <code><![CDATA[$files]]></code> + </InvalidIterator> + <NoValue> + <code><![CDATA[$files]]></code> + </NoValue> <RedundantCondition> - <code>$getType === self::ZIP_DIR</code> - <code>$getType === self::ZIP_DIR</code> + <code><![CDATA[$getType === self::ZIP_DIR]]></code> + <code><![CDATA[$getType === self::ZIP_DIR]]></code> </RedundantCondition> <UndefinedInterfaceMethod> - <code>get</code> - <code>get</code> + <code><![CDATA[get]]></code> + <code><![CDATA[get]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/legacy/OC_Helper.php"> <InvalidArrayOffset> - <code>$matches[0][$last_match]</code> - <code>$matches[1][$last_match]</code> + <code><![CDATA[$matches[0][$last_match]]]></code> + <code><![CDATA[$matches[1][$last_match]]]></code> </InvalidArrayOffset> <InvalidScalarArgument> - <code>$path</code> + <code><![CDATA[$path]]></code> </InvalidScalarArgument> <UndefinedInterfaceMethod> - <code>getQuota</code> + <code><![CDATA[getQuota]]></code> </UndefinedInterfaceMethod> </file> <file src="lib/private/legacy/OC_Template.php"> <InvalidReturnType> - <code>bool|string</code> + <code><![CDATA[bool|string]]></code> </InvalidReturnType> </file> <file src="lib/private/legacy/OC_User.php"> <UndefinedClass> - <code>\Test\Util\User\Dummy</code> + <code><![CDATA[\Test\Util\User\Dummy]]></code> </UndefinedClass> </file> <file src="lib/private/legacy/OC_Util.php"> <InvalidReturnType> - <code>void</code> + <code><![CDATA[void]]></code> </InvalidReturnType> </file> <file src="lib/public/AppFramework/ApiController.php"> @@ -3044,10 +3357,10 @@ </file> <file src="lib/public/AppFramework/Db/Entity.php"> <InvalidNullableReturnType> - <code>string</code> + <code><![CDATA[string]]></code> </InvalidNullableReturnType> <NullableReturnStatement> - <code>$column</code> + <code><![CDATA[$column]]></code> </NullableReturnStatement> </file> <file src="lib/public/AppFramework/Http/Response.php"> @@ -3055,50 +3368,46 @@ <code><![CDATA[array_merge($mergeWith, $this->headers)]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>array{X-Request-Id: string, Cache-Control: string, Content-Security-Policy: string, Feature-Policy: string, X-Robots-Tag: string, Last-Modified?: string, ETag?: string, ...H}</code> + <code><![CDATA[array{X-Request-Id: string, Cache-Control: string, Content-Security-Policy: string, Feature-Policy: string, X-Robots-Tag: string, Last-Modified?: string, ETag?: string, ...H}]]></code> </MoreSpecificReturnType> </file> - <file src="lib/public/Authentication/Token/IToken.php"> - <AmbiguousConstantInheritance> - <code>DO_NOT_REMEMBER</code> - <code>PERMANENT_TOKEN</code> - <code>REMEMBER</code> - <code>TEMPORARY_TOKEN</code> - <code>WIPE_TOKEN</code> - </AmbiguousConstantInheritance> - </file> <file src="lib/public/Color.php"> <LessSpecificReturnStatement> - <code>$step</code> + <code><![CDATA[$step]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>array{0: int, 1: int, 2: int}</code> + <code><![CDATA[array{0: int, 1: int, 2: int}]]></code> </MoreSpecificReturnType> </file> + <file src="lib/public/DB/QueryBuilder/IQueryBuilder.php"> + <InvalidDocblock> + <code><![CDATA[public function createFunction($call);]]></code> + </InvalidDocblock> + </file> <file src="lib/public/Diagnostics/IQueryLogger.php"> <LessSpecificImplementedReturnType> - <code>mixed</code> + <code><![CDATA[mixed]]></code> </LessSpecificImplementedReturnType> </file> <file src="lib/public/EventDispatcher/GenericEvent.php"> <MissingTemplateParam> - <code>ArrayAccess</code> - <code>IteratorAggregate</code> + <code><![CDATA[ArrayAccess]]></code> + <code><![CDATA[IteratorAggregate]]></code> </MissingTemplateParam> </file> <file src="lib/public/Files.php"> <FalsableReturnStatement> - <code>\OC_App::getStorage($app)</code> + <code><![CDATA[\OC_App::getStorage($app)]]></code> </FalsableReturnStatement> </file> <file src="lib/public/Files/Storage.php"> <InvalidParamDefault> - <code>array</code> + <code><![CDATA[array]]></code> </InvalidParamDefault> </file> <file src="lib/public/L10N/ILanguageIterator.php"> <MissingTemplateParam> - <code>\Iterator</code> + <code><![CDATA[\Iterator]]></code> </MissingTemplateParam> </file> <file src="lib/public/Preview/BeforePreviewFetchedEvent.php"> @@ -3106,7 +3415,7 @@ <code><![CDATA[$this->mode]]></code> </LessSpecificReturnStatement> <MoreSpecificReturnType> - <code>null|IPreview::MODE_FILL|IPreview::MODE_COVER</code> + <code><![CDATA[null|IPreview::MODE_FILL|IPreview::MODE_COVER]]></code> </MoreSpecificReturnType> </file> </files> diff --git a/core/l10n/pl.js b/core/l10n/pl.js index f1f3d85349f..1ae24989426 100644 --- a/core/l10n/pl.js +++ b/core/l10n/pl.js @@ -39,9 +39,11 @@ OC.L10N.register( "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Kliknij w przycisk, aby zresetować hasło. Jeśli nie zażądałeś zresetowania hasła, zignoruj tego e-maila.", "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Kliknij poniższy link, aby zresetować hasło. Jeśli nie zażądałeś zresetowania hasła, zignoruj tego e-maila.", "Reset your password" : "Zresetuj hasło", + "The given provider is not available" : "Podany dostawca jest niedostępny", "Task not found" : "Nie znaleziono zadania", "Internal error" : "Błąd wewnętrzny", "Not found" : "Nie znaleziono", + "Bad request" : "Złe żądanie", "Requested task type does not exist" : "Żądany typ zadania nie istnieje", "Necessary language model provider is not available" : "Niezbędny dostawca modelu językowego nie jest dostępny", "No text to image provider is available" : "Brak dostępnego dostawcy tekstu na obraz", @@ -103,10 +105,14 @@ OC.L10N.register( "Yes" : "Tak", "Create share" : "Utwórz udostępnienie", "Failed to add the public link to your Nextcloud" : "Nie udało się dodać linku publicznego do Nextcloud", + "Direct link copied to clipboard" : "Bezpośredni odnośnik skopiowany do schowka", "Custom date range" : "Własny zakres dat", "Pick start date" : "Wybierz datę rozpoczęcia", "Pick end date" : "Wybierz datę zakończenia", "Search in date range" : "Szukaj w zakresie dat", + "Search in current app" : "Wyszukaj w bieżącej aplikacji", + "Clear search" : "Wyczyść wyszukiwanie", + "Search everywhere" : "Szukaj wszędzie", "Unified search" : "Ujednolicone wyszukiwanie", "Search apps, files, tags, messages" : "Szukaj aplikacji, plików, tagów, wiadomości", "Places" : "Miejsca", @@ -140,6 +146,7 @@ OC.L10N.register( "This account is disabled" : "To konto jest wyłączone", "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Wykryliśmy wiele nieudanych prób logowania z Twojego adresu IP. Dlatego następne logowanie będzie możliwe dopiero za 30 sekund.", "Account name or email" : "Nazwa konta lub e-mail", + "Account name" : "Nazwa konta", "Log in with a device" : "Zaloguj się za pomocą urządzenia", "Login or email" : "Nazwa logowania lub e-mail", "Your account is not setup for passwordless login." : "Twoje konto nie jest skonfigurowane do logowania bez hasła.", @@ -273,6 +280,7 @@ OC.L10N.register( "The server was unable to complete your request." : "Serwer nie mógł zakończyć żądania.", "If this happens again, please send the technical details below to the server administrator." : "Jeśli to się powtórzy, prześlij poniższe szczegóły techniczne do administratora serwera.", "More details can be found in the server log." : "Więcej szczegółów można znaleźć w logu serwera.", + "For more details see the documentation ↗." : "Więcej szczegółów znajdziesz w dokumentacji ↗.", "Technical details" : "Szczegóły techniczne", "Remote Address: %s" : "Adres zdalny: %s", "Request ID: %s" : "ID żądania: %s", diff --git a/core/l10n/pl.json b/core/l10n/pl.json index b7de92c096a..b1071f4ea2f 100644 --- a/core/l10n/pl.json +++ b/core/l10n/pl.json @@ -37,9 +37,11 @@ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Kliknij w przycisk, aby zresetować hasło. Jeśli nie zażądałeś zresetowania hasła, zignoruj tego e-maila.", "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Kliknij poniższy link, aby zresetować hasło. Jeśli nie zażądałeś zresetowania hasła, zignoruj tego e-maila.", "Reset your password" : "Zresetuj hasło", + "The given provider is not available" : "Podany dostawca jest niedostępny", "Task not found" : "Nie znaleziono zadania", "Internal error" : "Błąd wewnętrzny", "Not found" : "Nie znaleziono", + "Bad request" : "Złe żądanie", "Requested task type does not exist" : "Żądany typ zadania nie istnieje", "Necessary language model provider is not available" : "Niezbędny dostawca modelu językowego nie jest dostępny", "No text to image provider is available" : "Brak dostępnego dostawcy tekstu na obraz", @@ -101,10 +103,14 @@ "Yes" : "Tak", "Create share" : "Utwórz udostępnienie", "Failed to add the public link to your Nextcloud" : "Nie udało się dodać linku publicznego do Nextcloud", + "Direct link copied to clipboard" : "Bezpośredni odnośnik skopiowany do schowka", "Custom date range" : "Własny zakres dat", "Pick start date" : "Wybierz datę rozpoczęcia", "Pick end date" : "Wybierz datę zakończenia", "Search in date range" : "Szukaj w zakresie dat", + "Search in current app" : "Wyszukaj w bieżącej aplikacji", + "Clear search" : "Wyczyść wyszukiwanie", + "Search everywhere" : "Szukaj wszędzie", "Unified search" : "Ujednolicone wyszukiwanie", "Search apps, files, tags, messages" : "Szukaj aplikacji, plików, tagów, wiadomości", "Places" : "Miejsca", @@ -138,6 +144,7 @@ "This account is disabled" : "To konto jest wyłączone", "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Wykryliśmy wiele nieudanych prób logowania z Twojego adresu IP. Dlatego następne logowanie będzie możliwe dopiero za 30 sekund.", "Account name or email" : "Nazwa konta lub e-mail", + "Account name" : "Nazwa konta", "Log in with a device" : "Zaloguj się za pomocą urządzenia", "Login or email" : "Nazwa logowania lub e-mail", "Your account is not setup for passwordless login." : "Twoje konto nie jest skonfigurowane do logowania bez hasła.", @@ -271,6 +278,7 @@ "The server was unable to complete your request." : "Serwer nie mógł zakończyć żądania.", "If this happens again, please send the technical details below to the server administrator." : "Jeśli to się powtórzy, prześlij poniższe szczegóły techniczne do administratora serwera.", "More details can be found in the server log." : "Więcej szczegółów można znaleźć w logu serwera.", + "For more details see the documentation ↗." : "Więcej szczegółów znajdziesz w dokumentacji ↗.", "Technical details" : "Szczegóły techniczne", "Remote Address: %s" : "Adres zdalny: %s", "Request ID: %s" : "ID żądania: %s", diff --git a/core/l10n/ro.js b/core/l10n/ro.js index fb62ceaa628..8451a564669 100644 --- a/core/l10n/ro.js +++ b/core/l10n/ro.js @@ -41,6 +41,7 @@ OC.L10N.register( "Task not found" : "Sarcina nu a fost găsită", "Internal error" : "Eroare internă", "Not found" : "Nu a fost găsit", + "Bad request" : "Solicitare invalidă", "Requested task type does not exist" : "Tipul de sarcină cerut nu există", "Necessary language model provider is not available" : "Furnizorul de model de limbă nu este disponibil", "No text to image provider is available" : "Niciun provider disponibil pentru text - imagine", @@ -103,7 +104,11 @@ OC.L10N.register( "Pick start date" : "Selectează o dată de început", "Pick end date" : "Selectează o dată de sfârșit", "Search in date range" : "Caută în intervalul", + "Search everywhere" : "Caută oriunde", + "Unified search" : "Căutare unificată", "Search apps, files, tags, messages" : "Caută aplicații, fișiere, etichete, mesaje", + "Places" : "Locuri", + "Date" : "Dată", "Today" : "Azi", "Last 7 days" : "Ultimele 7 zile", "Last 30 days" : "Ultimele 30 de zile", @@ -244,6 +249,7 @@ OC.L10N.register( "Collaborative tags" : "Etichete colaborative", "No tags found" : "Nu au fost găsite etichete", "Personal" : "Personal", + "Accounts" : "Conturi", "Admin" : "Administrator", "Help" : "Ajutor", "Access forbidden" : "Acces restricționat", @@ -280,6 +286,7 @@ OC.L10N.register( "Only %s is available." : "Doar %s este disponibil.", "Install and activate additional PHP modules to choose other database types." : "Instalează și activează module PHP adiționale pentru a putea alege alte tipuri de baze de date.", "For more details check out the documentation." : "Pentru mai multe detalii verifică documentația.", + "Database account" : "Cont bază de date", "Database password" : "Parola bazei de date", "Database name" : "Numele bazei de date", "Database tablespace" : "Tabela de spațiu a bazei de date", @@ -303,6 +310,7 @@ OC.L10N.register( "Connect to your account" : "Conectează-te la contul tău", "Please log in before granting %1$s access to your %2$s account." : "Trebuie să vă logați înainte de a permite accesul %1$s la contul dumneavoastră %2$s.", "If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Dacă încercați să configurați un nou device sau o aplicație, cineva încearcă să vă păcălească să-i acordați accesul la date. În acest caz nu continuați și contactați în schimb administratorul.", + "App password" : "Parolă aplicație", "Grant access" : "Permite accesul", "Account access" : "Acces cont", "Currently logged in as %1$s (%2$s)." : "Autentificat ca %1$s (%2$s).", diff --git a/core/l10n/ro.json b/core/l10n/ro.json index 654b11c1f74..954cb5a60cd 100644 --- a/core/l10n/ro.json +++ b/core/l10n/ro.json @@ -39,6 +39,7 @@ "Task not found" : "Sarcina nu a fost găsită", "Internal error" : "Eroare internă", "Not found" : "Nu a fost găsit", + "Bad request" : "Solicitare invalidă", "Requested task type does not exist" : "Tipul de sarcină cerut nu există", "Necessary language model provider is not available" : "Furnizorul de model de limbă nu este disponibil", "No text to image provider is available" : "Niciun provider disponibil pentru text - imagine", @@ -101,7 +102,11 @@ "Pick start date" : "Selectează o dată de început", "Pick end date" : "Selectează o dată de sfârșit", "Search in date range" : "Caută în intervalul", + "Search everywhere" : "Caută oriunde", + "Unified search" : "Căutare unificată", "Search apps, files, tags, messages" : "Caută aplicații, fișiere, etichete, mesaje", + "Places" : "Locuri", + "Date" : "Dată", "Today" : "Azi", "Last 7 days" : "Ultimele 7 zile", "Last 30 days" : "Ultimele 30 de zile", @@ -242,6 +247,7 @@ "Collaborative tags" : "Etichete colaborative", "No tags found" : "Nu au fost găsite etichete", "Personal" : "Personal", + "Accounts" : "Conturi", "Admin" : "Administrator", "Help" : "Ajutor", "Access forbidden" : "Acces restricționat", @@ -278,6 +284,7 @@ "Only %s is available." : "Doar %s este disponibil.", "Install and activate additional PHP modules to choose other database types." : "Instalează și activează module PHP adiționale pentru a putea alege alte tipuri de baze de date.", "For more details check out the documentation." : "Pentru mai multe detalii verifică documentația.", + "Database account" : "Cont bază de date", "Database password" : "Parola bazei de date", "Database name" : "Numele bazei de date", "Database tablespace" : "Tabela de spațiu a bazei de date", @@ -301,6 +308,7 @@ "Connect to your account" : "Conectează-te la contul tău", "Please log in before granting %1$s access to your %2$s account." : "Trebuie să vă logați înainte de a permite accesul %1$s la contul dumneavoastră %2$s.", "If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Dacă încercați să configurați un nou device sau o aplicație, cineva încearcă să vă păcălească să-i acordați accesul la date. În acest caz nu continuați și contactați în schimb administratorul.", + "App password" : "Parolă aplicație", "Grant access" : "Permite accesul", "Account access" : "Acces cont", "Currently logged in as %1$s (%2$s)." : "Autentificat ca %1$s (%2$s).", diff --git a/dist/2773-2773.js b/dist/1356-1356.js index bba5283b495..f5a2e11ef0d 100644 --- a/dist/2773-2773.js +++ b/dist/1356-1356.js @@ -1,3 +1,3 @@ -/*! For license information please see 2773-2773.js.LICENSE.txt */ -(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[2773],{17816:function(t,e,i){var r=i(96763);t.exports=function(){"use strict";function t(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}var e=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(e,i){var n;n=function(){return function e(i,r,n){function s(o,l){if(!r[o]){if(!i[o]){if(!l&&t)return t();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(t){return s(i[o][1][t]||t)}),h,h.exports,e,i,r,n)}return r[o].exports}for(var a=t,o=0;o<n.length;o++)s(n[o]);return s}({1:[function(t,e,i){e.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},{}],2:[function(t,e,i){var r=t("./utils").getSymbolSize;i.getRowColCoords=function(t){if(1===t)return[];for(var e=Math.floor(t/7)+2,i=r(t),n=145===i?26:2*Math.ceil((i-13)/(2*e-2)),s=[i-7],a=1;a<e-1;a++)s[a]=s[a-1]-n;return s.push(6),s.reverse()},i.getPositions=function(t){for(var e=[],r=i.getRowColCoords(t),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||e.push([r[s],r[a]]);return e}},{"./utils":21}],3:[function(t,e,i){var r=t("./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(t){this.mode=r.ALPHANUMERIC,this.data=t}s.getBitsLength=function(t){return 11*Math.floor(t/2)+t%2*6},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(t){var e;for(e=0;e+2<=this.data.length;e+=2){var i=45*n.indexOf(this.data[e]);i+=n.indexOf(this.data[e+1]),t.put(i,11)}this.data.length%2&&t.put(n.indexOf(this.data[e]),6)},e.exports=s},{"./mode":14}],4:[function(t,e,i){function r(){this.buffer=[],this.length=0}r.prototype={get:function(t){var e=Math.floor(t/8);return 1==(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(var i=0;i<e;i++)this.putBit(1==(t>>>e-i-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}},e.exports=r},{}],5:[function(t,e,i){var r=t("../utils/buffer");function n(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=r.alloc(t*t),this.reservedBit=r.alloc(t*t)}n.prototype.set=function(t,e,i,r){var n=t*this.size+e;this.data[n]=i,r&&(this.reservedBit[n]=!0)},n.prototype.get=function(t,e){return this.data[t*this.size+e]},n.prototype.xor=function(t,e,i){this.data[t*this.size+e]^=i},n.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]},e.exports=n},{"../utils/buffer":28}],6:[function(t,e,i){var r=t("../utils/buffer"),n=t("./mode");function s(t){this.mode=n.BYTE,this.data=r.from(t)}s.getBitsLength=function(t){return 8*t},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(t){for(var e=0,i=this.data.length;e<i;e++)t.put(this.data[e],8)},e.exports=s},{"../utils/buffer":28,"./mode":14}],7:[function(t,e,i){var r=t("./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(t,e){switch(e){case r.L:return n[4*(t-1)+0];case r.M:return n[4*(t-1)+1];case r.Q:return n[4*(t-1)+2];case r.H:return n[4*(t-1)+3];default:return}},i.getTotalCodewordsCount=function(t,e){switch(e){case r.L:return s[4*(t-1)+0];case r.M:return s[4*(t-1)+1];case r.Q:return s[4*(t-1)+2];case r.H:return s[4*(t-1)+3];default:return}}},{"./error-correction-level":8}],8:[function(t,e,i){i.L={bit:1},i.M={bit:0},i.Q={bit:3},i.H={bit:2},i.isValid=function(t){return t&&void 0!==t.bit&&t.bit>=0&&t.bit<4},i.from=function(t,e){if(i.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.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: "+t)}}(t)}catch(t){return e}}},{}],9:[function(t,e,i){var r=t("./utils").getSymbolSize;i.getPositions=function(t){var e=r(t);return[[0,0],[e-7,0],[0,e-7]]}},{"./utils":21}],10:[function(t,e,i){var r=t("./utils"),n=r.getBCHDigit(1335);i.getEncodedBits=function(t,e){for(var i=t.bit<<3|e,s=i<<10;r.getBCHDigit(s)-n>=0;)s^=1335<<r.getBCHDigit(s)-n;return 21522^(i<<10|s)}},{"./utils":21}],11:[function(t,e,i){var r=t("../utils/buffer"),n=r.alloc(512),s=r.alloc(256);!function(){for(var t=1,e=0;e<255;e++)n[e]=t,s[t]=e,256&(t<<=1)&&(t^=285);for(e=255;e<512;e++)n[e]=n[e-255]}(),i.log=function(t){if(t<1)throw new Error("log("+t+")");return s[t]},i.exp=function(t){return n[t]},i.mul=function(t,e){return 0===t||0===e?0:n[s[t]+s[e]]}},{"../utils/buffer":28}],12:[function(t,e,i){var r=t("./mode"),n=t("./utils");function s(t){this.mode=r.KANJI,this.data=t}s.getBitsLength=function(t){return 13*t},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(t){var e;for(e=0;e<this.data.length;e++){var i=n.toSJIS(this.data[e]);if(i>=33088&&i<=40956)i-=33088;else{if(!(i>=57408&&i<=60351))throw new Error("Invalid SJIS character: "+this.data[e]+"\nMake sure your charset is UTF-8");i-=49472}i=192*(i>>>8&255)+(255&i),t.put(i,13)}},e.exports=s},{"./mode":14,"./utils":21}],13:[function(t,e,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(t,e,r){switch(t){case i.Patterns.PATTERN000:return(e+r)%2==0;case i.Patterns.PATTERN001:return e%2==0;case i.Patterns.PATTERN010:return r%3==0;case i.Patterns.PATTERN011:return(e+r)%3==0;case i.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(r/3))%2==0;case i.Patterns.PATTERN101:return e*r%2+e*r%3==0;case i.Patterns.PATTERN110:return(e*r%2+e*r%3)%2==0;case i.Patterns.PATTERN111:return(e*r%3+(e+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}}i.isValid=function(t){return null!=t&&""!==t&&!isNaN(t)&&t>=0&&t<=7},i.from=function(t){return i.isValid(t)?parseInt(t,10):void 0},i.getPenaltyN1=function(t){for(var e=t.size,i=0,n=0,s=0,a=null,o=null,l=0;l<e;l++){n=s=0,a=o=null;for(var c=0;c<e;c++){var h=t.get(l,c);h===a?n++:(n>=5&&(i+=r+(n-5)),a=h,n=1),(h=t.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(t){for(var e=t.size,i=0,r=0;r<e-1;r++)for(var s=0;s<e-1;s++){var a=t.get(r,s)+t.get(r,s+1)+t.get(r+1,s)+t.get(r+1,s+1);4!==a&&0!==a||i++}return i*n},i.getPenaltyN3=function(t){for(var e=t.size,i=0,r=0,n=0,a=0;a<e;a++){r=n=0;for(var o=0;o<e;o++)r=r<<1&2047|t.get(a,o),o>=10&&(1488===r||93===r)&&i++,n=n<<1&2047|t.get(o,a),o>=10&&(1488===n||93===n)&&i++}return i*s},i.getPenaltyN4=function(t){for(var e=0,i=t.data.length,r=0;r<i;r++)e+=t.data[r];return Math.abs(Math.ceil(100*e/i/5)-10)*a},i.applyMask=function(t,e){for(var i=e.size,r=0;r<i;r++)for(var n=0;n<i;n++)e.isReserved(n,r)||e.xor(n,r,o(t,n,r))},i.getBestMask=function(t,e){for(var r=Object.keys(i.Patterns).length,n=0,s=1/0,a=0;a<r;a++){e(a),i.applyMask(a,t);var o=i.getPenaltyN1(t)+i.getPenaltyN2(t)+i.getPenaltyN3(t)+i.getPenaltyN4(t);i.applyMask(a,t),o<s&&(s=o,n=a)}return n}},{}],14:[function(t,e,i){var r=t("./version-check"),n=t("./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(t,e){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!r.isValid(e))throw new Error("Invalid version: "+e);return e>=1&&e<10?t.ccBits[0]:e<27?t.ccBits[1]:t.ccBits[2]},i.getBestModeForData=function(t){return n.testNumeric(t)?i.NUMERIC:n.testAlphanumeric(t)?i.ALPHANUMERIC:n.testKanji(t)?i.KANJI:i.BYTE},i.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},i.isValid=function(t){return t&&t.bit&&t.ccBits},i.from=function(t,e){if(i.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.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: "+t)}}(t)}catch(t){return e}}},{"./regex":19,"./version-check":22}],15:[function(t,e,i){var r=t("./mode");function n(t){this.mode=r.NUMERIC,this.data=t.toString()}n.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%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(t){var e,i,r;for(e=0;e+3<=this.data.length;e+=3)i=this.data.substr(e,3),r=parseInt(i,10),t.put(r,10);var n=this.data.length-e;n>0&&(i=this.data.substr(e),r=parseInt(i,10),t.put(r,3*n+1))},e.exports=n},{"./mode":14}],16:[function(t,e,i){var r=t("../utils/buffer"),n=t("./galois-field");i.mul=function(t,e){for(var i=r.alloc(t.length+e.length-1),s=0;s<t.length;s++)for(var a=0;a<e.length;a++)i[s+a]^=n.mul(t[s],e[a]);return i},i.mod=function(t,e){for(var i=r.from(t);i.length-e.length>=0;){for(var s=i[0],a=0;a<e.length;a++)i[a]^=n.mul(e[a],s);for(var o=0;o<i.length&&0===i[o];)o++;i=i.slice(o)}return i},i.generateECPolynomial=function(t){for(var e=r.from([1]),s=0;s<t;s++)e=i.mul(e,[1,n.exp(s)]);return e}},{"../utils/buffer":28,"./galois-field":11}],17:[function(t,e,i){var r=t("../utils/buffer"),n=t("./utils"),s=t("./error-correction-level"),a=t("./bit-buffer"),o=t("./bit-matrix"),l=t("./alignment-pattern"),c=t("./finder-pattern"),h=t("./mask-pattern"),u=t("./error-correction-code"),d=t("./reed-solomon-encoder"),p=t("./version"),f=t("./format-info"),A=t("./mode"),g=t("./segments"),m=t("isarray");function v(t,e,i){var r,n,s=t.size,a=f.getEncodedBits(e,i);for(r=0;r<15;r++)n=1==(a>>r&1),r<6?t.set(r,8,n,!0):r<8?t.set(r+1,8,n,!0):t.set(s-15+r,8,n,!0),r<8?t.set(8,s-r-1,n,!0):r<9?t.set(8,15-r-1+1,n,!0):t.set(8,15-r-1,n,!0);t.set(s-8,8,1,!0)}function y(t,e,i){var s=new a;i.forEach((function(e){s.put(e.mode.bit,4),s.put(e.getLength(),A.getCharCountIndicator(e.mode,t)),e.write(s)}));var o=8*(n.getSymbolTotalCodewords(t)-u.getTotalCodewordsCount(t,e));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(t,e,i){for(var s=n.getSymbolTotalCodewords(e),a=s-u.getTotalCodewordsCount(e,i),o=u.getBlocksCount(e,i),l=o-s%o,c=Math.floor(s/o),h=Math.floor(a/o),p=h+1,f=c-h,A=new d(f),g=0,m=new Array(o),v=new Array(o),y=0,_=r.from(t.buffer),C=0;C<o;C++){var w=C<l?h:p;m[C]=_.slice(g,g+w),v[C]=A.encode(m[C]),g+=w,y=Math.max(y,w)}var E,b,S=r.alloc(s),x=0;for(E=0;E<y;E++)for(b=0;b<o;b++)E<m[b].length&&(S[x++]=m[b][E]);for(E=0;E<f;E++)for(b=0;b<o;b++)S[x++]=v[b][E];return S}(s,t,e)}function _(t,e,i,r){var s;if(m(t))s=g.fromArray(t);else{if("string"!=typeof t)throw new Error("Invalid data");var a=e;if(!a){var u=g.rawSplit(t);a=p.getBestVersionForData(u,i)}s=g.fromString(t,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(e){if(e<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 e=d;var f=y(e,i,s),A=n.getSymbolSize(e),_=new o(A);return function(t,e){for(var i=t.size,r=c.getPositions(e),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?t.set(s+o,a+l,!0,!0):t.set(s+o,a+l,!1,!0))}(_,e),function(t){for(var e=t.size,i=8;i<e-8;i++){var r=i%2==0;t.set(i,6,r,!0),t.set(6,i,r,!0)}}(_),function(t,e){for(var i=l.getPositions(e),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?t.set(n+a,s+o,!0,!0):t.set(n+a,s+o,!1,!0)}(_,e),v(_,i,0),e>=7&&function(t,e){for(var i,r,n,s=t.size,a=p.getEncodedBits(e),o=0;o<18;o++)i=Math.floor(o/3),r=o%3+s-8-3,n=1==(a>>o&1),t.set(i,r,n,!0),t.set(r,i,n,!0)}(_,e),function(t,e){for(var i=t.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(!t.isReserved(n,o-l)){var c=!1;a<e.length&&(c=1==(e[a]>>>s&1)),t.set(n,o-l,c),-1==--s&&(a++,s=7)}if((n+=r)<0||i<=n){n-=r,r=-r;break}}}(_,f),isNaN(r)&&(r=h.getBestMask(_,v.bind(null,_,i))),h.applyMask(r,_),v(_,i,r),{modules:_,version:e,errorCorrectionLevel:i,maskPattern:r,segments:s}}i.create=function(t,e){if(void 0===t||""===t)throw new Error("No input text");var i,r,a=s.M;return void 0!==e&&(a=s.from(e.errorCorrectionLevel,s.M),i=p.from(e.version),r=h.from(e.maskPattern),e.toSJISFunc&&n.setToSJISFunction(e.toSJISFunc)),_(t,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(t,e,i){var r=t("../utils/buffer"),n=t("./polynomial"),s=t("buffer").Buffer;function a(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}a.prototype.initialize=function(t){this.degree=t,this.genPoly=n.generateECPolynomial(this.degree)},a.prototype.encode=function(t){if(!this.genPoly)throw new Error("Encoder not initialized");var e=r.alloc(this.degree),i=s.concat([t,e],t.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},e.exports=a},{"../utils/buffer":28,"./polynomial":16,buffer:30}],19:[function(t,e,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(t){return a.test(t)},i.testNumeric=function(t){return o.test(t)},i.testAlphanumeric=function(t){return l.test(t)}},{}],20:[function(t,e,i){var r=t("./mode"),n=t("./numeric-data"),s=t("./alphanumeric-data"),a=t("./byte-data"),o=t("./kanji-data"),l=t("./regex"),c=t("./utils"),h=t("dijkstrajs");function u(t){return unescape(encodeURIComponent(t)).length}function d(t,e,i){for(var r,n=[];null!==(r=t.exec(i));)n.push({data:r[0],index:r.index,mode:e,length:r[0].length});return n}function p(t){var e,i,n=d(l.NUMERIC,r.NUMERIC,t),s=d(l.ALPHANUMERIC,r.ALPHANUMERIC,t);return c.isKanjiModeEnabled()?(e=d(l.BYTE,r.BYTE,t),i=d(l.KANJI,r.KANJI,t)):(e=d(l.BYTE_KANJI,r.BYTE,t),i=[]),n.concat(s,e,i).sort((function(t,e){return t.index-e.index})).map((function(t){return{data:t.data,mode:t.mode,length:t.length}}))}function f(t,e){switch(e){case r.NUMERIC:return n.getBitsLength(t);case r.ALPHANUMERIC:return s.getBitsLength(t);case r.KANJI:return o.getBitsLength(t);case r.BYTE:return a.getBitsLength(t)}}function A(t,e){var i,l=r.getBestModeForData(t);if((i=r.from(e,l))!==r.BYTE&&i.bit<l.bit)throw new Error('"'+t+'" 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(t);case r.ALPHANUMERIC:return new s(t);case r.KANJI:return new o(t);case r.BYTE:return new a(t)}}i.fromArray=function(t){return t.reduce((function(t,e){return"string"==typeof e?t.push(A(e,null)):e.data&&t.push(A(e.data,e.mode)),t}),[])},i.fromString=function(t,e){for(var n=function(t,e){for(var i={},n={start:{}},s=["start"],a=0;a<t.length;a++){for(var o=t[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,e))}}s=l}for(d=0;d<s.length;d++)n[s[d]].end=0;return{map:n,table:i}}(function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];switch(n.mode){case r.NUMERIC:e.push([n,{data:n.data,mode:r.ALPHANUMERIC,length:n.length},{data:n.data,mode:r.BYTE,length:n.length}]);break;case r.ALPHANUMERIC:e.push([n,{data:n.data,mode:r.BYTE,length:n.length}]);break;case r.KANJI:e.push([n,{data:n.data,mode:r.BYTE,length:u(n.data)}]);break;case r.BYTE:e.push([{data:n.data,mode:r.BYTE,length:u(n.data)}])}}return e}(p(t,c.isKanjiModeEnabled())),e),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(t,e){var i=t.length-1>=0?t[t.length-1]:null;return i&&i.mode===e.mode?(t[t.length-1].data+=e.data,t):(t.push(e),t)}),[]))},i.rawSplit=function(t){return i.fromArray(p(t,c.isKanjiModeEnabled()))}},{"./alphanumeric-data":3,"./byte-data":6,"./kanji-data":12,"./mode":14,"./numeric-data":15,"./regex":19,"./utils":21,dijkstrajs:31}],21:[function(t,e,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(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return 4*t+17},i.getSymbolTotalCodewords=function(t){return n[t]},i.getBCHDigit=function(t){for(var e=0;0!==t;)e++,t>>>=1;return e},i.setToSJISFunction=function(t){if("function"!=typeof t)throw new Error('"toSJISFunc" is not a valid function.');r=t},i.isKanjiModeEnabled=function(){return void 0!==r},i.toSJIS=function(t){return r(t)}},{}],22:[function(t,e,i){i.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}},{}],23:[function(t,e,i){var r=t("./utils"),n=t("./error-correction-code"),s=t("./error-correction-level"),a=t("./mode"),o=t("./version-check"),l=t("isarray"),c=r.getBCHDigit(7973);function h(t,e){return a.getCharCountIndicator(t,e)+4}function u(t,e){var i=0;return t.forEach((function(t){var r=h(t.mode,e);i+=r+t.getBitsLength()})),i}i.from=function(t,e){return o.isValid(t)?parseInt(t,10):e},i.getCapacity=function(t,e,i){if(!o.isValid(t))throw new Error("Invalid QR Code version");void 0===i&&(i=a.BYTE);var s=8*(r.getSymbolTotalCodewords(t)-n.getTotalCodewordsCount(t,e));if(i===a.MIXED)return s;var l=s-h(i,t);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(t,e){var r,n=s.from(e,s.M);if(l(t)){if(t.length>1)return function(t,e){for(var r=1;r<=40;r++)if(u(t,r)<=i.getCapacity(r,e,a.MIXED))return r}(t,n);if(0===t.length)return 1;r=t[0]}else r=t;return function(t,e,r){for(var n=1;n<=40;n++)if(e<=i.getCapacity(n,r,t))return n}(r.mode,r.getLength(),n)},i.getEncodedBits=function(t){if(!o.isValid(t)||t<7)throw new Error("Invalid QR Code version");for(var e=t<<12;r.getBCHDigit(e)-c>=0;)e^=7973<<r.getBCHDigit(e)-c;return t<<12|e}},{"./error-correction-code":7,"./error-correction-level":8,"./mode":14,"./utils":21,"./version-check":22,isarray:33}],24:[function(t,e,i){var r=t("./can-promise"),n=t("./core/qrcode"),s=t("./renderer/canvas"),a=t("./renderer/svg-tag.js");function o(t,e,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=e,e=s=void 0):2!==l||e.getContext||(s=i,i=e,e=void 0),new Promise((function(r,a){try{var o=n.create(i,s);r(t(o,e,s))}catch(t){a(t)}}))}if(l<2)throw new Error("Too few arguments provided");2===l?(a=i,i=e,e=s=void 0):3===l&&(e.getContext&&void 0===a?(a=s,s=void 0):(a=s,s=i,i=e,e=void 0));try{var h=n.create(i,s);a(null,t(h,e,s))}catch(t){a(t)}}i.create=n.create,i.toCanvas=o.bind(null,s.render),i.toDataURL=o.bind(null,s.renderToDataURL),i.toString=o.bind(null,(function(t,e,i){return a.render(t,i)}))},{"./can-promise":1,"./core/qrcode":17,"./renderer/canvas":25,"./renderer/svg-tag.js":26}],25:[function(t,e,i){var r=t("./utils");i.render=function(t,e,i){var n=i,s=e;void 0!==n||e&&e.getContext||(n=e,e=void 0),e||(s=function(){try{return document.createElement("canvas")}catch(t){throw new Error("You need to specify a canvas element")}}()),n=r.getOptions(n);var a=r.getImageWidth(t.modules.size,n),o=s.getContext("2d"),l=o.createImageData(a,a);return r.qrToImageData(l.data,t,n),function(t,e,i){t.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=i,e.width=i,e.style.height=i+"px",e.style.width=i+"px"}(o,s,a),o.putImageData(l,0,0),s},i.renderToDataURL=function(t,e,r){var n=r;void 0!==n||e&&e.getContext||(n=e,e=void 0),n||(n={});var s=i.render(t,e,n),a=n.type||"image/png",o=n.rendererOpts||{};return s.toDataURL(a,o.quality)}},{"./utils":27}],26:[function(t,e,i){var r=t("./utils");function n(t,e){var i=t.a/255,r=e+'="'+t.hex+'"';return i<1?r+" "+e+'-opacity="'+i.toFixed(2).slice(1)+'"':r}function s(t,e,i){var r=t+e;return void 0!==i&&(r+=" "+i),r}i.render=function(t,e,i){var a=r.getOptions(e),o=t.modules.size,l=t.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(t,e,i){for(var r="",n=0,a=!1,o=0,l=0;l<t.length;l++){var c=Math.floor(l%e),h=Math.floor(l/e);c||a||(a=!0),t[l]?(o++,l>0&&c>0&&t[l-1]||(r+=a?s("M",c+i,.5+h+i):s("m",n,0),n=0,a=!1),c+1<e&&t[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(t,e,i){function r(t){if("number"==typeof t&&(t=t.toString()),"string"!=typeof t)throw new Error("Color should be defined as hex string");var e=t.slice().replace("#","").split("");if(e.length<3||5===e.length||e.length>8)throw new Error("Invalid hex color: "+t);3!==e.length&&4!==e.length||(e=Array.prototype.concat.apply([],e.map((function(t){return[t,t]})))),6===e.length&&e.push("F","F");var i=parseInt(e.join(""),16);return{r:i>>24&255,g:i>>16&255,b:i>>8&255,a:255&i,hex:"#"+e.slice(0,6).join("")}}i.getOptions=function(t){t||(t={}),t.color||(t.color={});var e=void 0===t.margin||null===t.margin||t.margin<0?4:t.margin,i=t.width&&t.width>=21?t.width:void 0,n=t.scale||4;return{width:i,scale:i?4:n,margin:e,color:{dark:r(t.color.dark||"#000000ff"),light:r(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}},i.getScale=function(t,e){return e.width&&e.width>=t+2*e.margin?e.width/(t+2*e.margin):e.scale},i.getImageWidth=function(t,e){var r=i.getScale(t,e);return Math.floor((t+2*e.margin)*r)},i.qrToImageData=function(t,e,r){for(var n=e.modules.size,s=e.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]),t[d++]=p.r,t[d++]=p.g,t[d++]=p.b,t[d]=p.a}}},{}],28:[function(t,e,i){var r=t("isarray");s.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(t){return!1}}();var n=s.TYPED_ARRAY_SUPPORT?2147483647:1073741823;function s(t,e,i){return s.TYPED_ARRAY_SUPPORT||this instanceof s?"number"==typeof t?l(this,t):function(t,e,i,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,i,r){if(i<0||e.byteLength<i)throw new RangeError("'offset' is out of bounds");if(e.byteLength<i+(r||0))throw new RangeError("'length' is out of bounds");var n;return n=void 0===i&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,i):new Uint8Array(e,i,r),s.TYPED_ARRAY_SUPPORT?n.__proto__=s.prototype:n=c(t,n),n}(t,e,i,r):"string"==typeof e?function(t,e){var i=0|u(e),r=o(t,i),n=r.write(e);return n!==i&&(r=r.slice(0,n)),r}(t,e):function(t,e){if(s.isBuffer(e)){var i=0|a(e.length),r=o(t,i);return 0===r.length||e.copy(r,0,0,i),r}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(n=e.length)!=n?o(t,0):c(t,e);if("Buffer"===e.type&&Array.isArray(e.data))return c(t,e.data)}var n;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}(this,t,e,i):new s(t,e,i)}function a(t){if(t>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function o(t,e){var i;return s.TYPED_ARRAY_SUPPORT?(i=new Uint8Array(e)).__proto__=s.prototype:(null===(i=t)&&(i=new s(e)),i.length=e),i}function l(t,e){var i=o(t,e<0?0:0|a(e));if(!s.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)i[r]=0;return i}function c(t,e){for(var i=e.length<0?0:0|a(e.length),r=o(t,i),n=0;n<i;n+=1)r[n]=255&e[n];return r}function h(t,e){var i;e=e||1/0;for(var r=t.length,n=null,s=[],a=0;a<r;++a){if((i=t.charCodeAt(a))>55295&&i<57344){if(!n){if(i>56319){(e-=3)>-1&&s.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&s.push(239,191,189);continue}n=i;continue}if(i<56320){(e-=3)>-1&&s.push(239,191,189),n=i;continue}i=65536+(n-55296<<10|i-56320)}else n&&(e-=3)>-1&&s.push(239,191,189);if(n=null,i<128){if((e-=1)<0)break;s.push(i)}else if(i<2048){if((e-=2)<0)break;s.push(i>>6|192,63&i|128)}else if(i<65536){if((e-=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((e-=4)<0)break;s.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return s}function u(t){return s.isBuffer(t)?t.length:"undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer)?t.byteLength:("string"!=typeof t&&(t=""+t),0===t.length?0:h(t).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(t,e,i){void 0===e||void 0===i&&"string"==typeof e?(i=this.length,e=0):isFinite(e)&&(e|=0,isFinite(i)?i|=0:i=void 0);var r=this.length-e;if((void 0===i||i>r)&&(i=r),t.length>0&&(i<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");return function(t,e,i,r){return function(t,e,i,r){for(var n=0;n<r&&!(n+i>=e.length||n>=t.length);++n)e[n+i]=t[n];return n}(h(e,t.length-i),t,i,r)}(this,t,e,i)},s.prototype.slice=function(t,e){var i,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),s.TYPED_ARRAY_SUPPORT)(i=this.subarray(t,e)).__proto__=s.prototype;else{var n=e-t;i=new s(n,void 0);for(var a=0;a<n;++a)i[a]=this[a+t]}return i},s.prototype.copy=function(t,e,i,r){if(i||(i=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<i&&(r=i),r===i)return 0;if(0===t.length||0===this.length)return 0;if(e<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),t.length-e<r-i&&(r=t.length-e+i);var n,a=r-i;if(this===t&&i<e&&e<r)for(n=a-1;n>=0;--n)t[n+e]=this[n+i];else if(a<1e3||!s.TYPED_ARRAY_SUPPORT)for(n=0;n<a;++n)t[n+e]=this[n+i];else Uint8Array.prototype.set.call(t,this.subarray(i,i+a),e);return a},s.prototype.fill=function(t,e,i){if("string"==typeof t){if("string"==typeof e?(e=0,i=this.length):"string"==typeof i&&(i=this.length),1===t.length){var r=t.charCodeAt(0);r<256&&(t=r)}}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<i)throw new RangeError("Out of range index");if(i<=e)return this;var n;if(e>>>=0,i=void 0===i?this.length:i>>>0,t||(t=0),"number"==typeof t)for(n=e;n<i;++n)this[n]=t;else{var a=s.isBuffer(t)?t:new s(t),o=a.length;for(n=0;n<i-e;++n)this[n+e]=a[n%o]}return this},s.concat=function(t,e){if(!r(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return o(null,0);var i;if(void 0===e)for(e=0,i=0;i<t.length;++i)e+=t[i].length;var n=l(null,e),a=0;for(i=0;i<t.length;++i){var c=t[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(t){return!(null==t||!t._isBuffer)},e.exports.alloc=function(t){var e=new s(t);return e.fill(0),e},e.exports.from=function(t){return new s(t)}},{isarray:33}],29:[function(t,e,i){i.byteLength=function(t){var e=l(t),i=e[0],r=e[1];return 3*(i+r)/4-r},i.toByteArray=function(t){var e,i,r=l(t),a=r[0],o=r[1],c=new s(function(t,e,i){return 3*(e+i)/4-i}(0,a,o)),h=0,u=o>0?a-4:a;for(i=0;i<u;i+=4)e=n[t.charCodeAt(i)]<<18|n[t.charCodeAt(i+1)]<<12|n[t.charCodeAt(i+2)]<<6|n[t.charCodeAt(i+3)],c[h++]=e>>16&255,c[h++]=e>>8&255,c[h++]=255&e;return 2===o&&(e=n[t.charCodeAt(i)]<<2|n[t.charCodeAt(i+1)]>>4,c[h++]=255&e),1===o&&(e=n[t.charCodeAt(i)]<<10|n[t.charCodeAt(i+1)]<<4|n[t.charCodeAt(i+2)]>>2,c[h++]=e>>8&255,c[h++]=255&e),c},i.fromByteArray=function(t){for(var e,i=t.length,n=i%3,s=[],a=16383,o=0,l=i-n;o<l;o+=a)s.push(c(t,o,o+a>l?l:o+a));return 1===n?(e=t[i-1],s.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],s.push(r[e>>10]+r[e>>4&63]+r[e<<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(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=t.indexOf("=");return-1===i&&(i=e),[i,i===e?0:4-i%4]}function c(t,e,i){for(var n,s=[],a=e;a<i;a+=3)n=(t[a]<<16&16711680)+(t[a+1]<<8&65280)+(255&t[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(t,e,i){var n=t("base64-js"),s=t("ieee754"),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;i.Buffer=c,i.SlowBuffer=function(t){return+t!=t&&(t=0),c.alloc(+t)},i.INSPECT_MAX_BYTES=50;var o=2147483647;function l(t){if(t>o)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,c.prototype),e}function c(t,e,i){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return d(t)}return h(t,e,i)}function h(t,e,i){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!c.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var i=0|A(t,e),r=l(i),n=r.write(t,e);return n!==i&&(r=r.slice(0,n)),r}(t,e);if(ArrayBuffer.isView(t))return p(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(F(t,ArrayBuffer)||t&&F(t.buffer,ArrayBuffer))return function(t,e,i){if(e<0||t.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(t.byteLength<e+(i||0))throw new RangeError('"length" is outside of buffer bounds');var r;return r=void 0===e&&void 0===i?new Uint8Array(t):void 0===i?new Uint8Array(t,e):new Uint8Array(t,e,i),Object.setPrototypeOf(r,c.prototype),r}(t,e,i);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=t.valueOf&&t.valueOf();if(null!=r&&r!==t)return c.from(r,e,i);var n=function(t){if(c.isBuffer(t)){var e=0|f(t.length),i=l(e);return 0===i.length||t.copy(i,0,0,e),i}return void 0!==t.length?"number"!=typeof t.length||z(t.length)?l(0):p(t):"Buffer"===t.type&&Array.isArray(t.data)?p(t.data):void 0}(t);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return c.from(t[Symbol.toPrimitive]("string"),e,i);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function u(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function d(t){return u(t),l(t<0?0:0|f(t))}function p(t){for(var e=t.length<0?0:0|f(t.length),i=l(e),r=0;r<e;r+=1)i[r]=255&t[r];return i}function f(t){if(t>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|t}function A(t,e){if(c.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||F(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var i=t.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===i)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return U(t).length;default:if(n)return r?-1:Y(t).length;e=(""+e).toLowerCase(),n=!0}}function g(t,e,i){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if((i>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return D(this,e,i);case"utf8":case"utf-8":return T(this,e,i);case"ascii":return k(this,e,i);case"latin1":case"binary":return R(this,e,i);case"base64":return x(this,e,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,i);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function m(t,e,i){var r=t[e];t[e]=t[i],t[i]=r}function v(t,e,i,r,n){if(0===t.length)return-1;if("string"==typeof i?(r=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),z(i=+i)&&(i=n?0:t.length-1),i<0&&(i=t.length+i),i>=t.length){if(n)return-1;i=t.length-1}else if(i<0){if(!n)return-1;i=0}if("string"==typeof e&&(e=c.from(e,r)),c.isBuffer(e))return 0===e.length?-1:y(t,e,i,r,n);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,i):Uint8Array.prototype.lastIndexOf.call(t,e,i):y(t,[e],i,r,n);throw new TypeError("val must be string, number or Buffer")}function y(t,e,i,r,n){var s,a=1,o=t.length,l=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,o/=2,l/=2,i/=2}function c(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(n){var h=-1;for(s=i;s<o;s++)if(c(t,s)===c(e,-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(t,s+d)!==c(e,d)){u=!1;break}if(u)return s}return-1}function _(t,e,i,r){i=Number(i)||0;var n=t.length-i;r?(r=Number(r))>n&&(r=n):r=n;var s=e.length;r>s/2&&(r=s/2);for(var a=0;a<r;++a){var o=parseInt(e.substr(2*a,2),16);if(z(o))return a;t[i+a]=o}return a}function C(t,e,i,r){return V(Y(e,t.length-i),t,i,r)}function w(t,e,i,r){return V(function(t){for(var e=[],i=0;i<t.length;++i)e.push(255&t.charCodeAt(i));return e}(e),t,i,r)}function E(t,e,i,r){return w(t,e,i,r)}function b(t,e,i,r){return V(U(e),t,i,r)}function S(t,e,i,r){return V(function(t,e){for(var i,r,n,s=[],a=0;a<t.length&&!((e-=2)<0);++a)r=(i=t.charCodeAt(a))>>8,n=i%256,s.push(n),s.push(r);return s}(e,t.length-i),t,i,r)}function x(t,e,i){return 0===e&&i===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,i))}function T(t,e,i){i=Math.min(t.length,i);for(var r=[],n=e;n<i;){var s,a,o,l,c=t[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=t[n+1]))&&(l=(31&c)<<6|63&s)>127&&(h=l);break;case 3:s=t[n+1],a=t[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=t[n+1],a=t[n+2],o=t[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(t){var e=t.length;if(e<=P)return String.fromCharCode.apply(String,t);for(var i="",r=0;r<e;)i+=String.fromCharCode.apply(String,t.slice(r,r+=P));return i}(r)}i.kMaxLength=o,c.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),42===t.foo()}catch(t){return!1}}(),c.TYPED_ARRAY_SUPPORT||void 0===r||"function"!=typeof r.error||r.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(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&c[Symbol.species]===c&&Object.defineProperty(c,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),c.poolSize=8192,c.from=function(t,e,i){return h(t,e,i)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array),c.alloc=function(t,e,i){return function(t,e,i){return u(t),t<=0?l(t):void 0!==e?"string"==typeof i?l(t).fill(e,i):l(t).fill(e):l(t)}(t,e,i)},c.allocUnsafe=function(t){return d(t)},c.allocUnsafeSlow=function(t){return d(t)},c.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==c.prototype},c.compare=function(t,e){if(F(t,Uint8Array)&&(t=c.from(t,t.offset,t.byteLength)),F(e,Uint8Array)&&(e=c.from(e,e.offset,e.byteLength)),!c.isBuffer(t)||!c.isBuffer(e))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var i=t.length,r=e.length,n=0,s=Math.min(i,r);n<s;++n)if(t[n]!==e[n]){i=t[n],r=e[n];break}return i<r?-1:r<i?1:0},c.isEncoding=function(t){switch(String(t).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}},c.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return c.alloc(0);var i;if(void 0===e)for(e=0,i=0;i<t.length;++i)e+=t[i].length;var r=c.allocUnsafe(e),n=0;for(i=0;i<t.length;++i){var s=t[i];if(F(s,Uint8Array)&&(s=c.from(s)),!c.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(r,n),n+=s.length}return r},c.byteLength=A,c.prototype._isBuffer=!0,c.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)m(this,e,e+1);return this},c.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)m(this,e,e+3),m(this,e+1,e+2);return this},c.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)m(this,e,e+7),m(this,e+1,e+6),m(this,e+2,e+5),m(this,e+3,e+4);return this},c.prototype.toString=function(){var t=this.length;return 0===t?"":0===arguments.length?T(this,0,t):g.apply(this,arguments)},c.prototype.toLocaleString=c.prototype.toString,c.prototype.equals=function(t){if(!c.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===c.compare(this,t)},c.prototype.inspect=function(){var t="",e=i.INSPECT_MAX_BYTES;return t=this.toString("hex",0,e).replace(/(.{2})/g,"$1 ").trim(),this.length>e&&(t+=" ... "),"<Buffer "+t+">"},a&&(c.prototype[a]=c.prototype.inspect),c.prototype.compare=function(t,e,i,r,n){if(F(t,Uint8Array)&&(t=c.from(t,t.offset,t.byteLength)),!c.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===i&&(i=t?t.length:0),void 0===r&&(r=0),void 0===n&&(n=this.length),e<0||i>t.length||r<0||n>this.length)throw new RangeError("out of range index");if(r>=n&&e>=i)return 0;if(r>=n)return-1;if(e>=i)return 1;if(this===t)return 0;for(var s=(n>>>=0)-(r>>>=0),a=(i>>>=0)-(e>>>=0),o=Math.min(s,a),l=this.slice(r,n),h=t.slice(e,i),u=0;u<o;++u)if(l[u]!==h[u]){s=l[u],a=h[u];break}return s<a?-1:a<s?1:0},c.prototype.includes=function(t,e,i){return-1!==this.indexOf(t,e,i)},c.prototype.indexOf=function(t,e,i){return v(this,t,e,i,!0)},c.prototype.lastIndexOf=function(t,e,i){return v(this,t,e,i,!1)},c.prototype.write=function(t,e,i,r){if(void 0===e)r="utf8",i=this.length,e=0;else if(void 0===i&&"string"==typeof e)r=e,i=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e>>>=0,isFinite(i)?(i>>>=0,void 0===r&&(r="utf8")):(r=i,i=void 0)}var n=this.length-e;if((void 0===i||i>n)&&(i=n),t.length>0&&(i<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var s=!1;;)switch(r){case"hex":return _(this,t,e,i);case"utf8":case"utf-8":return C(this,t,e,i);case"ascii":return w(this,t,e,i);case"latin1":case"binary":return E(this,t,e,i);case"base64":return b(this,t,e,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,t,e,i);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var P=4096;function k(t,e,i){var r="";i=Math.min(t.length,i);for(var n=e;n<i;++n)r+=String.fromCharCode(127&t[n]);return r}function R(t,e,i){var r="";i=Math.min(t.length,i);for(var n=e;n<i;++n)r+=String.fromCharCode(t[n]);return r}function D(t,e,i){var r=t.length;(!e||e<0)&&(e=0),(!i||i<0||i>r)&&(i=r);for(var n="",s=e;s<i;++s)n+=j[t[s]];return n}function I(t,e,i){for(var r=t.slice(e,i),n="",s=0;s<r.length;s+=2)n+=String.fromCharCode(r[s]+256*r[s+1]);return n}function B(t,e,i){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>i)throw new RangeError("Trying to access beyond buffer length")}function N(t,e,i,r,n,s){if(!c.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||e<s)throw new RangeError('"value" argument is out of bounds');if(i+r>t.length)throw new RangeError("Index out of range")}function L(t,e,i,r,n,s){if(i+r>t.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function H(t,e,i,r,n){return e=+e,i>>>=0,n||L(t,0,i,4),s.write(t,e,i,r,23,4),i+4}function O(t,e,i,r,n){return e=+e,i>>>=0,n||L(t,0,i,8),s.write(t,e,i,r,52,8),i+8}c.prototype.slice=function(t,e){var i=this.length;(t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e<t&&(e=t);var r=this.subarray(t,e);return Object.setPrototypeOf(r,c.prototype),r},c.prototype.readUIntLE=function(t,e,i){t>>>=0,e>>>=0,i||B(t,e,this.length);for(var r=this[t],n=1,s=0;++s<e&&(n*=256);)r+=this[t+s]*n;return r},c.prototype.readUIntBE=function(t,e,i){t>>>=0,e>>>=0,i||B(t,e,this.length);for(var r=this[t+--e],n=1;e>0&&(n*=256);)r+=this[t+--e]*n;return r},c.prototype.readUInt8=function(t,e){return t>>>=0,e||B(t,1,this.length),this[t]},c.prototype.readUInt16LE=function(t,e){return t>>>=0,e||B(t,2,this.length),this[t]|this[t+1]<<8},c.prototype.readUInt16BE=function(t,e){return t>>>=0,e||B(t,2,this.length),this[t]<<8|this[t+1]},c.prototype.readUInt32LE=function(t,e){return t>>>=0,e||B(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},c.prototype.readUInt32BE=function(t,e){return t>>>=0,e||B(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},c.prototype.readIntLE=function(t,e,i){t>>>=0,e>>>=0,i||B(t,e,this.length);for(var r=this[t],n=1,s=0;++s<e&&(n*=256);)r+=this[t+s]*n;return r>=(n*=128)&&(r-=Math.pow(2,8*e)),r},c.prototype.readIntBE=function(t,e,i){t>>>=0,e>>>=0,i||B(t,e,this.length);for(var r=e,n=1,s=this[t+--r];r>0&&(n*=256);)s+=this[t+--r]*n;return s>=(n*=128)&&(s-=Math.pow(2,8*e)),s},c.prototype.readInt8=function(t,e){return t>>>=0,e||B(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},c.prototype.readInt16LE=function(t,e){t>>>=0,e||B(t,2,this.length);var i=this[t]|this[t+1]<<8;return 32768&i?4294901760|i:i},c.prototype.readInt16BE=function(t,e){t>>>=0,e||B(t,2,this.length);var i=this[t+1]|this[t]<<8;return 32768&i?4294901760|i:i},c.prototype.readInt32LE=function(t,e){return t>>>=0,e||B(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},c.prototype.readInt32BE=function(t,e){return t>>>=0,e||B(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},c.prototype.readFloatLE=function(t,e){return t>>>=0,e||B(t,4,this.length),s.read(this,t,!0,23,4)},c.prototype.readFloatBE=function(t,e){return t>>>=0,e||B(t,4,this.length),s.read(this,t,!1,23,4)},c.prototype.readDoubleLE=function(t,e){return t>>>=0,e||B(t,8,this.length),s.read(this,t,!0,52,8)},c.prototype.readDoubleBE=function(t,e){return t>>>=0,e||B(t,8,this.length),s.read(this,t,!1,52,8)},c.prototype.writeUIntLE=function(t,e,i,r){t=+t,e>>>=0,i>>>=0,r||N(this,t,e,i,Math.pow(2,8*i)-1,0);var n=1,s=0;for(this[e]=255&t;++s<i&&(n*=256);)this[e+s]=t/n&255;return e+i},c.prototype.writeUIntBE=function(t,e,i,r){t=+t,e>>>=0,i>>>=0,r||N(this,t,e,i,Math.pow(2,8*i)-1,0);var n=i-1,s=1;for(this[e+n]=255&t;--n>=0&&(s*=256);)this[e+n]=t/s&255;return e+i},c.prototype.writeUInt8=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,1,255,0),this[e]=255&t,e+1},c.prototype.writeUInt16LE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},c.prototype.writeUInt16BE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},c.prototype.writeUInt32LE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},c.prototype.writeUInt32BE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},c.prototype.writeIntLE=function(t,e,i,r){if(t=+t,e>>>=0,!r){var n=Math.pow(2,8*i-1);N(this,t,e,i,n-1,-n)}var s=0,a=1,o=0;for(this[e]=255&t;++s<i&&(a*=256);)t<0&&0===o&&0!==this[e+s-1]&&(o=1),this[e+s]=(t/a>>0)-o&255;return e+i},c.prototype.writeIntBE=function(t,e,i,r){if(t=+t,e>>>=0,!r){var n=Math.pow(2,8*i-1);N(this,t,e,i,n-1,-n)}var s=i-1,a=1,o=0;for(this[e+s]=255&t;--s>=0&&(a*=256);)t<0&&0===o&&0!==this[e+s+1]&&(o=1),this[e+s]=(t/a>>0)-o&255;return e+i},c.prototype.writeInt8=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},c.prototype.writeInt16LE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},c.prototype.writeInt16BE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},c.prototype.writeInt32LE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},c.prototype.writeInt32BE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},c.prototype.writeFloatLE=function(t,e,i){return H(this,t,e,!0,i)},c.prototype.writeFloatBE=function(t,e,i){return H(this,t,e,!1,i)},c.prototype.writeDoubleLE=function(t,e,i){return O(this,t,e,!0,i)},c.prototype.writeDoubleBE=function(t,e,i){return O(this,t,e,!1,i)},c.prototype.copy=function(t,e,i,r){if(!c.isBuffer(t))throw new TypeError("argument should be a Buffer");if(i||(i=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<i&&(r=i),r===i)return 0;if(0===t.length||0===this.length)return 0;if(e<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),t.length-e<r-i&&(r=t.length-e+i);var n=r-i;if(this===t&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(e,i,r);else if(this===t&&i<e&&e<r)for(var s=n-1;s>=0;--s)t[s+e]=this[s+i];else Uint8Array.prototype.set.call(t,this.subarray(i,r),e);return n},c.prototype.fill=function(t,e,i,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=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&&!c.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===t.length){var n=t.charCodeAt(0);("utf8"===r&&n<128||"latin1"===r)&&(t=n)}}else"number"==typeof t?t&=255:"boolean"==typeof t&&(t=Number(t));if(e<0||this.length<e||this.length<i)throw new RangeError("Out of range index");if(i<=e)return this;var s;if(e>>>=0,i=void 0===i?this.length:i>>>0,t||(t=0),"number"==typeof t)for(s=e;s<i;++s)this[s]=t;else{var a=c.isBuffer(t)?t:c.from(t,r),o=a.length;if(0===o)throw new TypeError('The value "'+t+'" is invalid for argument "value"');for(s=0;s<i-e;++s)this[s+e]=a[s%o]}return this};var M=/[^+/0-9A-Za-z-_]/g;function Y(t,e){var i;e=e||1/0;for(var r=t.length,n=null,s=[],a=0;a<r;++a){if((i=t.charCodeAt(a))>55295&&i<57344){if(!n){if(i>56319){(e-=3)>-1&&s.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&s.push(239,191,189);continue}n=i;continue}if(i<56320){(e-=3)>-1&&s.push(239,191,189),n=i;continue}i=65536+(n-55296<<10|i-56320)}else n&&(e-=3)>-1&&s.push(239,191,189);if(n=null,i<128){if((e-=1)<0)break;s.push(i)}else if(i<2048){if((e-=2)<0)break;s.push(i>>6|192,63&i|128)}else if(i<65536){if((e-=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((e-=4)<0)break;s.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return s}function U(t){return n.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function V(t,e,i,r){for(var n=0;n<r&&!(n+i>=e.length||n>=t.length);++n)e[n+i]=t[n];return n}function F(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function z(t){return t!=t}var j=function(){for(var t="0123456789abcdef",e=new Array(256),i=0;i<16;++i)for(var r=16*i,n=0;n<16;++n)e[r+n]=t[i]+t[n];return e}()},{"base64-js":29,ieee754:32}],31:[function(t,e,i){var r={single_source_shortest_paths:function(t,e,i){var n={},s={};s[e]=0;var a,o,l,c,h,u,d,p=r.PriorityQueue.make();for(p.push(e,0);!p.empty();)for(l in o=(a=p.pop()).value,c=a.cost,h=t[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 ",e," to ",i,"."].join("");throw new Error(f)}return n},extract_shortest_path_from_predecessor_list:function(t,e){for(var i=[],r=e;r;)i.push(r),t[r],r=t[r];return i.reverse(),i},find_path:function(t,e,i){var n=r.single_source_shortest_paths(t,e,i);return r.extract_shortest_path_from_predecessor_list(n,i)},PriorityQueue:{make:function(t){var e,i=r.PriorityQueue,n={};for(e in t=t||{},i)i.hasOwnProperty(e)&&(n[e]=i[e]);return n.queue=[],n.sorter=t.sorter||i.default_sorter,n},default_sorter:function(t,e){return t.cost-e.cost},push:function(t,e){var i={value:t,cost:e};this.queue.push(i),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};void 0!==e&&(e.exports=r)},{}],32:[function(t,e,i){i.read=function(t,e,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=t[e+u];for(u+=d,s=p&(1<<-h)-1,p>>=-h,h+=o;h>0;s=256*s+t[e+u],u+=d,h-=8);for(a=s&(1<<-h)-1,s>>=-h,h+=r;h>0;a=256*a+t[e+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(t,e,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,A=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=h):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=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=(e*l-1)*Math.pow(2,n),a+=u):(o=e*Math.pow(2,u-1)*Math.pow(2,n),a=0));n>=8;t[i+p]=255&o,p+=f,o/=256,n-=8);for(a=a<<n|o,c+=n;c>0;t[i+p]=255&a,p+=f,a/=256,c-=8);t[i+p-f]|=128*A}},{}],33:[function(t,e,i){var r={}.toString;e.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},{}]},{},[24])(24)},e.exports=n()}));return{name:"qrcode",props:{value:null,options:Object,tag:{type:String,default:"canvas"}},render:function(t){return t(this.tag,this.$slots.default)},watch:{$props:{deep:!0,immediate:!0,handler:function(){this.$el&&this.generate()}}},methods:{generate:function(){var t=this,i=this.options,r=this.tag,n=String(this.value);"canvas"===r?e.toCanvas(this.$el,n,i,(function(t){if(t)throw t})):"img"===r?e.toDataURL(n,i,(function(e,i){if(e)throw e;t.$el.src=i})):e.toString(n,i,(function(e,i){if(e)throw e;t.$el.innerHTML=i}))}},mounted:function(){this.generate()}}}()},86243:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".fade-enter-active[data-v-8e58e0a5],\n.fade-leave-active[data-v-8e58e0a5] {\n transition: opacity .3s ease;\n}\n.fade-enter[data-v-8e58e0a5],\n.fade-leave-to[data-v-8e58e0a5] {\n opacity: 0;\n}\n.linked-icons[data-v-8e58e0a5] {\n display: flex;\n}\n.linked-icons img[data-v-8e58e0a5] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: .7;\n}\n.linked-icons img[data-v-8e58e0a5]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-8e58e0a5] {\n display: none;\n}\n.popovermenu.open[data-v-8e58e0a5] {\n display: block;\n}\nli.collection-list-item[data-v-8e58e0a5] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-8e58e0a5] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-8e58e0a5],\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-8e58e0a5] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-8e58e0a5] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-8e58e0a5],\nli.collection-list-item .resource-list-details[data-v-8e58e0a5] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-8e58e0a5] {\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-8e58e0a5]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5] {\n opacity: .7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:hover,\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-8e58e0a5] {\n animation: shake-8e58e0a5 .6s 1 linear;\n}\n@keyframes shake-8e58e0a5 {\n 0% {\n transform: translate(15px);\n }\n 20% {\n transform: translate(-15px);\n }\n 40% {\n transform: translate(7px);\n }\n 60% {\n transform: translate(-7px);\n }\n 80% {\n transform: translate(3px);\n }\n to {\n transform: translate(0);\n }\n}\n.collection-list *[data-v-75a4370b] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-75a4370b] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-75a4370b] {\n margin-top: auto;\n}\n#collection-select-container[data-v-75a4370b] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-75a4370b] {\n display: block;\n padding: 16px;\n opacity: .7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-75a4370b]:hover {\n opacity: 1;\n}\np.hint[data-v-75a4370b] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-75a4370b] {\n width: 32px;\n height: 32px;\n margin: 30px 0 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n}\n.icon-projects[data-v-75a4370b] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-75a4370b] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-75a4370b] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-75a4370b] {\n padding: 4px;\n}\n.fade-enter-active[data-v-75a4370b],\n.fade-leave-active[data-v-75a4370b] {\n transition: opacity .5s;\n}\n.fade-enter[data-v-75a4370b],\n.fade-leave-to[data-v-75a4370b] {\n opacity: 0;\n}\n","",{version:3,sources:["webpack://./node_modules/nextcloud-vue-collections/dist/assets/index-Au1Gr_G6.css"],names:[],mappings:"AAAA;;EAEE,4BAA4B;AAC9B;AACA;;EAEE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,aAAa;EACb,YAAY;EACZ,cAAc;EACd,4BAA4B;EAC5B,2BAA2B;EAC3B,WAAW;AACb;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;;EAEE,eAAe;EACf,YAAY;EACZ,aAAa;AACf;AACA;EACE,iBAAiB;AACnB;AACA;EACE,eAAe;EACf,6CAA6C;AAC/C;AACA;EACE,YAAY;AACd;AACA;;EAEE,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,WAAW;AACb;AACA;;EAEE,UAAU;AACZ;AACA;EACE,sCAAsC;AACxC;AACA;EACE;IACE,0BAA0B;EAC5B;EACA;IACE,2BAA2B;EAC7B;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,0BAA0B;EAC5B;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,uBAAuB;EACzB;AACF;AACA;EACE,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,WAAW;EACX,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,UAAU;AACZ;AACA;EACE,UAAU;EACV,iBAAiB;EACjB,YAAY;EACZ,oCAAoC;EACpC,mBAAmB;AACrB;AACA;EACE,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,YAAY;EACZ,8CAA8C;AAChD;AACA;EACE,cAAc;EACd,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,2DAA2D;AAC7D;AACA;EACE,YAAY;AACd;AACA;;EAEE,uBAAuB;AACzB;AACA;;EAEE,UAAU;AACZ",sourcesContent:[".fade-enter-active[data-v-8e58e0a5],\n.fade-leave-active[data-v-8e58e0a5] {\n transition: opacity .3s ease;\n}\n.fade-enter[data-v-8e58e0a5],\n.fade-leave-to[data-v-8e58e0a5] {\n opacity: 0;\n}\n.linked-icons[data-v-8e58e0a5] {\n display: flex;\n}\n.linked-icons img[data-v-8e58e0a5] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: .7;\n}\n.linked-icons img[data-v-8e58e0a5]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-8e58e0a5] {\n display: none;\n}\n.popovermenu.open[data-v-8e58e0a5] {\n display: block;\n}\nli.collection-list-item[data-v-8e58e0a5] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-8e58e0a5] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-8e58e0a5],\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-8e58e0a5] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-8e58e0a5] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-8e58e0a5],\nli.collection-list-item .resource-list-details[data-v-8e58e0a5] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-8e58e0a5] {\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-8e58e0a5]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5] {\n opacity: .7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:hover,\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-8e58e0a5] {\n animation: shake-8e58e0a5 .6s 1 linear;\n}\n@keyframes shake-8e58e0a5 {\n 0% {\n transform: translate(15px);\n }\n 20% {\n transform: translate(-15px);\n }\n 40% {\n transform: translate(7px);\n }\n 60% {\n transform: translate(-7px);\n }\n 80% {\n transform: translate(3px);\n }\n to {\n transform: translate(0);\n }\n}\n.collection-list *[data-v-75a4370b] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-75a4370b] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-75a4370b] {\n margin-top: auto;\n}\n#collection-select-container[data-v-75a4370b] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-75a4370b] {\n display: block;\n padding: 16px;\n opacity: .7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-75a4370b]:hover {\n opacity: 1;\n}\np.hint[data-v-75a4370b] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-75a4370b] {\n width: 32px;\n height: 32px;\n margin: 30px 0 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n}\n.icon-projects[data-v-75a4370b] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-75a4370b] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-75a4370b] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-75a4370b] {\n padding: 4px;\n}\n.fade-enter-active[data-v-75a4370b],\n.fade-leave-active[data-v-75a4370b] {\n transition: opacity .5s;\n}\n.fade-enter[data-v-75a4370b],\n.fade-leave-to[data-v-75a4370b] {\n opacity: 0;\n}\n"],sourceRoot:""}]);const o=a},42572:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry[data-v-79edc2ff]{display:flex;align-items:center;height:44px}.sharing-entry__summary[data-v-79edc2ff]{padding:8px;padding-left: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-79edc2ff]{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-79edc2ff],.sharing-entry__summary__desc small[data-v-79edc2ff]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-79edc2ff]{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,iBAAA,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",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__summary {\n\t\tpadding: 8px;\n\t\tpadding-left: 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"],sourceRoot:""}]);const o=a},41699:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry[data-v-283ca89e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-283ca89e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;padding-left:10px;line-height:1.2em}.sharing-entry__desc p[data-v-283ca89e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-283ca89e]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tpadding-left: 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-left: auto;\n\t}\n}\n"],sourceRoot:""}]);const o=a},16469:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry__internal .avatar-external[data-v-e40cd936]{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-e40cd936]{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",sourcesContent:["\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t\tcolor: var(--color-success);\n\t}\n}\n"],sourceRoot:""}]);const o=a},54228:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry[data-v-4ec6c807]{display:flex;align-items:center;min-height:44px}.sharing-entry__summary[data-v-4ec6c807]{padding:8px;padding-left:10px;display:flex;justify-content:space-between;flex:1 0;min-width:0}.sharing-entry__desc[data-v-4ec6c807]{display:flex;flex-direction:column;line-height:1.2em}.sharing-entry__desc p[data-v-4ec6c807]{color:var(--color-text-maxcontrast)}.sharing-entry__desc__title[data-v-4ec6c807]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-4ec6c807]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-4ec6c807] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-4ec6c807]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-4ec6c807]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item~.action-item[data-v-4ec6c807],.sharing-entry .action-item~.sharing-entry__loading[data-v-4ec6c807]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-4ec6c807]{opacity:1;color:var(--color-success)}.qr-code-dialog[data-v-4ec6c807]{display:flex;width:100%;justify-content:center}.qr-code-dialog__img[data-v-4ec6c807]{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,iBAAA,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,CAKF,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAOA,+HAEC,aAAA,CAIF,sDACC,SAAA,CACA,0BAAA,CAKF,iCACC,YAAA,CACA,UAAA,CACA,sBAAA,CAEA,sCACC,UAAA,CACA,WAAA",sourcesContent:["\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-left: 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&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary-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-left: 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-left: 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"],sourceRoot:""}]);const o=a},45340:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".share-select[data-v-6e5dd9f1]{display:block}.share-select[data-v-6e5dd9f1] .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-6e5dd9f1] .action-item__menutoggle .button-vue__text{font-weight:normal !important}.share-select[data-v-6e5dd9f1] .action-item__menutoggle .button-vue__icon{height:24px !important;min-height:24px !important;width:24px !important;min-width:24px !important}.share-select[data-v-6e5dd9f1] .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",sourcesContent:["\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"],sourceRoot:""}]);const o=a},17557:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry[data-v-1852ea78]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1852ea78]{padding:8px;padding-left:10px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-1852ea78]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-1852ea78]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-1852ea78]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tpadding-left: 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-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]);const o=a},82162:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.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",sourcesContent:['\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for="sharing-search-input"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t.avatardiv__initials-wrapper {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const o=a},28067:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharingTabDetailsView[data-v-6ee48c7b]{display:flex;flex-direction:column;width:100%;margin:0 auto;position:relative;height:100%;overflow:hidden}.sharingTabDetailsView__header[data-v-6ee48c7b]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-6ee48c7b]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-6ee48c7b]{font-size:15px;padding-left:.3em}.sharingTabDetailsView__wrapper[data-v-6ee48c7b]{position:relative;overflow:scroll;flex-shrink:1;padding:4px;padding-right:12px}.sharingTabDetailsView__quick-permissions[data-v-6ee48c7b]{display:flex;justify-content:center;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-6ee48c7b]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-6ee48c7b]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-6ee48c7b]:nth-child(1){align-items:center;justify-content:center;padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-6ee48c7b] label span{display:flex;flex-direction:column}.sharingTabDetailsView__quick-permissions div span[data-v-6ee48c7b] span.checkbox-content__text.checkbox-radio-switch__text{flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-6ee48c7b] span.checkbox-content__text.checkbox-radio-switch__text .subline{display:block;flex-basis:100%}.sharingTabDetailsView__advanced-control[data-v-6ee48c7b]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-6ee48c7b]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-6ee48c7b]{width:100%;margin-bottom:.5em;text-align:left;padding-left:0}.sharingTabDetailsView__advanced section textarea[data-v-6ee48c7b],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-6ee48c7b]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-6ee48c7b]{height:80px;margin:0}.sharingTabDetailsView__advanced section span[data-v-6ee48c7b] label{padding-left:0 !important;background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-6ee48c7b]{padding-left:1.5em}.sharingTabDetailsView__delete>button[data-v-6ee48c7b]:first-child{color:#df0707}.sharingTabDetailsView__footer[data-v-6ee48c7b]{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-6ee48c7b]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-6ee48c7b]{margin-left:16px}.sharingTabDetailsView__footer .button-group button[data-v-6ee48c7b]:first-child{margin-left: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,iBAAA,CAMH,iDACC,iBAAA,CACA,eAAA,CACA,aAAA,CACA,WAAA,CACA,kBAAA,CAGD,2DACC,YAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,YAAA,CAKA,+EACC,YAAA,CACA,qBAAA,CAKF,4HACC,cAAA,CAEA,qIACC,aAAA,CACA,eAAA,CAQL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,eAAA,CACA,cAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CACA,QAAA,CAaA,qEACC,yBAAA,CACA,mCAAA,CACA,sBAAA,CAIF,2FACC,kBAAA,CAMF,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,gBAAA,CAEA,iFACC,aAAA",sourcesContent:["\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-left: 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-right: 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::v-deep label {\n\n\t\t\t\t\tspan {\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t}\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: left;\n\t\tpadding-left: 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 The following style is applied out of the component's scope\n to remove padding from the label.checkbox-radio-switch__label,\n which is used to group radio checkbox items. The use of ::v-deep\n ensures that the padding is modified without being affected by\n the component's scoping.\n Without this achieving left alignment for the checkboxes would not\n be possible.\n */\n\t\t\tspan {\n\t\t\t\t::v-deep label {\n\t\t\t\t\tpadding-left: 0 !important;\n\t\t\t\t\tbackground-color: initial !important;\n\t\t\t\t\tborder: none !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsection.custom-permissions-group {\n\t\t\t\tpadding-left: 1.5em;\n\t\t\t}\n\t\t}\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-left: 16px;\n\n\t\t\t\t&:first-child {\n\t\t\t\t\tmargin-left: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=a},4442:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry__inherited .avatar-shared[data-v-50f9af8c]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]);const o=a},3316:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".emptyContentWithSections[data-v-a65c443a]{margin:1rem auto}.sharingTab[data-v-a65c443a]{position:relative;height:100%}.sharingTab__content[data-v-a65c443a]{padding:0 6px}.sharingTab__additionalContent[data-v-a65c443a]{margin:44px 0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AACA,2CACC,gBAAA,CAGD,6BACC,iBAAA,CACA,WAAA,CAEA,sCACC,aAAA,CAGD,gDACC,aAAA",sourcesContent:["\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\t}\n\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n"],sourceRoot:""}]);const o=a},37023:(t,e,i)=>{"use strict";e.KT=void 0,i(25440),e.KT=(t,e,i)=>{const s=1===Object.assign({ocsVersion:2},i||{}).ocsVersion?1:2;return window.location.protocol+"//"+window.location.host+n()+"/ocs/v"+s+".php"+r(t,e,i)};const r=(t,e,i)=>{const r=Object.assign({escape:!0},i||{});return"/"!==t.charAt(0)&&(t="/"+t),n=(n=e||{})||{},t.replace(/{([^{}]*)}/g,(function(t,e){var i=n[e];return r.escape?"string"==typeof i||"number"==typeof i?encodeURIComponent(i.toString()):encodeURIComponent(t):"string"==typeof i||"number"==typeof i?i.toString():t}));var n};function n(){let t=window._oc_webroot;if(void 0===t){t=location.pathname;const e=t.indexOf("/index.php/");t=-1!==e?t.substr(0,e):t.substr(0,t.lastIndexOf("/"))}return t}},48318:function(t,e,i){!function(t){"use strict";var e,i=function(){try{if(t.URLSearchParams&&"bar"===new t.URLSearchParams("foo=bar").get("foo"))return t.URLSearchParams}catch(t){}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||((e=new i).append("s"," &"),"s=+%26"===e.toString()),l=p.prototype,c=!(!t.Symbol||!t.Symbol.iterator);if(!(i&&r&&n&&o&&s)){l.append=function(t,e){v(this[a],t,e)},l.delete=function(t){delete this[a][t]},l.get=function(t){var e=this[a];return this.has(t)?e[t][0]:null},l.getAll=function(t){var e=this[a];return this.has(t)?e[t].slice(0):[]},l.has=function(t){return _(this[a],t)},l.set=function(t,e){this[a][t]=[""+e]},l.toString=function(){var t,e,i,r,n=this[a],s=[];for(e in n)for(i=f(e),t=0,r=n[e];t<r.length;t++)s.push(i+"="+f(r[t]));return s.join("&")};var h,u=t.Proxy&&i&&(!n||!o||!r||!s);u?(h=new Proxy(i,{construct:function(t,e){return new t(new p(e[0]).toString())}})).toString=Function.prototype.toString.bind(p):h=p,Object.defineProperty(t,"URLSearchParams",{value:h});var d=t.URLSearchParams.prototype;d.polyfill=!0,!u&&t.Symbol&&(d[t.Symbol.toStringTag]="URLSearchParams"),"forEach"in d||(d.forEach=function(t,e){var i=m(this.toString());Object.getOwnPropertyNames(i).forEach((function(r){i[r].forEach((function(i){t.call(e,i,r,this)}),this)}),this)}),"sort"in d||(d.sort=function(){var t,e,i,r=m(this.toString()),n=[];for(t in r)n.push(t);for(n.sort(),e=0;e<n.length;e++)this.delete(n[e]);for(e=0;e<n.length;e++){var s=n[e],a=r[s];for(i=0;i<a.length;i++)this.append(s,a[i])}}),"keys"in d||(d.keys=function(){var t=[];return this.forEach((function(e,i){t.push(i)})),g(t)}),"values"in d||(d.values=function(){var t=[];return this.forEach((function(e){t.push(e)})),g(t)}),"entries"in d||(d.entries=function(){var t=[];return this.forEach((function(e,i){t.push([i,e])})),g(t)}),c&&(d[t.Symbol.iterator]=d[t.Symbol.iterator]||d.entries),"size"in d||Object.defineProperty(d,"size",{get:function(){var t=m(this.toString());if(d===this)throw new TypeError("Illegal invocation at URLSearchParams.invokeGetter");return Object.keys(t).reduce((function(e,i){return e+t[i].length}),0)}})}function p(t){((t=t||"")instanceof URLSearchParams||t instanceof p)&&(t=t.toString()),this[a]=m(t)}function f(t){var e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'\(\)~]|%20|%00/g,(function(t){return e[t]}))}function A(t){return t.replace(/[ +]/g,"%20").replace(/(%[a-f0-9]{2})+/gi,(function(t){return decodeURIComponent(t)}))}function g(e){var i={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return c&&(i[t.Symbol.iterator]=function(){return i}),i}function m(t){var e={};if("object"==typeof t)if(y(t))for(var i=0;i<t.length;i++){var r=t[i];if(!y(r)||2!==r.length)throw new TypeError("Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements");v(e,r[0],r[1])}else for(var n in t)t.hasOwnProperty(n)&&v(e,n,t[n]);else{0===t.indexOf("?")&&(t=t.slice(1));for(var s=t.split("&"),a=0;a<s.length;a++){var o=s[a],l=o.indexOf("=");-1<l?v(e,A(o.slice(0,l)),A(o.slice(l+1))):o&&v(e,A(o),"")}}return e}function v(t,e,i){var r="string"==typeof i?i:null!=i&&"function"==typeof i.toString?i.toString():JSON.stringify(i);_(t,e)?t[e].push(r):t[e]=[r]}function y(t){return!!t&&"[object Array]"===Object.prototype.toString.call(t)}function _(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(void 0!==i.g?i.g:"undefined"!=typeof window?window:this)},22555:(e,i,r)=>{"use strict";r.r(i),r.d(i,{default:()=>Ii});var n=r(85072),s=r.n(n),a=r(97825),o=r.n(a),l=r(77659),c=r.n(l),h=r(55056),u=r.n(h),d=r(10540),p=r.n(d),f=r(41113),A=r.n(f),g=r(86243),m={};m.styleTagTransform=A(),m.setAttributes=u(),m.insert=c().bind(null,"head"),m.domAPI=o(),m.insertStyleElement=p(),s()(g.A,m),g.A&&g.A.locals&&g.A.locals;var v=r(41944),y=r(67607);const _=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)},C="object"==typeof global&&global&&global.Object===Object&&global;var w="object"==typeof self&&self&&self.Object===Object&&self;const E=C||w||Function("return this")(),b=function(){return E.Date.now()};var S=/\s/;var x=/^\s+/;const T=function(t){return t?t.slice(0,function(t){for(var e=t.length;e--&&S.test(t.charAt(e)););return e}(t)+1).replace(x,""):t},P=E.Symbol;var k=Object.prototype,R=k.hasOwnProperty,D=k.toString,I=P?P.toStringTag:void 0;var B=Object.prototype.toString;var N=P?P.toStringTag:void 0;const L=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":N&&N in Object(t)?function(t){var e=R.call(t,I),i=t[I];try{t[I]=void 0;var r=!0}catch(t){}var n=D.call(t);return r&&(e?t[I]=i:delete t[I]),n}(t):function(t){return B.call(t)}(t)};var H=/^[-+]0x[0-9a-f]+$/i,O=/^0b[01]+$/i,M=/^0o[0-7]+$/i,Y=parseInt;const U=function(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return null!=t&&"object"==typeof t}(t)&&"[object Symbol]"==L(t)}(t))return NaN;if(_(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=_(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=T(t);var i=O.test(t);return i||M.test(t)?Y(t.slice(2),i?2:8):H.test(t)?NaN:+t};var V=Math.max,F=Math.min;var z=r(24764),j=r(89257),q=r(85471),W=r(65043),$=r(37023),K=r(96763);const G=new class{constructor(){this.http=W.Ay}listCollection(t){return this.http.get((0,$.KT)("collaboration/resources/collections/{collectionId}",{collectionId:t}))}renameCollection(t,e){return this.http.put((0,$.KT)("collaboration/resources/collections/{collectionId}",{collectionId:t}),{collectionName:e}).then((t=>t.data.ocs.data))}getCollectionsByResource(t,e){return this.http.get((0,$.KT)("collaboration/resources/{resourceType}/{resourceId}",{resourceType:t,resourceId:e})).then((t=>t.data.ocs.data))}createCollection(t,e,i){return this.http.post((0,$.KT)("collaboration/resources/{resourceType}/{resourceId}",{resourceType:t,resourceId:e}),{name:i}).then((t=>t.data.ocs.data))}addResource(t,e,i){return i=""+i,this.http.post((0,$.KT)("collaboration/resources/collections/{collectionId}",{collectionId:t}),{resourceType:e,resourceId:i}).then((t=>t.data.ocs.data))}removeResource(t,e,i){return this.http.delete((0,$.KT)("collaboration/resources/collections/{collectionId}",{collectionId:t}),{params:{resourceType:e,resourceId:i}}).then((t=>t.data.ocs.data))}search(t){return this.http.get((0,$.KT)("collaboration/resources/collections/search/{query}",{query:t})).then((t=>t.data.ocs.data))}},Z=q.Ay.observable({collections:[]}),Q={addCollections(t){(0,q.hZ)(Z,"collections",t)},addCollection(t){Z.collections.push(t)},removeCollection(t){(0,q.hZ)(Z,"collections",Z.collections.filter((e=>e.id!==t)))},updateCollection(t){const e=Z.collections.findIndex((e=>e.id===t.id));-1!==e?(0,q.hZ)(Z.collections,e,t):Z.collections.push(t)}},J={fetchCollectionsByResource:({resourceType:t,resourceId:e})=>G.getCollectionsByResource(t,e).then((t=>(Q.addCollections(t),t))),createCollection:({baseResourceType:t,baseResourceId:e,resourceType:i,resourceId:r,name:n})=>G.createCollection(t,e,n).then((t=>{Q.addCollection(t),J.addResourceToCollection({collectionId:t.id,resourceType:i,resourceId:r})})),renameCollection:({collectionId:t,name:e})=>G.renameCollection(t,e).then((t=>(Q.updateCollection(t),t))),addResourceToCollection:({collectionId:t,resourceType:e,resourceId:i})=>G.addResource(t,e,i).then((t=>(Q.updateCollection(t),t))),removeResource:({collectionId:t,resourceType:e,resourceId:i})=>G.removeResource(t,e,i).then((t=>{t.resources.length>0?Q.updateCollection(t):Q.removeCollection(t)})),search:t=>G.search(t)};function X(t,e,i,r,n,s,a,o){var l,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=i,c._compiled=!0),r&&(c.functional=!0),s&&(c._scopeId="data-v-"+s),a?(l=function(t){!(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)&&typeof __VUE_SSR_CONTEXT__<"u"&&(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._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(t,e){return l.call(e),h(t,e)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:t,options:c}}const tt=X({name:"CollectionListItem",components:{NcAvatar:v.A,NcActions:z.A,NcActionButton:j.A},props:{collection:{type:Object,default:null}},data:()=>({detailsOpen:!1,newName:null,error:{}}),computed:{getIcon:()=>t=>[t.iconClass],typeClass:()=>t=>"resource-type-"+t.type,limitedResources:()=>t=>t.resources?t.resources.slice(0,2):[],iconUrl:()=>t=>t.mimetype?OC.MimeType.getIconUrl(t.mimetype):t.iconUrl?t.iconUrl:""},methods:{toggleDetails(){this.detailsOpen=!this.detailsOpen},showDetails(){this.detailsOpen=!0},hideDetails(){this.detailsOpen=!1},removeResource(t,e){J.removeResource({collectionId:t.id,resourceType:e.type,resourceId:e.id})},openRename(){this.newName=this.collection.name},renameCollection(){""!==this.newName?J.renameCollection({collectionId:this.collection.id,name:this.newName}).then((t=>{this.newName=null})).catch((e=>{this.$set(this.error,"rename",t("core","Failed to rename the project")),K.error(e),setTimeout((()=>{(0,q.hZ)(this.error,"rename",null)}),3e3)})):this.newName=null}}},(function(){var t=this,e=t._self._c;return e("li",{staticClass:"collection-list-item"},[e("NcAvatar",{staticClass:"collection-avatar",attrs:{"display-name":t.collection.name,"allow-placeholder":""}}),null===t.newName?e("span",{staticClass:"collection-item-name",attrs:{title:""},on:{click:t.showDetails}},[t._v(t._s(t.collection.name))]):e("form",{class:{shouldshake:t.error.rename},on:{submit:function(e){return e.preventDefault(),t.renameCollection.apply(null,arguments)}}},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.newName,expression:"newName"}],attrs:{type:"text",autocomplete:"off",autocapitalize:"off"},domProps:{value:t.newName},on:{input:function(e){e.target.composing||(t.newName=e.target.value)}}}),e("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]),t.detailsOpen||null!==t.newName?t._e():e("div",{staticClass:"linked-icons"},t._l(t.limitedResources(t.collection),(function(i){return e("a",{key:i.type+"|"+i.id,class:t.typeClass(i),attrs:{title:i.name,href:i.link}},[e("img",{attrs:{src:t.iconUrl(i)}})])})),0),null===t.newName?e("span",{staticClass:"sharingOptionsGroup"},[e("NcActions",[e("NcActionButton",{attrs:{icon:"icon-info"},on:{click:function(e){return e.preventDefault(),t.toggleDetails.apply(null,arguments)}}},[t._v(" "+t._s(t.detailsOpen?t.t("core","Hide details"):t.t("core","Show details"))+" ")]),e("NcActionButton",{attrs:{icon:"icon-rename"},on:{click:function(e){return e.preventDefault(),t.openRename.apply(null,arguments)}}},[t._v(" "+t._s(t.t("core","Rename project"))+" ")])],1)],1):t._e(),e("transition",{attrs:{name:"fade"}},[t.error.rename?e("div",{staticClass:"error"},[t._v(" "+t._s(t.error.rename)+" ")]):t._e()]),e("transition",{attrs:{name:"fade"}},[t.detailsOpen?e("ul",{staticClass:"resource-list-details"},t._l(t.collection.resources,(function(i){return e("li",{key:i.type+"|"+i.id,class:t.typeClass(i)},[e("a",{attrs:{href:i.link}},[e("img",{attrs:{src:t.iconUrl(i)}}),e("span",{staticClass:"resource-name"},[t._v(t._s(i.name||""))])]),e("span",{staticClass:"icon-close",on:{click:function(e){return t.removeResource(t.collection,i)}}})])})),0):t._e()])],1)}),[],!1,null,"8e58e0a5",null,null).exports,et=function(t,e,i){var r,n,s,a,o,l,c=0,h=!1,u=!1,d=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function p(e){var i=r,s=n;return r=n=void 0,c=e,a=t.apply(s,i)}function f(t){var i=t-l;return void 0===l||i>=e||i<0||u&&t-c>=s}function A(){var t=b();if(f(t))return g(t);o=setTimeout(A,function(t){var i=e-(t-l);return u?F(i,s-(t-c)):i}(t))}function g(t){return o=void 0,d&&r?p(t):(r=n=void 0,a)}function m(){var t=b(),i=f(t);if(r=arguments,n=this,l=t,i){if(void 0===o)return function(t){return c=t,o=setTimeout(A,e),h?p(t):a}(l);if(u)return clearTimeout(o),o=setTimeout(A,e),p(l)}return void 0===o&&(o=setTimeout(A,e)),a}return e=U(e)||0,_(i)&&(h=!!i.leading,s=(u="maxWait"in i)?V(U(i.maxWait)||0,e):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:g(b())},m}((function(t,e){""!==t&&(e(!0),J.search(t).then((t=>{this.searchCollections=t})).catch((t=>{K.error("Failed to search for collections",t)})).finally((()=>{e(!1)})))}),500,{}),it=X({name:"CollectionList",components:{CollectionListItem:tt,NcAvatar:v.A,NcSelect:y.A},props:{type:{type:String,default:null},id:{type:String,default:null},name:{type:String,default:""},isActive:{type:Boolean,default:!0}},data:()=>({selectIsOpen:!1,generatingCodes:!1,codes:void 0,value:null,model:{},searchCollections:[],error:null,state:Z,isSelectOpen:!1}),computed:{collections(){return this.state.collections.filter((t=>typeof t.resources.find((t=>t&&t.id===""+this.id&&t.type===this.type))<"u"))},placeholder(){return this.isSelectOpen?t("core","Type to search for existing projects"):t("core","Add to a project")},options(){const t=[];window.OCP.Collaboration.getTypes().sort().forEach((e=>{t.push({method:0,type:e,title:window.OCP.Collaboration.getLabel(e),class:window.OCP.Collaboration.getIcon(e),action:()=>window.OCP.Collaboration.trigger(e)})}));for(const e in this.searchCollections)-1===this.collections.findIndex((t=>t.id===this.searchCollections[e].id))&&t.push({method:1,title:this.searchCollections[e].name,collectionId:this.searchCollections[e].id});return t}},watch:{type(){this.isActive&&J.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},id(){this.isActive&&J.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},isActive(t){t&&J.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})}},mounted(){J.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},methods:{select(e,i){0===e.method&&e.action().then((i=>{J.createCollection({baseResourceType:this.type,baseResourceId:this.id,resourceType:e.type,resourceId:i,name:this.name}).catch((e=>{this.setError(t("core","Failed to create a project"),e)}))})).catch((t=>{K.error("No resource selected",t)})),1===e.method&&J.addResourceToCollection({collectionId:e.collectionId,resourceType:this.type,resourceId:this.id}).catch((e=>{this.setError(t("core","Failed to add the item to the project"),e)}))},search(t,e){et.bind(this)(t,e)},showSelect(){this.selectIsOpen=!0,this.$refs.select.$el.focus()},hideSelect(){this.selectIsOpen=!1},isVueComponent:t=>t._isVue,setError(t,e){K.error(t,e),this.error=t,setTimeout((()=>{this.error=null}),5e3)}}},(function(){var t=this,e=t._self._c;return t.collections&&t.type&&t.id?e("ul",{staticClass:"collection-list",attrs:{id:"collection-list"}},[e("li",{on:{click:t.showSelect}},[t._m(0),e("div",{attrs:{id:"collection-select-container"}},[e("NcSelect",{ref:"select",attrs:{"aria-label-combobox":t.t("core","Add to a project"),options:t.options,placeholder:t.placeholder,label:"title",limit:5},on:{close:function(e){t.isSelectOpen=!1},open:function(e){t.isSelectOpen=!0},"option:selected":t.select,search:t.search},scopedSlots:t._u([{key:"selected-option",fn:function(i){return[e("span",{staticClass:"option__desc"},[e("span",{staticClass:"option__title"},[t._v(t._s(i.title))])])]}},{key:"option",fn:function(i){return[e("span",{staticClass:"option__wrapper"},[i.class?e("span",{staticClass:"avatar",class:i.class}):2!==i.method?e("NcAvatar",{attrs:{"allow-placeholder":"","display-name":i.title}}):t._e(),e("span",{staticClass:"option__title"},[t._v(t._s(i.title))])],1)]}}],null,!1,2397208459),model:{value:t.value,callback:function(e){t.value=e},expression:"value"}},[e("p",{staticClass:"hint"},[t._v(" "+t._s(t.t("core","Connect items to a project to make them easier to find"))+" ")])])],1)]),e("transition",{attrs:{name:"fade"}},[t.error?e("li",{staticClass:"error"},[t._v(" "+t._s(t.error)+" ")]):t._e()]),t._l(t.collections,(function(t){return e("CollectionListItem",{key:t.id,attrs:{collection:t}})}))],2):t._e()}),[function(){var t=this._self._c;return t("div",{staticClass:"avatar"},[t("span",{staticClass:"icon-projects"})])}],!1,null,"75a4370b",null,null).exports;var rt=r(63814),nt=r(32981),st=r(87485);class at{constructor(){this._capabilities=(0,st.F)()}get defaultPermissions(){var t;return null===(t=this._capabilities.files_sharing)||void 0===t?void 0:t.default_permissions}get isPublicUploadEnabled(){var t;return null===(t=this._capabilities.files_sharing)||void 0===t?void 0:t.public.upload}get isShareWithLinkAllowed(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}get federatedShareDocLink(){return OC.appConfig.core.federatedCloudShareDoc}get defaultExpirationDate(){return this.isDefaultExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}get defaultInternalExpirationDate(){return this.isDefaultInternalExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}get defaultRemoteExpirationDateString(){return this.isDefaultRemoteExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}get enforcePasswordForPublicLink(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}get enableLinkPasswordByDefault(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}get isDefaultExpireDateEnforced(){return!0===OC.appConfig.core.defaultExpireDateEnforced}get isDefaultExpireDateEnabled(){return!0===OC.appConfig.core.defaultExpireDateEnabled}get isDefaultInternalExpireDateEnforced(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}get isDefaultRemoteExpireDateEnforced(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}get isDefaultInternalExpireDateEnabled(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}get isDefaultRemoteExpireDateEnabled(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnabled}get isRemoteShareAllowed(){return!0===OC.appConfig.core.remoteShareAllowed}get isMailShareAllowed(){var t,e;return void 0!==(null===(t=this._capabilities)||void 0===t||null===(t=t.files_sharing)||void 0===t?void 0:t.sharebymail)&&!0===(null===(e=this._capabilities)||void 0===e||null===(e=e.files_sharing)||void 0===e||null===(e=e.public)||void 0===e?void 0:e.enabled)}get defaultExpireDate(){return OC.appConfig.core.defaultExpireDate}get defaultInternalExpireDate(){return OC.appConfig.core.defaultInternalExpireDate}get defaultRemoteExpireDate(){return OC.appConfig.core.defaultRemoteExpireDate}get isResharingAllowed(){return!0===OC.appConfig.core.resharingAllowed}get isPasswordForMailSharesRequired(){return void 0!==this._capabilities.files_sharing.sharebymail&&this._capabilities.files_sharing.sharebymail.password.enforced}get shouldAlwaysShowUnique(){var t;return!0===(null===(t=this._capabilities.files_sharing)||void 0===t||null===(t=t.sharee)||void 0===t?void 0:t.always_show_unique)}get allowGroupSharing(){return!0===OC.appConfig.core.allowGroupSharing}get maxAutocompleteResults(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}get minSearchStringLength(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}get passwordPolicy(){return this._capabilities.password_policy?this._capabilities.password_policy:{}}}var ot=r(77905),lt=r(96763);class ct{constructor(t){var e,i,r,n;if(i=this,n=void 0,(r=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var r=i.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(r="_share"))in i?Object.defineProperty(i,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):i[r]=n,t.ocs&&t.ocs.data&&t.ocs.data[0]&&(t=t.ocs.data[0]),t.hide_download=!!t.hide_download,t.mail_send=!!t.mail_send,t.attributes&&"string"==typeof t.attributes)try{t.attributes=JSON.parse(t.attributes)}catch(e){lt.warn("Could not parse share attributes returned by server",t.attributes)}t.attributes=null!==(e=t.attributes)&&void 0!==e?e:[],this._share=t}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(t){this._share.permissions=t}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(t){this._share.expiration=t}get token(){return this._share.token}get note(){return this._share.note}set note(t){this._share.note=t}get label(){var t;return null!==(t=this._share.label)&&void 0!==t?t:""}set label(t){this._share.label=t}get mailSend(){return!0===this._share.mail_send}get hideDownload(){return!0===this._share.hide_download}set hideDownload(t){this._share.hide_download=!0===t}get password(){return this._share.password}set password(t){this._share.password=t}get passwordExpirationTime(){return this._share.password_expiration_time}set passwordExpirationTime(t){this._share.password_expiration_time=t}get sendPasswordByTalk(){return this._share.send_password_by_talk}set sendPasswordByTalk(t){this._share.send_password_by_talk=t}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&OC.PERMISSION_READ)}get hasCreatePermission(){return!!(this.permissions&OC.PERMISSION_CREATE)}get hasDeletePermission(){return!!(this.permissions&OC.PERMISSION_DELETE)}get hasUpdatePermission(){return!!(this.permissions&OC.PERMISSION_UPDATE)}get hasSharePermission(){return!!(this.permissions&OC.PERMISSION_SHARE)}get hasDownloadPermission(){for(const t in this._share.attributes){const e=this._share.attributes[t];if("permissions"===e.scope&&"download"===e.key)return e.enabled}return!0}set hasDownloadPermission(t){this.setAttribute("permissions","download",!!t)}setAttribute(t,e,i){const r={scope:t,key:e,enabled:i};for(const t in this._share.attributes){const e=this._share.attributes[t];if(e.scope===r.scope&&e.key===r.key)return void this._share.attributes.splice(t,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}}const ht={data:()=>({SHARE_TYPES:ot.Z})};var ut=r(85168);const dt={name:"CheckBoldIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var pt=r(14486);const ft=(0,pt.A)(dt,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon check-bold-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,At={name:"ClipboardFlowIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},gt=(0,pt.A)(At,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon clipboard-flow-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M15,19L11,15H14V8H16V15H19L15,19M10,16H8V9H5L9,5L13,9H10V16"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,mt={name:"SharingEntrySimple",components:{NcActions:z.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 vt=r(17557),yt={};yt.styleTagTransform=A(),yt.setAttributes=u(),yt.insert=c().bind(null,"head"),yt.domAPI=o(),yt.insertStyleElement=p(),s()(vt.A,yt),vt.A&&vt.A.locals&&vt.A.locals;const _t=(0,pt.A)(mt,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"sharing-entry"},[t._t("avatar"),t._v(" "),e("div",{staticClass:"sharing-entry__desc"},[e("span",{staticClass:"sharing-entry__title"},[t._v(t._s(t.title))]),t._v(" "),t.subtitle?e("p",[t._v("\n\t\t\t"+t._s(t.subtitle)+"\n\t\t")]):t._e()]),t._v(" "),t.$slots.default?e("NcActions",{ref:"actionsComponent",staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":t.ariaExpandedValue}},[t._t("default")],2):t._e()],2)}),[],!1,null,"1852ea78",null).exports;var Ct=r(96763);const wt={name:"SharingEntryInternal",components:{NcActionButton:j.A,SharingEntrySimple:_t,CheckIcon:ft,ClipboardIcon:gt},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({copied:!1,copySuccess:!1}),computed:{internalLink(){return window.location.protocol+"//"+window.location.host+(0,rt.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,ut.Te)(t("files_sharing","Link copied")),this.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(t){this.copySuccess=!1,this.copied=!0,Ct.error(t)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}}}};var Et=r(16469),bt={};bt.styleTagTransform=A(),bt.setAttributes=u(),bt.insert=c().bind(null,"head"),bt.domAPI=o(),bt.insertStyleElement=p(),s()(Et.A,bt),Et.A&&Et.A.locals&&Et.A.locals;const St=(0,pt.A)(wt,(function(){var t=this,e=t._self._c;return e("ul",[e("SharingEntrySimple",{ref:"shareEntrySimple",staticClass:"sharing-entry__internal",attrs:{title:t.t("files_sharing","Internal link"),subtitle:t.internalLinkSubtitle},scopedSlots:t._u([{key:"avatar",fn:function(){return[e("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[t._v(" "),e("NcActionButton",{attrs:{title:t.copyLinkTooltip,"aria-label":t.copyLinkTooltip},on:{click:t.copyLink},scopedSlots:t._u([{key:"icon",fn:function(){return[t.copied&&t.copySuccess?e("CheckIcon",{staticClass:"icon-checkmark-color",attrs:{size:20}}):e("ClipboardIcon",{attrs:{size:20}})]},proxy:!0}])})],1)],1)}),[],!1,null,"e40cd936",null).exports;var xt=r(21777),Tt=r(17334),Pt=r.n(Tt),kt=r(96763);const Rt=new at;async function Dt(){if(Rt.passwordPolicy.api&&Rt.passwordPolicy.api.generate)try{const e=await W.Ay.get(Rt.passwordPolicy.api.generate);if(e.data.ocs.data.password)return(0,ut.Te)(t("files_sharing","Password created successfully")),e.data.ocs.data.password}catch(e){kt.info("Error generating password from password_policy",e),(0,ut.Qg)(t("files_sharing","Error generating password from password policy"))}const e=new Uint8Array(10);self.crypto.getRandomValues(e);let i="";for(let t=0;t<e.length;t++)i+="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789".charAt(.20392156862745098*e[t]);return i}r(48318);var It=r(61338),Bt=r(96763);const Nt=(0,rt.KT)("apps/files_sharing/api/v1/shares"),Lt={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{var p;const t=await W.Ay.post(Nt,{path:i,permissions:r,shareType:n,shareWith:s,publicUpload:a,password:o,sendPasswordByTalk:l,expireDate:c,label:h,note:u,attributes:d});if(null==t||null===(p=t.data)||void 0===p||!p.ocs)throw t;const e=new ct(t.data.ocs.data);return(0,It.Ic)("files_sharing:share:created",{share:e}),e}catch(e){var f;Bt.error("Error while creating share",e);const i=null==e||null===(f=e.response)||void 0===f||null===(f=f.data)||void 0===f||null===(f=f.ocs)||void 0===f||null===(f=f.meta)||void 0===f?void 0:f.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{var i;const t=await W.Ay.delete(Nt+"/".concat(e));if(null==t||null===(i=t.data)||void 0===i||!i.ocs)throw t;return(0,It.Ic)("files_sharing:share:deleted",{id:e}),!0}catch(e){var r;Bt.error("Error while deleting share",e);const i=null==e||null===(r=e.response)||void 0===r||null===(r=r.data)||void 0===r||null===(r=r.ocs)||void 0===r||null===(r=r.meta)||void 0===r?void 0:r.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{var r;const t=await W.Ay.put(Nt+"/".concat(e),i);if((0,It.Ic)("files_sharing:share:updated",{id:e}),null!=t&&null!==(r=t.data)&&void 0!==r&&r.ocs)return t.data.ocs.data;throw t}catch(e){if(Bt.error("Error while updating share",e),400!==e.response.status){var n;const i=null==e||null===(n=e.response)||void 0===n||null===(n=n.data)||void 0===n||null===(n=n.ocs)||void 0===n||null===(n=n.meta)||void 0===n?void 0:n.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)}}}},Ht={methods:{async openSharingDetails(t){let e={};if(t.handler){const i={};this.suggestions&&(i.suggestions=this.suggestions,i.fileInfo=this.fileInfo,i.query=this.query);const r=await t.handler(i);e=this.mapShareRequestToShareObject(r)}else e=this.mapShareRequestToShareObject(t);const i={fileInfo:this.fileInfo,share:e};this.$emit("open-sharing-details",i)},openShareDetailsForCustomSettings(t){t.setCustomPermissions=!0,this.openSharingDetails(t)},mapShareRequestToShareObject(t){var e;if(t.id)return t;const i={attributes:[{enabled:!0,key:"download",scope:"permissions"}],share_type:t.shareType,share_with:t.shareWith,is_no_user:t.isNoUser,user:t.shareWith,share_with_displayname:t.displayName,subtitle:t.subtitle,permissions:null!==(e=t.permissions)&&void 0!==e?e:(new at).defaultPermissions,expiration:""};return new ct(i)}}};var Ot=r(96763);const Mt={name:"SharingInput",components:{NcSelect:y.A},mixins:[ht,Lt,Ht],props:{shares:{type:Array,default:()=>[],required:!0},linkShares:{type:Array,default:()=>[],required:!0},fileInfo:{type:Object,default:()=>{},required:!0},reshare:{type:ct,default:null},canReshare:{type:Boolean,required:!0}},data:()=>({config:new at,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?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.getRecommendations()},methods:{onSelected(t){this.value=null,this.openSharingDetails(t)},async asyncFind(t){this.query=t.trim(),this.isValidQuery&&(this.loading=!0,await this.debounceGetSuggestions(t))},async getSuggestions(e){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.loading=!0,!0===(0,st.F)().files_sharing.sharee.query_lookup_default&&(i=!0);const r=[this.SHARE_TYPES.SHARE_TYPE_USER,this.SHARE_TYPES.SHARE_TYPE_GROUP,this.SHARE_TYPES.SHARE_TYPE_REMOTE,this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,this.SHARE_TYPES.SHARE_TYPE_CIRCLE,this.SHARE_TYPES.SHARE_TYPE_ROOM,this.SHARE_TYPES.SHARE_TYPE_GUEST,this.SHARE_TYPES.SHARE_TYPE_DECK,this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH];!0===(0,st.F)().files_sharing.public.enabled&&r.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL);let n=null;try{n=await W.Ay.get((0,rt.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(t){return void Ot.error("Error fetching suggestions",t)}const s=n.data.ocs.data,a=n.data.ocs.data.exact;s.exact=[];const o=Object.values(a).reduce(((t,e)=>t.concat(e)),[]),l=Object.values(s).reduce(((t,e)=>t.concat(e)),[]),c=this.filterOutExistingShares(o).map((t=>this.formatForMultiselect(t))).sort(((t,e)=>t.shareType-e.shareType)),h=this.filterOutExistingShares(l).map((t=>this.formatForMultiselect(t))).sort(((t,e)=>t.shareType-e.shareType)),u=[];s.lookupEnabled&&!i&&u.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0});const d=this.externalResults.filter((t=>!t.condition||t.condition(this))),p=c.concat(h).concat(d).concat(u),f=p.reduce(((t,e)=>e.displayName?(t[e.displayName]||(t[e.displayName]=0),t[e.displayName]++,t):t),{});this.suggestions=p.map((t=>f[t.displayName]>1&&!t.desc?{...t,desc:t.shareWithDisplayNameUnique}:t)),this.loading=!1,Ot.info("suggestions",this.suggestions)},debounceGetSuggestions:Pt()((function(){this.getSuggestions(...arguments)}),300),async getRecommendations(){this.loading=!0;let t=null;try{t=await W.Ay.get((0,rt.KT)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:this.fileInfo.type}})}catch(t){return void Ot.error("Error fetching recommendations",t)}const e=this.externalResults.filter((t=>!t.condition||t.condition(this))),i=Object.values(t.data.ocs.data.exact).reduce(((t,e)=>t.concat(e)),[]);this.recommendations=this.filterOutExistingShares(i).map((t=>this.formatForMultiselect(t))).concat(e),this.loading=!1,Ot.info("recommendations",this.recommendations)},filterOutExistingShares(t){return t.reduce(((t,e)=>{if("object"!=typeof e)return t;try{if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER){if(e.value.shareWith===(0,xt.HW)().uid)return t;if(this.reshare&&e.value.shareWith===this.reshare.owner)return t}if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==this.linkShares.map((t=>t.shareWith)).indexOf(e.value.shareWith.trim()))return t}else{const i=this.shares.reduce(((t,e)=>(t[e.shareWith]=e.type,t)),{}),r=e.value.shareWith.trim();if(r in i&&i[r]===e.value.shareType)return t}t.push(e)}catch{return t}return t}),[])},shareTypeToIcon(e){switch(e){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return{icon:"icon-user",iconTitle:t("files_sharing","Guest")};case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return{icon:"icon-group",iconTitle:t("files_sharing","Group")};case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return{icon:"icon-mail",iconTitle:t("files_sharing","Email")};case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return{icon:"icon-teams",iconTitle:t("files_sharing","Team")};case this.SHARE_TYPES.SHARE_TYPE_ROOM:return{icon:"icon-room",iconTitle:t("files_sharing","Talk conversation")};case this.SHARE_TYPES.SHARE_TYPE_DECK:return{icon:"icon-deck",iconTitle:t("files_sharing","Deck board")};case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return{icon:"icon-sciencemesh",iconTitle:t("files_sharing","ScienceMesh")};default:return{}}},formatForMultiselect(e){let i;var r;if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)i=null!==(r=e.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!e.value.server)if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)i=e.value.shareWith;else{var n;i=null!==(n=e.shareWithDescription)&&void 0!==n?n:""}else i=t("files_sharing","on {server}",{server:e.value.server});return{shareWith:e.value.shareWith,shareType:e.value.shareType,user:e.uuid||e.value.shareWith,isNoUser:e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:e.name||e.label,subname:i,shareWithDisplayNameUnique:e.shareWithDisplayNameUnique||"",...this.shareTypeToIcon(e.value.shareType)}}}};var Yt=r(82162),Ut={};Ut.styleTagTransform=A(),Ut.setAttributes=u(),Ut.insert=c().bind(null,"head"),Ut.domAPI=o(),Ut.insertStyleElement=p(),s()(Yt.A,Ut),Yt.A&&Yt.A.locals&&Yt.A.locals;const Vt=(0,pt.A)(Mt,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"sharing-search"},[e("label",{attrs:{for:"sharing-search-input"}},[t._v(t._s(t.t("files_sharing","Search for share recipients")))]),t._v(" "),e("NcSelect",{ref:"select",staticClass:"sharing-search__input",attrs:{"input-id":"sharing-search-input",disabled:!t.canReshare,loading:t.loading,filterable:!1,placeholder:t.inputPlaceholder,"clear-search-on-blur":()=>!1,"user-select":!0,options:t.options},on:{search:t.asyncFind,"option:selected":t.onSelected},scopedSlots:t._u([{key:"no-options",fn:function(e){let{search:i}=e;return[t._v("\n\t\t\t"+t._s(i?t.noResultText:t.t("files_sharing","No recommendations. Start typing."))+"\n\t\t")]}}]),model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})],1)}),[],!1,null,null,null).exports;var Ft=r(71225),zt=r(73267),jt=r(32831),qt=r(31346);const Wt=(0,qt.H4)();var $t=r(49264),Kt=r(35947);const Gt=(0,Kt.YK)().setApp("files_sharing").detectUser().build(),Zt={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},Qt={READ_ONLY:Zt.READ,UPLOAD_AND_UPDATE:Zt.READ|Zt.UPDATE|Zt.CREATE|Zt.DELETE,FILE_DROP:Zt.CREATE,ALL:Zt.UPDATE|Zt.CREATE|Zt.READ|Zt.DELETE|Zt.SHARE,ALL_FILE:Zt.UPDATE|Zt.READ|Zt.SHARE};var Jt=r(96763);const Xt={mixins:[Lt,ht],props:{fileInfo:{type:Object,default:()=>{},required:!0},share:{type:ct,default:null},isUnique:{type:Boolean,default:!0}},data(){var t;return{config:new at,node:null,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new $t.A({concurrency:1}),reactiveState:null===(t=this.share)||void 0===t?void 0:t.state}},computed:{path(){return(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/")},hasNote:{get(){return""!==this.share.note},set(t){this.share.note=t?null:""}},dateTomorrow:()=>new Date((new Date).setDate((new Date).getDate()+1)),lang(){const t=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],e=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:e,weekdaysMin:t,weekdaysShort:t},monthFormat:"MMM"}},isFolder(){return"dir"===this.fileInfo.type},isPublicShare(){var t;const e=null!==(t=this.share.shareType)&&void 0!==t?t:this.share.type;return[this.SHARE_TYPES.SHARE_TYPE_LINK,this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(e)},isRemoteShare(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE},isShareOwner(){return this.share&&this.share.owner===(0,xt.HW)().uid},isExpiryDateEnforced(){return this.isPublicShare?this.config.isDefaultExpireDateEnforced:this.isRemoteShare?this.config.isDefaultRemoteExpireDateEnforced:this.config.isDefaultInternalExpireDateEnforced},hasCustomPermissions(){return![Qt.ALL,Qt.READ_ONLY,Qt.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 t={path:this.path};try{this.node=await(async t=>{const e=(0,qt.VL)(),i=await Wt.stat("".concat(qt.lJ).concat(t.path),{details:!0,data:e});return(0,qt.Al)(i.data)})(t),Gt.info("Fetched node:",{node:this.node})}catch(t){Gt.error("Error:",t)}},checkShare:t=>(!t.password||"string"==typeof t.password&&""!==t.password.trim())&&!(t.expirationDate&&!t.expirationDate.isValid()),formatDateToString:t=>new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())).toISOString().split("T")[0],onExpirationChange:Pt()((function(t){this.share.expireDate=this.formatDateToString(new Date(t))}),500),onExpirationDisable(){this.share.expireDate=""},onNoteChange(t){this.$set(this.share,"newNote",t.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),Jt.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,ut.Te)(e),this.$emit("remove:share",this.share),await this.getNode(),(0,It.Ic)("files:node:updated",this.node)}catch(t){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=>{"object"==typeof this.share[t]?e[t]=JSON.stringify(this.share[t]):e[t]=this.share[t].toString()})),void 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,ut.Te)(this.updateSuccessMessage(i))}catch(e){Gt.error("Could not update share",{error:e,share:this.share,propertyNames:i});const{message:r}=e;r&&""!==r?(this.onSyncError(i[0],r),(0,ut.Qg)(r)):(0,ut.Qg)(t("files_sharing","Could not update share"))}finally{this.saving=!1}}))}Jt.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 expire 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(t,e){switch(this.open=!0,t){case"password":case"pending":case"expireDate":case"label":case"note":{this.$set(this.errors,t,e);let i=this.$refs[t];if(i){i.$el&&(i=i.$el);const t=i.querySelector(".focusable");t&&t.focus()}break}case"sendPasswordByTalk":this.$set(this.errors,t,e),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:Pt()((function(t){this.queueUpdate(t)}),500)}},te={name:"SharingEntryInherited",components:{NcActionButton:j.A,NcActionLink:zt.A,NcActionText:jt.A,NcAvatar:v.A,SharingEntrySimple:_t},mixins:[Xt],props:{share:{type:ct,required:!0}},computed:{viaFileTargetUrl(){return(0,rt.Jv)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName(){return(0,Ft.P8)(this.share.viaPath)}}};var ee=r(41699),ie={};ie.styleTagTransform=A(),ie.setAttributes=u(),ie.insert=c().bind(null,"head"),ie.domAPI=o(),ie.insertStyleElement=p(),s()(ee.A,ie),ee.A&&ee.A.locals&&ee.A.locals;const re=(0,pt.A)(te,(function(){var t=this,e=t._self._c;return e("SharingEntrySimple",{key:t.share.id,staticClass:"sharing-entry__inherited",attrs:{title:t.share.shareWithDisplayName},scopedSlots:t._u([{key:"avatar",fn:function(){return[e("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:t.share.shareWith,"display-name":t.share.shareWithDisplayName}})]},proxy:!0}])},[t._v(" "),e("NcActionText",{attrs:{icon:"icon-user"}},[t._v("\n\t\t"+t._s(t.t("files_sharing","Added by {initiator}",{initiator:t.share.ownerDisplayName}))+"\n\t")]),t._v(" "),t.share.viaPath&&t.share.viaFileid?e("NcActionLink",{attrs:{icon:"icon-folder",href:t.viaFileTargetUrl}},[t._v("\n\t\t"+t._s(t.t("files_sharing","Via “{folder}”",{folder:t.viaFolderName}))+"\n\t")]):t._e(),t._v(" "),t.share.canDelete?e("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),t.onDelete.apply(null,arguments)}}},[t._v("\n\t\t"+t._s(t.t("files_sharing","Unshare"))+"\n\t")]):t._e()],1)}),[],!1,null,"283ca89e",null).exports;var ne=r(96763);const se={name:"SharingInherited",components:{NcActionButton:j.A,SharingEntryInherited:re,SharingEntrySimple:_t},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"".concat(this.fileInfo.path,"/").concat(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 t=(0,rt.KT)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:this.fullPath}),e=await W.Ay.get(t);this.shares=e.data.ocs.data.map((t=>new ct(t))).sort(((t,e)=>e.createdTime-t.createdTime)),ne.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(t){const e=this.shares.findIndex((e=>e===t));this.shares.splice(e,1)}}};var ae=r(4442),oe={};oe.styleTagTransform=A(),oe.setAttributes=u(),oe.insert=c().bind(null,"head"),oe.domAPI=o(),oe.insertStyleElement=p(),s()(ae.A,oe),ae.A&&ae.A.locals&&ae.A.locals;const le=(0,pt.A)(se,(function(){var t=this,e=t._self._c;return e("ul",{attrs:{id:"sharing-inherited-shares"}},[e("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:t.mainTitle,subtitle:t.subTitle,"aria-expanded":t.showInheritedShares},scopedSlots:t._u([{key:"avatar",fn:function(){return[e("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[t._v(" "),e("NcActionButton",{attrs:{icon:t.showInheritedSharesIcon,"aria-label":t.toggleTooltip,title:t.toggleTooltip},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.toggleInheritedShares.apply(null,arguments)}}})],1),t._v(" "),t._l(t.shares,(function(i){return e("SharingEntryInherited",{key:i.id,attrs:{"file-info":t.fileInfo,share:i},on:{"remove:share":t.removeShare}})}))],2)}),[],!1,null,"50f9af8c",null).exports;var ce=r(17816),he=r.n(ce),ue=r(1790),de=r(44131),pe=r(80114),fe=r(94219);const Ae={name:"TuneIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ge=(0,pt.A)(Ae,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon tune-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,me={name:"CalendarBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ve=(0,pt.A)(me,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon calendar-blank-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,ye={name:"QrcodeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},_e=(0,pt.A)(ye,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon qrcode-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,Ce={name:"ExclamationIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},we=(0,pt.A)(Ce,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon exclamation-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,Ee={name:"LockIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},be=(0,pt.A)(Ee,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon lock-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var Se=r(24325),xe=r(27577);const Te={name:"TriangleSmallDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Pe=(0,pt.A)(Te,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon triangle-small-down-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M8 9H16L12 16"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,ke={name:"EyeOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Re=(0,pt.A)(ke,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon eye-outline-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var De=r(93919);const Ie={name:"FileUploadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Be=(0,pt.A)(Ie,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon file-upload-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,Ne={name:"SharingEntryQuickShareSelect",components:{DropdownIcon:Pe,NcActions:z.A,NcActionButton:j.A},mixins:[Xt,Ht,ht],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 drop"),customPermissionsText:()=>t("files_sharing","Custom permissions"),preSelectedOption(){return(this.share.permissions&~Zt.SHARE)===Qt.READ_ONLY?this.canViewText:this.share.permissions===Qt.ALL||this.share.permissions===Qt.ALL_FILE?this.canEditText:(this.share.permissions&~Zt.SHARE)===Qt.FILE_DROP?this.fileDropText:this.customPermissionsText},options(){const t=[{label:this.canViewText,icon:Re},{label:this.canEditText,icon:De.A}];return this.supportsFileDrop&&t.push({label:this.fileDropText,icon:Be}),t.push({label:this.customPermissionsText,icon:ge}),t},supportsFileDrop(){if(this.isFolder&&this.config.isPublicUploadEnabled){var t;const e=null!==(t=this.share.type)&&void 0!==t?t:this.share.shareType;return[this.SHARE_TYPES.SHARE_TYPE_LINK,this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(e)}return!1},dropDownPermissionValue(){switch(this.selectedOption){case this.canEditText:return this.isFolder?Qt.ALL:Qt.ALL_FILE;case this.fileDropText:return Qt.FILE_DROP;case this.customPermissionsText:return"custom";case this.canViewText:default:return Qt.READ_ONLY}}},created(){this.selectedOption=this.preSelectedOption},methods:{selectOption(t){this.selectedOption=t,t===this.customPermissionsText?this.$emit("open-sharing-details"):(this.share.permissions=this.dropDownPermissionValue,this.queueUpdate("permissions"),this.$refs.quickShareActions.$refs.menuButton.$el.focus())}}},Le=Ne;var He=r(45340),Oe={};Oe.styleTagTransform=A(),Oe.setAttributes=u(),Oe.insert=c().bind(null,"head"),Oe.domAPI=o(),Oe.insertStyleElement=p(),s()(He.A,Oe),He.A&&He.A.locals&&He.A.locals;const Me=(0,pt.A)(Le,(function(){var t=this,e=t._self._c;return e("NcActions",{ref:"quickShareActions",staticClass:"share-select",attrs:{"menu-name":t.selectedOption,"aria-label":t.ariaLabel,type:"tertiary-no-background","force-name":""},scopedSlots:t._u([{key:"icon",fn:function(){return[e("DropdownIcon",{attrs:{size:15}})]},proxy:!0}])},[t._v(" "),t._l(t.options,(function(i){return e("NcActionButton",{key:i.label,attrs:{type:"radio","model-value":i.label===t.selectedOption,"close-after-click":""},on:{click:function(e){return t.selectOption(i.label)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(i.icon,{tag:"component"})]},proxy:!0}],null,!0)},[t._v("\n\t\t"+t._s(i.label)+"\n\t")])}))],2)}),[],!1,null,"6e5dd9f1",null).exports,Ye={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:()=>({})},fileInfo:{type:Object,default:()=>{},required:!0},share:{type:ct,default:null}},computed:{data(){return this.action.data(this)}}},Ue=(0,pt.A)(Ye,(function(){var t=this;return(0,t._self._c)(t.data.is,t._g(t._b({tag:"Component"},"Component",t.data,!1),t.action.handlers),[t._v("\n\t"+t._s(t.data.text)+"\n")])}),[],!1,null,null,null).exports;var Ve=r(96763);const Fe={name:"SharingEntryLink",components:{ExternalShareAction:Ue,NcActions:z.A,NcActionButton:j.A,NcActionCheckbox:ue.A,NcActionInput:de.A,NcActionLink:zt.A,NcActionText:jt.A,NcActionSeparator:pe.A,NcAvatar:v.A,NcDialog:fe.A,VueQrcode:he(),Tune:ge,IconCalendarBlank:ve,IconQr:_e,ErrorIcon:we,LockIcon:be,CheckIcon:ft,ClipboardIcon:gt,CloseIcon:Se.A,PlusIcon:xe.A,SharingEntryQuickShareSelect:Me},mixins:[Xt,Ht],props:{canReshare:{type:Boolean,default:!0},index:{type:Number,default:null}},data:()=>({shareCreationComplete:!1,copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state,logger:(0,Kt.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?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return this.index>1?t("files_sharing","Share link ({index})",{index:this.index}):t("files_sharing","Share link")},subtitle(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(t){q.Ay.set(this.share,"password",t?await Dt():""),q.Ay.set(this.share,"newPassword",this.share.password)}},passwordExpirationTime(){if(null===this.share.passwordExpirationTime)return null;const t=moment(this.share.passwordExpirationTime);return!(t.diff(moment())<0)&&t.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(t){this.share.sendPasswordByTalk=t}},isEmailShareType(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword(){return this.config.enableLinkPasswordByDefault&&this.share&&!this.share.id},pendingEnforcedPassword(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},sharePolicyHasRequiredProperties(){return this.config.enforcePasswordForPublicLink||this.config.isDefaultExpireDateEnforced},requiredPropertiesMissing(){if(!this.sharePolicyHasRequiredProperties)return!1;if(!this.share)return!0;if(this.share.id)return!0;const t=this.config.enforcePasswordForPublicLink&&!this.share.password,e=this.config.isDefaultExpireDateEnforced&&!this.share.expireDate;return t||e},hasUnsavedPassword(){return void 0!==this.share.newPassword},shareLink(){return window.location.protocol+"//"+window.location.host+(0,rt.Jv)("/s/")+this.share.token},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((t=>(t.shareType.includes(ot.Z.SHARE_TYPE_LINK)||t.shareType.includes(ot.Z.SHARE_TYPE_EMAIL))&&!t.advanced))},isPasswordPolicyEnabled(){return"object"==typeof this.config.passwordPolicy},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((t=>"download"===t.key&&"permissions"===t.scope&&!1===t.enabled))}},methods:{async onNewLinkShare(){if(this.logger.debug("onNewLinkShare called (with this.share)",this.share),this.loading)return;const e={share_type:ot.Z.SHARE_TYPE_LINK};if(this.config.isDefaultExpireDateEnforced&&(e.expiration=this.formatDateToString(this.config.defaultExpirationDate)),this.logger.debug("Missing required properties?",this.requiredPropertiesMissing),this.sharePolicyHasRequiredProperties&&this.requiredPropertiesMissing){this.pending=!0,this.shareCreationComplete=!1,this.logger.info("Share policy requires mandated properties (password)..."),(this.config.enableLinkPasswordByDefault||this.config.enforcePasswordForPublicLink)&&(e.password=await Dt());const t=new ct(e),i=await new Promise((e=>{this.$emit("add:share",t,e)}));this.open=!1,this.pending=!1,i.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(t){return this.pending=!1,this.logger.error("Error creating share",t),!1}return!0}return this.open=!0,(0,ut.Qg)(t("files_sharing","Error, please enter proper password and/or expiration date")),!1}const i=new ct(e);await this.pushNewLinkShare(i),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:ot.Z.SHARE_TYPE_LINK,password:e.password,expireDate:e.expireDate,attributes:JSON.stringify(this.fileInfo.shareAttributes)};Ve.debug("Creating link share with options",r);const n=await this.createShare(r);let s;this.open=!1,this.shareCreationComplete=!0,Ve.debug("Link share created",n),s=i?await new Promise((t=>{this.$emit("update:share",n,t)})):await new Promise((t=>{this.$emit("add:share",n,t)})),await this.getNode(),(0,It.Ic)("files:node:updated",this.node),this.config.enforcePasswordForPublicLink||s.copyLink(),(0,ut.Te)(t("files_sharing","Link share created"))}catch(e){var r;const i=null==e||null===(r=e.response)||void 0===r||null===(r=r.data)||void 0===r||null===(r=r.ocs)||void 0===r||null===(r=r.meta)||void 0===r?void 0:r.message;if(!i)return(0,ut.Qg)(t("files_sharing","Error while creating the share")),void Ve.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,ut.Te)(t("files_sharing","Link copied")),this.$refs.copyButton.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(t){this.copySuccess=!1,this.copied=!0,Ve.error(t)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}},onPasswordChange(t){this.$set(this.share,"newPassword",t)},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()},onCancel(){this.shareCreationComplete||this.$emit("remove:share",this.share)}}},ze=Fe;var je=r(54228),qe={};qe.styleTagTransform=A(),qe.setAttributes=u(),qe.insert=c().bind(null,"head"),qe.domAPI=o(),qe.insertStyleElement=p(),s()(je.A,qe),je.A&&je.A.locals&&je.A.locals;const We={name:"SharingLinkList",components:{SharingEntryLink:(0,pt.A)(ze,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":t.share}},[e("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":t.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),t._v(" "),e("div",{staticClass:"sharing-entry__summary"},[e("div",{staticClass:"sharing-entry__desc"},[e("span",{staticClass:"sharing-entry__title",attrs:{title:t.title}},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),t.subtitle?e("p",[t._v("\n\t\t\t\t"+t._s(t.subtitle)+"\n\t\t\t")]):t._e(),t._v(" "),t.share&&void 0!==t.share.permissions?e("SharingEntryQuickShareSelect",{attrs:{share:t.share,"file-info":t.fileInfo},on:{"open-sharing-details":function(e){return t.openShareDetailsForCustomSettings(t.share)}}}):t._e()],1),t._v(" "),t.share&&!t.isEmailShareType&&t.share.token?e("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[e("NcActionButton",{attrs:{title:t.copyLinkTooltip,"aria-label":t.copyLinkTooltip},on:{click:function(e){return e.preventDefault(),t.copyLink.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.copied&&t.copySuccess?e("CheckIcon",{staticClass:"icon-checkmark-color",attrs:{size:20}}):e("ClipboardIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,4269614823)})],1):t._e()],1),t._v(" "),!t.pending&&(t.pendingPassword||t.pendingEnforcedPassword||t.pendingExpirationDate)?e("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":t.actionsTooltip,"menu-align":"right",open:t.open},on:{"update:open":function(e){t.open=e},close:t.onCancel}},[t.errors.pending?e("NcActionText",{staticClass:"error",scopedSlots:t._u([{key:"icon",fn:function(){return[e("ErrorIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,1966124155)},[t._v("\n\t\t\t"+t._s(t.errors.pending)+"\n\t\t")]):e("NcActionText",{attrs:{icon:"icon-info"}},[t._v("\n\t\t\t"+t._s(t.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),t._v(" "),t.pendingPassword?e("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:t.isPasswordProtected,disabled:t.config.enforcePasswordForPublicLink||t.saving},on:{"update:checked":function(e){t.isPasswordProtected=e},uncheck:t.onPasswordDisable}},[t._v("\n\t\t\t"+t._s(t.config.enforcePasswordForPublicLink?t.t("files_sharing","Password protection (enforced)"):t.t("files_sharing","Password protection"))+"\n\t\t")]):t._e(),t._v(" "),t.pendingEnforcedPassword||t.share.password?e("NcActionInput",{staticClass:"share-link-password",attrs:{label:t.t("files_sharing","Enter a password"),value:t.share.password,disabled:t.saving,required:t.config.enableLinkPasswordByDefault||t.config.enforcePasswordForPublicLink,minlength:t.isPasswordPolicyEnabled&&t.config.passwordPolicy.minLength,autocomplete:"new-password"},on:{"update:value":function(e){return t.$set(t.share,"password",e)},submit:t.onNewLinkShare},scopedSlots:t._u([{key:"icon",fn:function(){return[e("LockIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2056568168)}):t._e(),t._v(" "),t.pendingExpirationDate?e("NcActionInput",{staticClass:"share-link-expire-date",attrs:{label:t.t("files_sharing","Expiration date (enforced)"),disabled:t.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(t.share.expireDate),type:"date",min:t.dateTomorrow,max:t.maxExpirationDateEnforced},on:{input:function(e){t.onExpirationChange}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconCalendarBlank",{attrs:{size:20}})]},proxy:!0}],null,!1,3418578971)}):t._e(),t._v(" "),e("NcActionButton",{on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.onNewLinkShare.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("CheckIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2630571749)},[t._v("\n\t\t\t"+t._s(t.t("files_sharing","Create share"))+"\n\t\t")]),t._v(" "),e("NcActionButton",{on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.onCancel.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("CloseIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2428343285)},[t._v("\n\t\t\t"+t._s(t.t("files_sharing","Cancel"))+"\n\t\t")])],1):t.loading?e("div",{staticClass:"icon-loading-small sharing-entry__loading"}):e("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":t.actionsTooltip,"menu-align":"right",open:t.open},on:{"update:open":function(e){t.open=e},close:t.onMenuClose}},[t.share?[t.share.canEdit&&t.canReshare?[e("NcActionButton",{attrs:{disabled:t.saving,"close-after-click":!0},on:{click:function(e){return e.preventDefault(),t.openSharingDetails.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Tune",{attrs:{size:20}})]},proxy:!0}],null,!1,1300586850)},[t._v("\n\t\t\t\t\t"+t._s(t.t("files_sharing","Customize link"))+"\n\t\t\t\t")])]:t._e(),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(e){e.preventDefault(),t.showQRCode=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconQr",{attrs:{size:20}})]},proxy:!0}],null,!1,1082198240)},[t._v("\n\t\t\t\t"+t._s(t.t("files_sharing","Generate QR code"))+"\n\t\t\t")]),t._v(" "),e("NcActionSeparator"),t._v(" "),t._l(t.externalLinkActions,(function(i){return e("ExternalShareAction",{key:i.id,attrs:{id:i.id,action:i,"file-info":t.fileInfo,share:t.share}})})),t._v(" "),t._l(t.externalLegacyLinkActions,(function(i,r){let{icon:n,url:s,name:a}=i;return e("NcActionLink",{key:r,attrs:{href:s(t.shareLink),icon:n,target:"_blank"}},[t._v("\n\t\t\t\t"+t._s(a)+"\n\t\t\t")])})),t._v(" "),!t.isEmailShareType&&t.canReshare?e("NcActionButton",{staticClass:"new-share-link",on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.onNewLinkShare.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("PlusIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2953566425)},[t._v("\n\t\t\t\t"+t._s(t.t("files_sharing","Add another link"))+"\n\t\t\t")]):t._e(),t._v(" "),t.share.canDelete?e("NcActionButton",{attrs:{disabled:t.saving},on:{click:function(e){return e.preventDefault(),t.onDelete.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("CloseIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2428343285)},[t._v("\n\t\t\t\t"+t._s(t.t("files_sharing","Unshare"))+"\n\t\t\t")]):t._e()]:t.canReshare?e("NcActionButton",{staticClass:"new-share-link",attrs:{title:t.t("files_sharing","Create a new share link"),"aria-label":t.t("files_sharing","Create a new share link"),icon:t.loading?"icon-loading-small":"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.onNewLinkShare.apply(null,arguments)}}}):t._e()],2),t._v(" "),t.showQRCode?e("NcDialog",{attrs:{size:"normal",open:t.showQRCode,name:t.title,"close-on-click-outside":!0},on:{"update:open":function(e){t.showQRCode=e},close:function(e){t.showQRCode=!1}}},[e("div",{staticClass:"qr-code-dialog"},[e("VueQrcode",{staticClass:"qr-code-dialog__img",attrs:{tag:"img",value:t.shareLink}})],1)]):t._e()],1)}),[],!1,null,"4ec6c807",null).exports},mixins:[ht,Ht],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0},canReshare:{type:Boolean,required:!0}},data:()=>({canLinkShare:(0,st.F)().files_sharing.public.enabled}),computed:{hasLinkShares(){return this.shares.filter((t=>t.type===this.SHARE_TYPES.SHARE_TYPE_LINK)).length>0},hasShares(){return this.shares.length>0}},methods:{addShare(t,e){this.shares.unshift(t),this.awaitForShare(t,e)},awaitForShare(t,e){this.$nextTick((()=>{const i=this.$children.find((e=>e.share===t));i&&e(i)}))},removeShare(t){const e=this.shares.findIndex((e=>e===t));this.shares.splice(e,1)}}},$e=(0,pt.A)(We,(function(){var t=this,e=t._self._c;return t.canLinkShare?e("ul",{staticClass:"sharing-link-list"},[!t.hasLinkShares&&t.canReshare?e("SharingEntryLink",{attrs:{"can-reshare":t.canReshare,"file-info":t.fileInfo},on:{"add:share":t.addShare}}):t._e(),t._v(" "),t.hasShares?t._l(t.shares,(function(i,r){return e("SharingEntryLink",{key:i.id,attrs:{index:t.shares.length>1?r+1:null,"can-reshare":t.canReshare,share:t.shares[r],"file-info":t.fileInfo},on:{"update:share":[function(e){return t.$set(t.shares,r,e)},function(e){return t.awaitForShare(...arguments)}],"add:share":function(e){return t.addShare(...arguments)},"remove:share":t.removeShare,"open-sharing-details":function(e){return t.openSharingDetails(i)}}})})):t._e()],2):t._e()}),[],!1,null,null,null).exports;var Ke=r(18740);const Ge={name:"DotsHorizontalIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ze=(0,pt.A)(Ge,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon dots-horizontal-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,Qe={name:"SharingEntry",components:{NcButton:Ke.A,NcAvatar:v.A,DotsHorizontalIcon:Ze,NcSelect:y.A,SharingEntryQuickShareSelect:Me},mixins:[Xt,Ht],computed:{title(){let e=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?e+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?e+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?e+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?e+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(e+=" (".concat(t("files_sharing","guest"),")")),e},tooltip(){if(this.share.owner!==this.share.uidFileOwner){const e={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",e):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",e):t("files_sharing","Shared with {user} by {owner}",e)}return null},hasStatus(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"==typeof this.share.status&&!Array.isArray(this.share.status)}},methods:{onMenuClose(){this.onNoteSubmit()}}};var Je=r(42572),Xe={};Xe.styleTagTransform=A(),Xe.setAttributes=u(),Xe.insert=c().bind(null,"head"),Xe.domAPI=o(),Xe.insertStyleElement=p(),s()(Je.A,Xe),Je.A&&Je.A.locals&&Je.A.locals;const ti={name:"SharingList",components:{SharingEntry:(0,pt.A)(Qe,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"sharing-entry"},[e("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":t.share.type!==t.SHARE_TYPES.SHARE_TYPE_USER,user:t.share.shareWith,"display-name":t.share.shareWithDisplayName,"menu-position":"left",url:t.share.shareWithAvatar}}),t._v(" "),e("div",{staticClass:"sharing-entry__summary"},[e(t.share.shareWithLink?"a":"div",{tag:"component",staticClass:"sharing-entry__summary__desc",attrs:{title:t.tooltip,"aria-label":t.tooltip,href:t.share.shareWithLink}},[e("span",[t._v(t._s(t.title)+"\n\t\t\t\t"),t.isUnique?t._e():e("span",{staticClass:"sharing-entry__summary__desc-unique"},[t._v(" ("+t._s(t.share.shareWithDisplayNameUnique)+")")]),t._v(" "),t.hasStatus&&t.share.status.message?e("small",[t._v("("+t._s(t.share.status.message)+")")]):t._e()])]),t._v(" "),e("SharingEntryQuickShareSelect",{attrs:{share:t.share,"file-info":t.fileInfo},on:{"open-sharing-details":function(e){return t.openShareDetailsForCustomSettings(t.share)}}})],1),t._v(" "),e("NcButton",{staticClass:"sharing-entry__action",attrs:{"data-cy-files-sharing-share-actions":"","aria-label":t.t("files_sharing","Open Sharing Details"),type:"tertiary"},on:{click:function(e){return t.openSharingDetails(t.share)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("DotsHorizontalIcon",{attrs:{size:20}})]},proxy:!0}])})],1)}),[],!1,null,"79edc2ff",null).exports},mixins:[ht,Ht],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0}},computed:{hasShares(){return 0===this.shares.length},isUnique(){return t=>[...this.shares].filter((e=>t.type===this.SHARE_TYPES.SHARE_TYPE_USER&&t.shareWithDisplayName===e.shareWithDisplayName)).length<=1}}},ei=(0,pt.A)(ti,(function(){var t=this,e=t._self._c;return e("ul",{staticClass:"sharing-sharee-list"},t._l(t.shares,(function(i){return e("SharingEntry",{key:i.id,attrs:{"file-info":t.fileInfo,share:i,"is-unique":t.isUnique(i)},on:{"open-sharing-details":function(e){return t.openSharingDetails(i)}}})})),1)}),[],!1,null,null,null).exports;var ii=r(53334),ri=r(63407),ni=r(16044),si=r(31126),ai=r(32073),oi=r(84237);const li={name:"CircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ci=(0,pt.A)(li,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon circle-outline-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,hi={name:"EmailIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ui=(0,pt.A)(hi,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon email-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var di=r(89979),pi=r(72755);const fi={name:"ShareCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ai=(0,pt.A)(fi,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon share-circle-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,gi={name:"AccountCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mi=(0,pt.A)(gi,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon account-circle-outline-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,vi={name:"EyeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},yi=(0,pt.A)(vi,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon eye-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var _i=r(45821),Ci=r(1795),wi=r(33017);const Ei={name:"SharingDetailsTab",components:{NcAvatar:v.A,NcButton:Ke.A,NcInputField:ri.A,NcPasswordField:ni.A,NcDateTimePickerNative:si.A,NcCheckboxRadioSwitch:ai.A,NcLoadingIcon:oi.A,CloseIcon:Se.A,CircleIcon:ci,EditIcon:De.A,ExternalShareAction:Ue,LinkIcon:di.A,GroupIcon:pi.A,ShareIcon:Ai,UserIcon:mi,UploadIcon:_i.A,ViewIcon:yi,MenuDownIcon:Ci.A,MenuUpIcon:wi.A,DotsHorizontalIcon:Ze},mixins:[ht,Lt,Xt],props:{shareRequestValue:{type:Object,required:!1},fileInfo:{type:Object,required:!0},share:{type:Object,required:!0}},data:()=>({writeNoteToRecipientIsChecked:!1,sharingPermission:Qt.ALL.toString(),revertSharingPermission:Qt.ALL.toString(),setCustomPermissions:!1,passwordError:!1,advancedSectionAccordionExpanded:!1,bundledPermissions:Qt,isFirstComponentLoad:!0,test:!1,creating:!1,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}),computed:{title(){switch(this.share.type){case this.SHARE_TYPES.SHARE_TYPE_USER:return t("files_sharing","Share with {userName}",{userName:this.share.shareWithDisplayName});case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return t("files_sharing","Share with email {email}",{email:this.share.shareWith});case this.SHARE_TYPES.SHARE_TYPE_LINK:return t("files_sharing","Share link");case this.SHARE_TYPES.SHARE_TYPE_GROUP:return t("files_sharing","Share with group");case this.SHARE_TYPES.SHARE_TYPE_ROOM:return t("files_sharing","Share in conversation");case this.SHARE_TYPES.SHARE_TYPE_REMOTE:{const[e,i]=this.share.shareWith.split("@");return t("files_sharing","Share with {user} on remote server {server}",{user:e,server:i})}case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:return t("files_sharing","Share with remote group");case this.SHARE_TYPES.SHARE_TYPE_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(t){this.updateAtomicPermissions({isEditChecked:t})}},canCreate:{get(){return this.share.hasCreatePermission},set(t){this.updateAtomicPermissions({isCreateChecked:t})}},canDelete:{get(){return this.share.hasDeletePermission},set(t){this.updateAtomicPermissions({isDeleteChecked:t})}},canReshare:{get(){return this.share.hasSharePermission},set(t){this.updateAtomicPermissions({isReshareChecked:t})}},canDownload:{get(){var t;return(null===(t=this.share.attributes.find((t=>"download"===t.key)))||void 0===t?void 0:t.enabled)||!1},set(t){const e=this.share.attributes.find((t=>"download"===t.key));e&&(e.enabled=t)}},hasRead:{get(){return this.share.hasReadPermission},set(t){this.updateAtomicPermissions({isReadChecked:t})}},hasExpirationDate:{get(){return this.isValidShareAttribute(this.share.expireDate)},set(t){this.share.expireDate=t?this.formatDateToString(this.defaultExpiryDate):""}},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(t){t?(this.share.password=await Dt(),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===this.SHARE_TYPES.SHARE_TYPE_USER},isGroupShare(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP},isNewShare(){return!this.share.id},allowsFileDrop(){return!(!this.isFolder||!this.config.isPublicUploadEnabled||this.share.type!==this.SHARE_TYPES.SHARE_TYPE_LINK&&this.share.type!==this.SHARE_TYPES.SHARE_TYPE_EMAIL)},hasFileDropPermissions(){return this.share.permissions===this.bundledPermissions.FILE_DROP},shareButtonText(){return this.isNewShare?t("files_sharing","Save share"):t("files_sharing","Update share")},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===this.SHARE_TYPES.SHARE_TYPE_LINK||this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL)},hasUnsavedPassword(){return void 0!==this.share.newPassword},passwordExpirationTime(){if(!this.isValidShareAttribute(this.share.passwordExpirationTime))return null;const t=moment(this.share.passwordExpirationTime);return!(t.diff(moment())<0)&&t.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(t){this.share.sendPasswordByTalk=t}},isEmailShareType(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPublicShare||!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword||void 0===OC.appswebroots.spreed)},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((t=>"download"===t.key&&"permissions"===t.scope&&!1===t.enabled))},customPermissionsList(){const t={[Zt.READ]:this.t("files_sharing","Read"),[Zt.CREATE]:this.t("files_sharing","Create"),[Zt.UPDATE]:this.t("files_sharing","Edit"),[Zt.SHARE]:this.t("files_sharing","Share"),[Zt.DELETE]:this.t("files_sharing","Delete")};return[Zt.READ,Zt.CREATE,Zt.UPDATE,Zt.SHARE,Zt.DELETE].filter((t=>{return e=this.share.permissions,i=t,e!==Zt.NONE&&(e&i)===i;var e,i})).map(((e,i)=>0===i?t[e]:t[e].toLocaleLowerCase((0,ii.Z0)()))).join(", ")},advancedControlExpandedValue(){return this.advancedSectionAccordionExpanded?"true":"false"},errorPasswordLabel(){if(this.passwordError)return t("files_sharing","Password field can't be empty")},externalLinkActions(){return this.ExternalShareActions.actions.filter((t=>(t.shareType.includes(ot.Z.SHARE_TYPE_LINK)||t.shareType.includes(ot.Z.SHARE_TYPE_EMAIL))&&t.advanced))}},watch:{setCustomPermissions(t){this.sharingPermission=t?"custom":this.revertSharingPermission}},beforeMount(){this.initializePermissions(),this.initializeAttributes(),Gt.debug("Share object received",{share:this.share}),Gt.debug("Configuration object received",{config:this.config})},mounted(){var t;null===(t=this.$refs.quickPermissions)||void 0===t||null===(t=t.querySelector("input:checked"))||void 0===t||t.focus()},methods:{updateAtomicPermissions(){let{isReadChecked:t=this.hasRead,isEditChecked:e=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=0|(t?Zt.READ:0)|(i?Zt.CREATE:0)|(r?Zt.DELETE:0)|(e?Zt.UPDATE:0)|(n?Zt.SHARE:0);this.share.permissions=s},expandCustomPermissions(){this.advancedSectionAccordionExpanded||(this.advancedSectionAccordionExpanded=!0),this.toggleCustomPermissions()},toggleCustomPermissions(t){const e="custom"===this.sharingPermission;this.revertSharingPermission=e?"custom":t,this.setCustomPermissions=e},async initializeAttributes(){if(this.isNewShare)return this.isPasswordEnforced&&this.isPublicShare&&(this.$set(this.share,"newPassword",await Dt()),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)},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 t=this.config.defaultPermissions;t===Qt.READ_ONLY||t===Qt.ALL?this.sharingPermission=t.toString():(this.sharingPermission="custom",this.share.permissions=t,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(){var t;const e=["permissions","attributes","note","expireDate"];this.isPublicShare&&e.push("label","password","hideDownload");const i=parseInt(this.sharingPermission);if(this.setCustomPermissions?this.updateAtomicPermissions():this.share.permissions=i,this.isFolder||this.share.permissions!==Qt.ALL||(this.share.permissions=Qt.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.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 e=await this.addShare(t);this.creating=!1,this.share=e,this.$emit("add:share",this.share)}else this.$emit("update:share",this.share),this.queueUpdate(...e);await this.getNode(),(0,It.Ic)("files:node:updated",this.node),(null===(t=this.$refs.externalLinkActions)||void 0===t?void 0:t.length)>0&&await Promise.allSettled(this.$refs.externalLinkActions.map((t=>{var e,i,r;return"function"!=typeof(null===(e=t.$children.at(0))||void 0===e?void 0:e.onSave)?Promise.resolve():null===(i=t.$children.at(0))||void 0===i||null===(r=i.onSave)||void 0===r?void 0:r.call(i)}))),this.$emit("close-sharing-details")},async addShare(t){Gt.debug("Adding a new share from the input for",{share:t});const e=this.path;try{return await this.createShare({path:e,shareType:t.shareType,shareWith:t.shareWith,permissions:t.permissions,expireDate:t.expireDate,attributes:JSON.stringify(t.attributes),...t.note?{note:t.note}:{},...t.password?{password:t.password}:{}})}catch(t){Gt.error("Error while adding new share",{error:t})}},async removeShare(){await this.onDelete(),await this.getNode(),(0,It.Ic)("files:node:updated",this.node),this.$emit("close-sharing-details")},onPasswordChange(t){this.passwordError=!this.isValidShareAttribute(t),this.$set(this.share,"newPassword",t)},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},isValidShareAttribute:t=>![null,void 0].includes(t)&&t.trim().length>0,getShareTypeIcon(t){switch(t){case this.SHARE_TYPES.SHARE_TYPE_LINK:return di.A;case this.SHARE_TYPES.SHARE_TYPE_GUEST:return mi;case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return pi.A;case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return ui;case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return ci;case this.SHARE_TYPES.SHARE_TYPE_ROOM:case this.SHARE_TYPES.SHARE_TYPE_DECK:case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return Ai;default:return null}}}};var bi=r(28067),Si={};Si.styleTagTransform=A(),Si.setAttributes=u(),Si.insert=c().bind(null,"head"),Si.domAPI=o(),Si.insertStyleElement=p(),s()(bi.A,Si),bi.A&&bi.A.locals&&bi.A.locals;const xi=(0,pt.A)(Ei,(function(){var t,e=this,i=e._self._c;return i("div",{staticClass:"sharingTabDetailsView"},[i("div",{staticClass:"sharingTabDetailsView__header"},[i("span",[e.isUserShare?i("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.shareType!==e.SHARE_TYPES.SHARE_TYPE_USER,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}):e._e(),e._v(" "),i(e.getShareTypeIcon(e.share.type),{tag:"component",attrs:{size:32}})],1),e._v(" "),i("span",[i("h1",[e._v(e._s(e.title))])])]),e._v(" "),i("div",{staticClass:"sharingTabDetailsView__wrapper"},[i("div",{ref:"quickPermissions",staticClass:"sharingTabDetailsView__quick-permissions"},[i("div",[i("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[i("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(" "),i("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[i("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?i("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[i("UploadIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,1083194048)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","File drop"))+"\n\t\t\t\t\t"),i("small",{staticClass:"subline"},[e._v(e._s(e.t("files_sharing","Upload only")))])]):e._e(),e._v(" "),i("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[i("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"),i("small",{staticClass:"subline"},[e._v(e._s(e.customPermissionsList))])])],1)]),e._v(" "),i("div",{staticClass:"sharingTabDetailsView__advanced-control"},[i("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?i("MenuUpIcon"):i("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?i("div",{staticClass:"sharingTabDetailsView__advanced",attrs:{id:"advancedSectionAccordionAdvanced","aria-labelledby":"advancedSectionAccordionAdvancedControl",role:"region"}},[i("section",[e.isPublicShare?i("NcInputField",{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.isPublicShare?[i("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?i("NcPasswordField",{attrs:{autocomplete:"new-password",value:e.hasUnsavedPassword?e.share.newPassword:"",error:e.passwordError,"helper-text":e.errorPasswordLabel,required:e.isPasswordEnforced,label:e.t("files_sharing","Password")},on:{"update:value":e.onPasswordChange}}):e._e(),e._v(" "),e.isEmailShareType&&e.passwordExpirationTime?i("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?i("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?i("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(" "),i("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?i("NcDateTimePickerNative",{attrs:{id:"share-date-picker",value:new Date(null!==(t=e.share.expireDate)&&void 0!==t?t:e.dateTomorrow),min:e.dateTomorrow,max:e.maxExpirationDateEnforced,"hide-label":!0,placeholder:e.t("files_sharing","Expiration date"),type:"date"},on:{input:e.onExpirationChange}}):e._e(),e._v(" "),e.isPublicShare?i("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")]):e._e(),e._v(" "),e.isPublicShare?e._e():i("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"))+"\n\t\t\t\t")]),e._v(" "),i("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?[i("label",{attrs:{for:"share-note-textarea"}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Enter a note for the share recipient"))+"\n\t\t\t\t\t")]),e._v(" "),i("textarea",{attrs:{id:"share-note-textarea"},domProps:{value:e.share.note},on:{input:function(t){e.share.note=t.target.value}}})]:e._e(),e._v(" "),e._l(e.externalLinkActions,(function(t){return i("ExternalShareAction",{key:t.id,ref:"externalLinkActions",refInFor:!0,attrs:{id:t.id,action:t,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),i("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?i("section",{staticClass:"custom-permissions-group"},[i("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?i("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(" "),i("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.config.isResharingAllowed&&e.share.type!==e.SHARE_TYPES.SHARE_TYPE_LINK?i("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(" "),i("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(" "),i("div",{staticClass:"sharingTabDetailsView__delete"},[e.isNewShare?e._e():i("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[i("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(" "),i("div",{staticClass:"sharingTabDetailsView__footer"},[i("div",{staticClass:"button-group"},[i("NcButton",{attrs:{"data-cy-files-sharing-share-editor-action":"cancel"},on:{click:function(t){return e.$emit("close-sharing-details")}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t\t")]),e._v(" "),i("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[i("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,"6ee48c7b",null).exports;var Ti=r(96763);const Pi={name:"SharingTab",components:{NcAvatar:v.A,CollectionList:it,SharingEntryInternal:St,SharingEntrySimple:_t,SharingInherited:le,SharingInput:Vt,SharingLinkList:$e,SharingList:ei,SharingDetailsTab:xi},mixins:[ht],data:()=>({config:new at,deleteEvent:null,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,nt.C)("core","projects_enabled",!1),showSharingDetailsView:!1,shareDetailsData:{},returnFocusElement:null}),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(t){this.fileInfo=t,this.resetState(),this.getShares()},async getShares(){try{this.loading=!0;const t=(0,rt.KT)("apps/files_sharing/api/v1/shares"),e="json",i=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),r=W.Ay.get(t,{params:{format:e,path:i,reshares:!0}}),n=W.Ay.get(t,{params:{format:e,path:i,shared_with_me:!0}}),[s,a]=await Promise.all([r,n]);this.loading=!1,this.processSharedWithMe(a),this.processShares(s)}catch(i){var e;null!==(e=i.response.data)&&void 0!==e&&null!==(e=e.ocs)&&void 0!==e&&null!==(e=e.meta)&&void 0!==e&&e.message?this.error=i.response.data.ocs.meta.message:this.error=t("files_sharing","Unable to load the shares list"),this.loading=!1,Ti.error("Error loading the shares list",i)}},resetState(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[],this.showSharingDetailsView=!1,this.shareDetailsData={}},updateExpirationSubtitle(e){const i=moment(e.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*i)})),moment().unix()>i&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares(t){let{data:e}=t;if(e.ocs&&e.ocs.data&&e.ocs.data.length>0){const t=e.ocs.data.map((t=>new ct(t))).sort(((t,e)=>e.createdTime-t.createdTime));this.linkShares=t.filter((t=>t.type===this.SHARE_TYPES.SHARE_TYPE_LINK||t.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL)),this.shares=t.filter((t=>t.type!==this.SHARE_TYPES.SHARE_TYPE_LINK&&t.type!==this.SHARE_TYPES.SHARE_TYPE_EMAIL)),Ti.debug("Processed",this.linkShares.length,"link share(s)"),Ti.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 ct(i),r=function(e){return e.type===ot.Z.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===ot.Z.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===ot.Z.SHARE_TYPE_ROOM?e.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1})}(e),n=e.ownerDisplayName,s=e.owner;this.sharedWithMe={displayName:n,title:r,user:s},this.reshare=e,e.expireDate&&moment(e.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(e),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,e))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{};t.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(t):this.shares.unshift(t),this.awaitForShare(t,e)},removeShare(t){const e=t.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL||t.type===this.SHARE_TYPES.SHARE_TYPE_LINK?this.linkShares:this.shares,i=e.findIndex((e=>e.id===t.id));-1!==i&&e.splice(i,1)},awaitForShare(t,e){this.$nextTick((()=>{let i=this.$refs.shareList;t.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(i=this.$refs.linkShareList);const r=i.$children.find((e=>e.share===t));r&&e(r)}))},toggleShareDetailsView(t){if(!this.showSharingDetailsView)if(Array.from(document.activeElement.classList).some((t=>t.startsWith("action-")))){var e;const t=null===(e=document.activeElement.closest('[role="menu"]'))||void 0===e?void 0:e.id;this.returnFocusElement=document.querySelector('[aria-controls="'.concat(t,'"]'))}else this.returnFocusElement=document.activeElement;t&&(this.shareDetailsData=t),this.showSharingDetailsView=!this.showSharingDetailsView,this.showSharingDetailsView||this.$nextTick((()=>{var t;null===(t=this.returnFocusElement)||void 0===t||t.focus(),this.returnFocusElement=null}))}}},ki=Pi;var Ri=r(3316),Di={};Di.styleTagTransform=A(),Di.setAttributes=u(),Di.insert=c().bind(null,"head"),Di.domAPI=o(),Di.insertStyleElement=p(),s()(Ri.A,Di),Ri.A&&Ri.A.locals&&Ri.A.locals;const Ii=(0,pt.A)(ki,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"sharingTab",class:{"icon-loading":t.loading}},[t.error?e("div",{staticClass:"emptycontent",class:{emptyContentWithSections:t.sections.length>0}},[e("div",{staticClass:"icon icon-error"}),t._v(" "),e("h2",[t._v(t._s(t.error))])]):t._e(),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.showSharingDetailsView,expression:"!showSharingDetailsView"}],staticClass:"sharingTab__content"},[e("ul",[t.isSharedWithMe?e("SharingEntrySimple",t._b({staticClass:"sharing-entry__reshare",scopedSlots:t._u([{key:"avatar",fn:function(){return[e("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:t.sharedWithMe.user,"display-name":t.sharedWithMe.displayName}})]},proxy:!0}],null,!1,3197855346)},"SharingEntrySimple",t.sharedWithMe,!1)):t._e()],1),t._v(" "),t.loading?t._e():e("SharingInput",{attrs:{"can-reshare":t.canReshare,"file-info":t.fileInfo,"link-shares":t.linkShares,reshare:t.reshare,shares:t.shares},on:{"open-sharing-details":t.toggleShareDetailsView}}),t._v(" "),t.loading?t._e():e("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":t.canReshare,"file-info":t.fileInfo,shares:t.linkShares},on:{"open-sharing-details":t.toggleShareDetailsView}}),t._v(" "),t.loading?t._e():e("SharingList",{ref:"shareList",attrs:{shares:t.shares,"file-info":t.fileInfo},on:{"open-sharing-details":t.toggleShareDetailsView}}),t._v(" "),t.canReshare&&!t.loading?e("SharingInherited",{attrs:{"file-info":t.fileInfo}}):t._e(),t._v(" "),e("SharingEntryInternal",{attrs:{"file-info":t.fileInfo}}),t._v(" "),t.projectsEnabled&&t.fileInfo?e("CollectionList",{attrs:{id:"".concat(t.fileInfo.id),type:"file",name:t.fileInfo.name}}):t._e()],1),t._v(" "),t._l(t.sections,(function(i,r){return e("div",{directives:[{name:"show",rawName:"v-show",value:!t.showSharingDetailsView,expression:"!showSharingDetailsView"}],key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[e(i(t.$refs["section-"+r],t.fileInfo),{tag:"component",attrs:{"file-info":t.fileInfo}})],1)})),t._v(" "),t.showSharingDetailsView?e("SharingDetailsTab",{attrs:{"file-info":t.shareDetailsData.fileInfo,share:t.shareDetailsData.share},on:{"close-sharing-details":t.toggleShareDetailsView,"add:share":t.addShare,"remove:share":t.removeShare}}):t._e()],2)}),[],!1,null,"a65c443a",null).exports},27518:t=>{"use strict";t.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:t=>{"use strict";t.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:t=>{"use strict";t.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:t=>{"use strict";t.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"}}]); -//# sourceMappingURL=2773-2773.js.map?v=883944effbd72c3fcc3c
\ No newline at end of file +/*! For license information please see 1356-1356.js.LICENSE.txt */ +(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[1356],{17816:function(t,e,i){var r=i(96763);t.exports=function(){"use strict";function t(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}var e=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(e,i){var n;n=function(){return function e(i,r,n){function s(o,l){if(!r[o]){if(!i[o]){if(!l&&t)return t();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(t){return s(i[o][1][t]||t)}),h,h.exports,e,i,r,n)}return r[o].exports}for(var a=t,o=0;o<n.length;o++)s(n[o]);return s}({1:[function(t,e,i){e.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},{}],2:[function(t,e,i){var r=t("./utils").getSymbolSize;i.getRowColCoords=function(t){if(1===t)return[];for(var e=Math.floor(t/7)+2,i=r(t),n=145===i?26:2*Math.ceil((i-13)/(2*e-2)),s=[i-7],a=1;a<e-1;a++)s[a]=s[a-1]-n;return s.push(6),s.reverse()},i.getPositions=function(t){for(var e=[],r=i.getRowColCoords(t),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||e.push([r[s],r[a]]);return e}},{"./utils":21}],3:[function(t,e,i){var r=t("./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(t){this.mode=r.ALPHANUMERIC,this.data=t}s.getBitsLength=function(t){return 11*Math.floor(t/2)+t%2*6},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(t){var e;for(e=0;e+2<=this.data.length;e+=2){var i=45*n.indexOf(this.data[e]);i+=n.indexOf(this.data[e+1]),t.put(i,11)}this.data.length%2&&t.put(n.indexOf(this.data[e]),6)},e.exports=s},{"./mode":14}],4:[function(t,e,i){function r(){this.buffer=[],this.length=0}r.prototype={get:function(t){var e=Math.floor(t/8);return 1==(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(var i=0;i<e;i++)this.putBit(1==(t>>>e-i-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}},e.exports=r},{}],5:[function(t,e,i){var r=t("../utils/buffer");function n(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=r.alloc(t*t),this.reservedBit=r.alloc(t*t)}n.prototype.set=function(t,e,i,r){var n=t*this.size+e;this.data[n]=i,r&&(this.reservedBit[n]=!0)},n.prototype.get=function(t,e){return this.data[t*this.size+e]},n.prototype.xor=function(t,e,i){this.data[t*this.size+e]^=i},n.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]},e.exports=n},{"../utils/buffer":28}],6:[function(t,e,i){var r=t("../utils/buffer"),n=t("./mode");function s(t){this.mode=n.BYTE,this.data=r.from(t)}s.getBitsLength=function(t){return 8*t},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(t){for(var e=0,i=this.data.length;e<i;e++)t.put(this.data[e],8)},e.exports=s},{"../utils/buffer":28,"./mode":14}],7:[function(t,e,i){var r=t("./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(t,e){switch(e){case r.L:return n[4*(t-1)+0];case r.M:return n[4*(t-1)+1];case r.Q:return n[4*(t-1)+2];case r.H:return n[4*(t-1)+3];default:return}},i.getTotalCodewordsCount=function(t,e){switch(e){case r.L:return s[4*(t-1)+0];case r.M:return s[4*(t-1)+1];case r.Q:return s[4*(t-1)+2];case r.H:return s[4*(t-1)+3];default:return}}},{"./error-correction-level":8}],8:[function(t,e,i){i.L={bit:1},i.M={bit:0},i.Q={bit:3},i.H={bit:2},i.isValid=function(t){return t&&void 0!==t.bit&&t.bit>=0&&t.bit<4},i.from=function(t,e){if(i.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.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: "+t)}}(t)}catch(t){return e}}},{}],9:[function(t,e,i){var r=t("./utils").getSymbolSize;i.getPositions=function(t){var e=r(t);return[[0,0],[e-7,0],[0,e-7]]}},{"./utils":21}],10:[function(t,e,i){var r=t("./utils"),n=r.getBCHDigit(1335);i.getEncodedBits=function(t,e){for(var i=t.bit<<3|e,s=i<<10;r.getBCHDigit(s)-n>=0;)s^=1335<<r.getBCHDigit(s)-n;return 21522^(i<<10|s)}},{"./utils":21}],11:[function(t,e,i){var r=t("../utils/buffer"),n=r.alloc(512),s=r.alloc(256);!function(){for(var t=1,e=0;e<255;e++)n[e]=t,s[t]=e,256&(t<<=1)&&(t^=285);for(e=255;e<512;e++)n[e]=n[e-255]}(),i.log=function(t){if(t<1)throw new Error("log("+t+")");return s[t]},i.exp=function(t){return n[t]},i.mul=function(t,e){return 0===t||0===e?0:n[s[t]+s[e]]}},{"../utils/buffer":28}],12:[function(t,e,i){var r=t("./mode"),n=t("./utils");function s(t){this.mode=r.KANJI,this.data=t}s.getBitsLength=function(t){return 13*t},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(t){var e;for(e=0;e<this.data.length;e++){var i=n.toSJIS(this.data[e]);if(i>=33088&&i<=40956)i-=33088;else{if(!(i>=57408&&i<=60351))throw new Error("Invalid SJIS character: "+this.data[e]+"\nMake sure your charset is UTF-8");i-=49472}i=192*(i>>>8&255)+(255&i),t.put(i,13)}},e.exports=s},{"./mode":14,"./utils":21}],13:[function(t,e,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(t,e,r){switch(t){case i.Patterns.PATTERN000:return(e+r)%2==0;case i.Patterns.PATTERN001:return e%2==0;case i.Patterns.PATTERN010:return r%3==0;case i.Patterns.PATTERN011:return(e+r)%3==0;case i.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(r/3))%2==0;case i.Patterns.PATTERN101:return e*r%2+e*r%3==0;case i.Patterns.PATTERN110:return(e*r%2+e*r%3)%2==0;case i.Patterns.PATTERN111:return(e*r%3+(e+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}}i.isValid=function(t){return null!=t&&""!==t&&!isNaN(t)&&t>=0&&t<=7},i.from=function(t){return i.isValid(t)?parseInt(t,10):void 0},i.getPenaltyN1=function(t){for(var e=t.size,i=0,n=0,s=0,a=null,o=null,l=0;l<e;l++){n=s=0,a=o=null;for(var c=0;c<e;c++){var h=t.get(l,c);h===a?n++:(n>=5&&(i+=r+(n-5)),a=h,n=1),(h=t.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(t){for(var e=t.size,i=0,r=0;r<e-1;r++)for(var s=0;s<e-1;s++){var a=t.get(r,s)+t.get(r,s+1)+t.get(r+1,s)+t.get(r+1,s+1);4!==a&&0!==a||i++}return i*n},i.getPenaltyN3=function(t){for(var e=t.size,i=0,r=0,n=0,a=0;a<e;a++){r=n=0;for(var o=0;o<e;o++)r=r<<1&2047|t.get(a,o),o>=10&&(1488===r||93===r)&&i++,n=n<<1&2047|t.get(o,a),o>=10&&(1488===n||93===n)&&i++}return i*s},i.getPenaltyN4=function(t){for(var e=0,i=t.data.length,r=0;r<i;r++)e+=t.data[r];return Math.abs(Math.ceil(100*e/i/5)-10)*a},i.applyMask=function(t,e){for(var i=e.size,r=0;r<i;r++)for(var n=0;n<i;n++)e.isReserved(n,r)||e.xor(n,r,o(t,n,r))},i.getBestMask=function(t,e){for(var r=Object.keys(i.Patterns).length,n=0,s=1/0,a=0;a<r;a++){e(a),i.applyMask(a,t);var o=i.getPenaltyN1(t)+i.getPenaltyN2(t)+i.getPenaltyN3(t)+i.getPenaltyN4(t);i.applyMask(a,t),o<s&&(s=o,n=a)}return n}},{}],14:[function(t,e,i){var r=t("./version-check"),n=t("./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(t,e){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!r.isValid(e))throw new Error("Invalid version: "+e);return e>=1&&e<10?t.ccBits[0]:e<27?t.ccBits[1]:t.ccBits[2]},i.getBestModeForData=function(t){return n.testNumeric(t)?i.NUMERIC:n.testAlphanumeric(t)?i.ALPHANUMERIC:n.testKanji(t)?i.KANJI:i.BYTE},i.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},i.isValid=function(t){return t&&t.bit&&t.ccBits},i.from=function(t,e){if(i.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.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: "+t)}}(t)}catch(t){return e}}},{"./regex":19,"./version-check":22}],15:[function(t,e,i){var r=t("./mode");function n(t){this.mode=r.NUMERIC,this.data=t.toString()}n.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%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(t){var e,i,r;for(e=0;e+3<=this.data.length;e+=3)i=this.data.substr(e,3),r=parseInt(i,10),t.put(r,10);var n=this.data.length-e;n>0&&(i=this.data.substr(e),r=parseInt(i,10),t.put(r,3*n+1))},e.exports=n},{"./mode":14}],16:[function(t,e,i){var r=t("../utils/buffer"),n=t("./galois-field");i.mul=function(t,e){for(var i=r.alloc(t.length+e.length-1),s=0;s<t.length;s++)for(var a=0;a<e.length;a++)i[s+a]^=n.mul(t[s],e[a]);return i},i.mod=function(t,e){for(var i=r.from(t);i.length-e.length>=0;){for(var s=i[0],a=0;a<e.length;a++)i[a]^=n.mul(e[a],s);for(var o=0;o<i.length&&0===i[o];)o++;i=i.slice(o)}return i},i.generateECPolynomial=function(t){for(var e=r.from([1]),s=0;s<t;s++)e=i.mul(e,[1,n.exp(s)]);return e}},{"../utils/buffer":28,"./galois-field":11}],17:[function(t,e,i){var r=t("../utils/buffer"),n=t("./utils"),s=t("./error-correction-level"),a=t("./bit-buffer"),o=t("./bit-matrix"),l=t("./alignment-pattern"),c=t("./finder-pattern"),h=t("./mask-pattern"),u=t("./error-correction-code"),d=t("./reed-solomon-encoder"),p=t("./version"),f=t("./format-info"),A=t("./mode"),g=t("./segments"),m=t("isarray");function v(t,e,i){var r,n,s=t.size,a=f.getEncodedBits(e,i);for(r=0;r<15;r++)n=1==(a>>r&1),r<6?t.set(r,8,n,!0):r<8?t.set(r+1,8,n,!0):t.set(s-15+r,8,n,!0),r<8?t.set(8,s-r-1,n,!0):r<9?t.set(8,15-r-1+1,n,!0):t.set(8,15-r-1,n,!0);t.set(s-8,8,1,!0)}function _(t,e,i){var s=new a;i.forEach((function(e){s.put(e.mode.bit,4),s.put(e.getLength(),A.getCharCountIndicator(e.mode,t)),e.write(s)}));var o=8*(n.getSymbolTotalCodewords(t)-u.getTotalCodewordsCount(t,e));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(t,e,i){for(var s=n.getSymbolTotalCodewords(e),a=s-u.getTotalCodewordsCount(e,i),o=u.getBlocksCount(e,i),l=o-s%o,c=Math.floor(s/o),h=Math.floor(a/o),p=h+1,f=c-h,A=new d(f),g=0,m=new Array(o),v=new Array(o),_=0,y=r.from(t.buffer),C=0;C<o;C++){var w=C<l?h:p;m[C]=y.slice(g,g+w),v[C]=A.encode(m[C]),g+=w,_=Math.max(_,w)}var E,b,S=r.alloc(s),x=0;for(E=0;E<_;E++)for(b=0;b<o;b++)E<m[b].length&&(S[x++]=m[b][E]);for(E=0;E<f;E++)for(b=0;b<o;b++)S[x++]=v[b][E];return S}(s,t,e)}function y(t,e,i,r){var s;if(m(t))s=g.fromArray(t);else{if("string"!=typeof t)throw new Error("Invalid data");var a=e;if(!a){var u=g.rawSplit(t);a=p.getBestVersionForData(u,i)}s=g.fromString(t,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(e){if(e<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 e=d;var f=_(e,i,s),A=n.getSymbolSize(e),y=new o(A);return function(t,e){for(var i=t.size,r=c.getPositions(e),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?t.set(s+o,a+l,!0,!0):t.set(s+o,a+l,!1,!0))}(y,e),function(t){for(var e=t.size,i=8;i<e-8;i++){var r=i%2==0;t.set(i,6,r,!0),t.set(6,i,r,!0)}}(y),function(t,e){for(var i=l.getPositions(e),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?t.set(n+a,s+o,!0,!0):t.set(n+a,s+o,!1,!0)}(y,e),v(y,i,0),e>=7&&function(t,e){for(var i,r,n,s=t.size,a=p.getEncodedBits(e),o=0;o<18;o++)i=Math.floor(o/3),r=o%3+s-8-3,n=1==(a>>o&1),t.set(i,r,n,!0),t.set(r,i,n,!0)}(y,e),function(t,e){for(var i=t.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(!t.isReserved(n,o-l)){var c=!1;a<e.length&&(c=1==(e[a]>>>s&1)),t.set(n,o-l,c),-1==--s&&(a++,s=7)}if((n+=r)<0||i<=n){n-=r,r=-r;break}}}(y,f),isNaN(r)&&(r=h.getBestMask(y,v.bind(null,y,i))),h.applyMask(r,y),v(y,i,r),{modules:y,version:e,errorCorrectionLevel:i,maskPattern:r,segments:s}}i.create=function(t,e){if(void 0===t||""===t)throw new Error("No input text");var i,r,a=s.M;return void 0!==e&&(a=s.from(e.errorCorrectionLevel,s.M),i=p.from(e.version),r=h.from(e.maskPattern),e.toSJISFunc&&n.setToSJISFunction(e.toSJISFunc)),y(t,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(t,e,i){var r=t("../utils/buffer"),n=t("./polynomial"),s=t("buffer").Buffer;function a(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}a.prototype.initialize=function(t){this.degree=t,this.genPoly=n.generateECPolynomial(this.degree)},a.prototype.encode=function(t){if(!this.genPoly)throw new Error("Encoder not initialized");var e=r.alloc(this.degree),i=s.concat([t,e],t.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},e.exports=a},{"../utils/buffer":28,"./polynomial":16,buffer:30}],19:[function(t,e,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(t){return a.test(t)},i.testNumeric=function(t){return o.test(t)},i.testAlphanumeric=function(t){return l.test(t)}},{}],20:[function(t,e,i){var r=t("./mode"),n=t("./numeric-data"),s=t("./alphanumeric-data"),a=t("./byte-data"),o=t("./kanji-data"),l=t("./regex"),c=t("./utils"),h=t("dijkstrajs");function u(t){return unescape(encodeURIComponent(t)).length}function d(t,e,i){for(var r,n=[];null!==(r=t.exec(i));)n.push({data:r[0],index:r.index,mode:e,length:r[0].length});return n}function p(t){var e,i,n=d(l.NUMERIC,r.NUMERIC,t),s=d(l.ALPHANUMERIC,r.ALPHANUMERIC,t);return c.isKanjiModeEnabled()?(e=d(l.BYTE,r.BYTE,t),i=d(l.KANJI,r.KANJI,t)):(e=d(l.BYTE_KANJI,r.BYTE,t),i=[]),n.concat(s,e,i).sort((function(t,e){return t.index-e.index})).map((function(t){return{data:t.data,mode:t.mode,length:t.length}}))}function f(t,e){switch(e){case r.NUMERIC:return n.getBitsLength(t);case r.ALPHANUMERIC:return s.getBitsLength(t);case r.KANJI:return o.getBitsLength(t);case r.BYTE:return a.getBitsLength(t)}}function A(t,e){var i,l=r.getBestModeForData(t);if((i=r.from(e,l))!==r.BYTE&&i.bit<l.bit)throw new Error('"'+t+'" 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(t);case r.ALPHANUMERIC:return new s(t);case r.KANJI:return new o(t);case r.BYTE:return new a(t)}}i.fromArray=function(t){return t.reduce((function(t,e){return"string"==typeof e?t.push(A(e,null)):e.data&&t.push(A(e.data,e.mode)),t}),[])},i.fromString=function(t,e){for(var n=function(t,e){for(var i={},n={start:{}},s=["start"],a=0;a<t.length;a++){for(var o=t[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,e))}}s=l}for(d=0;d<s.length;d++)n[s[d]].end=0;return{map:n,table:i}}(function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];switch(n.mode){case r.NUMERIC:e.push([n,{data:n.data,mode:r.ALPHANUMERIC,length:n.length},{data:n.data,mode:r.BYTE,length:n.length}]);break;case r.ALPHANUMERIC:e.push([n,{data:n.data,mode:r.BYTE,length:n.length}]);break;case r.KANJI:e.push([n,{data:n.data,mode:r.BYTE,length:u(n.data)}]);break;case r.BYTE:e.push([{data:n.data,mode:r.BYTE,length:u(n.data)}])}}return e}(p(t,c.isKanjiModeEnabled())),e),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(t,e){var i=t.length-1>=0?t[t.length-1]:null;return i&&i.mode===e.mode?(t[t.length-1].data+=e.data,t):(t.push(e),t)}),[]))},i.rawSplit=function(t){return i.fromArray(p(t,c.isKanjiModeEnabled()))}},{"./alphanumeric-data":3,"./byte-data":6,"./kanji-data":12,"./mode":14,"./numeric-data":15,"./regex":19,"./utils":21,dijkstrajs:31}],21:[function(t,e,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(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return 4*t+17},i.getSymbolTotalCodewords=function(t){return n[t]},i.getBCHDigit=function(t){for(var e=0;0!==t;)e++,t>>>=1;return e},i.setToSJISFunction=function(t){if("function"!=typeof t)throw new Error('"toSJISFunc" is not a valid function.');r=t},i.isKanjiModeEnabled=function(){return void 0!==r},i.toSJIS=function(t){return r(t)}},{}],22:[function(t,e,i){i.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}},{}],23:[function(t,e,i){var r=t("./utils"),n=t("./error-correction-code"),s=t("./error-correction-level"),a=t("./mode"),o=t("./version-check"),l=t("isarray"),c=r.getBCHDigit(7973);function h(t,e){return a.getCharCountIndicator(t,e)+4}function u(t,e){var i=0;return t.forEach((function(t){var r=h(t.mode,e);i+=r+t.getBitsLength()})),i}i.from=function(t,e){return o.isValid(t)?parseInt(t,10):e},i.getCapacity=function(t,e,i){if(!o.isValid(t))throw new Error("Invalid QR Code version");void 0===i&&(i=a.BYTE);var s=8*(r.getSymbolTotalCodewords(t)-n.getTotalCodewordsCount(t,e));if(i===a.MIXED)return s;var l=s-h(i,t);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(t,e){var r,n=s.from(e,s.M);if(l(t)){if(t.length>1)return function(t,e){for(var r=1;r<=40;r++)if(u(t,r)<=i.getCapacity(r,e,a.MIXED))return r}(t,n);if(0===t.length)return 1;r=t[0]}else r=t;return function(t,e,r){for(var n=1;n<=40;n++)if(e<=i.getCapacity(n,r,t))return n}(r.mode,r.getLength(),n)},i.getEncodedBits=function(t){if(!o.isValid(t)||t<7)throw new Error("Invalid QR Code version");for(var e=t<<12;r.getBCHDigit(e)-c>=0;)e^=7973<<r.getBCHDigit(e)-c;return t<<12|e}},{"./error-correction-code":7,"./error-correction-level":8,"./mode":14,"./utils":21,"./version-check":22,isarray:33}],24:[function(t,e,i){var r=t("./can-promise"),n=t("./core/qrcode"),s=t("./renderer/canvas"),a=t("./renderer/svg-tag.js");function o(t,e,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=e,e=s=void 0):2!==l||e.getContext||(s=i,i=e,e=void 0),new Promise((function(r,a){try{var o=n.create(i,s);r(t(o,e,s))}catch(t){a(t)}}))}if(l<2)throw new Error("Too few arguments provided");2===l?(a=i,i=e,e=s=void 0):3===l&&(e.getContext&&void 0===a?(a=s,s=void 0):(a=s,s=i,i=e,e=void 0));try{var h=n.create(i,s);a(null,t(h,e,s))}catch(t){a(t)}}i.create=n.create,i.toCanvas=o.bind(null,s.render),i.toDataURL=o.bind(null,s.renderToDataURL),i.toString=o.bind(null,(function(t,e,i){return a.render(t,i)}))},{"./can-promise":1,"./core/qrcode":17,"./renderer/canvas":25,"./renderer/svg-tag.js":26}],25:[function(t,e,i){var r=t("./utils");i.render=function(t,e,i){var n=i,s=e;void 0!==n||e&&e.getContext||(n=e,e=void 0),e||(s=function(){try{return document.createElement("canvas")}catch(t){throw new Error("You need to specify a canvas element")}}()),n=r.getOptions(n);var a=r.getImageWidth(t.modules.size,n),o=s.getContext("2d"),l=o.createImageData(a,a);return r.qrToImageData(l.data,t,n),function(t,e,i){t.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=i,e.width=i,e.style.height=i+"px",e.style.width=i+"px"}(o,s,a),o.putImageData(l,0,0),s},i.renderToDataURL=function(t,e,r){var n=r;void 0!==n||e&&e.getContext||(n=e,e=void 0),n||(n={});var s=i.render(t,e,n),a=n.type||"image/png",o=n.rendererOpts||{};return s.toDataURL(a,o.quality)}},{"./utils":27}],26:[function(t,e,i){var r=t("./utils");function n(t,e){var i=t.a/255,r=e+'="'+t.hex+'"';return i<1?r+" "+e+'-opacity="'+i.toFixed(2).slice(1)+'"':r}function s(t,e,i){var r=t+e;return void 0!==i&&(r+=" "+i),r}i.render=function(t,e,i){var a=r.getOptions(e),o=t.modules.size,l=t.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(t,e,i){for(var r="",n=0,a=!1,o=0,l=0;l<t.length;l++){var c=Math.floor(l%e),h=Math.floor(l/e);c||a||(a=!0),t[l]?(o++,l>0&&c>0&&t[l-1]||(r+=a?s("M",c+i,.5+h+i):s("m",n,0),n=0,a=!1),c+1<e&&t[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(t,e,i){function r(t){if("number"==typeof t&&(t=t.toString()),"string"!=typeof t)throw new Error("Color should be defined as hex string");var e=t.slice().replace("#","").split("");if(e.length<3||5===e.length||e.length>8)throw new Error("Invalid hex color: "+t);3!==e.length&&4!==e.length||(e=Array.prototype.concat.apply([],e.map((function(t){return[t,t]})))),6===e.length&&e.push("F","F");var i=parseInt(e.join(""),16);return{r:i>>24&255,g:i>>16&255,b:i>>8&255,a:255&i,hex:"#"+e.slice(0,6).join("")}}i.getOptions=function(t){t||(t={}),t.color||(t.color={});var e=void 0===t.margin||null===t.margin||t.margin<0?4:t.margin,i=t.width&&t.width>=21?t.width:void 0,n=t.scale||4;return{width:i,scale:i?4:n,margin:e,color:{dark:r(t.color.dark||"#000000ff"),light:r(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}},i.getScale=function(t,e){return e.width&&e.width>=t+2*e.margin?e.width/(t+2*e.margin):e.scale},i.getImageWidth=function(t,e){var r=i.getScale(t,e);return Math.floor((t+2*e.margin)*r)},i.qrToImageData=function(t,e,r){for(var n=e.modules.size,s=e.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]),t[d++]=p.r,t[d++]=p.g,t[d++]=p.b,t[d]=p.a}}},{}],28:[function(t,e,i){var r=t("isarray");s.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(t){return!1}}();var n=s.TYPED_ARRAY_SUPPORT?2147483647:1073741823;function s(t,e,i){return s.TYPED_ARRAY_SUPPORT||this instanceof s?"number"==typeof t?l(this,t):function(t,e,i,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,i,r){if(i<0||e.byteLength<i)throw new RangeError("'offset' is out of bounds");if(e.byteLength<i+(r||0))throw new RangeError("'length' is out of bounds");var n;return n=void 0===i&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,i):new Uint8Array(e,i,r),s.TYPED_ARRAY_SUPPORT?n.__proto__=s.prototype:n=c(t,n),n}(t,e,i,r):"string"==typeof e?function(t,e){var i=0|u(e),r=o(t,i),n=r.write(e);return n!==i&&(r=r.slice(0,n)),r}(t,e):function(t,e){if(s.isBuffer(e)){var i=0|a(e.length),r=o(t,i);return 0===r.length||e.copy(r,0,0,i),r}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(n=e.length)!=n?o(t,0):c(t,e);if("Buffer"===e.type&&Array.isArray(e.data))return c(t,e.data)}var n;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}(this,t,e,i):new s(t,e,i)}function a(t){if(t>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function o(t,e){var i;return s.TYPED_ARRAY_SUPPORT?(i=new Uint8Array(e)).__proto__=s.prototype:(null===(i=t)&&(i=new s(e)),i.length=e),i}function l(t,e){var i=o(t,e<0?0:0|a(e));if(!s.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)i[r]=0;return i}function c(t,e){for(var i=e.length<0?0:0|a(e.length),r=o(t,i),n=0;n<i;n+=1)r[n]=255&e[n];return r}function h(t,e){var i;e=e||1/0;for(var r=t.length,n=null,s=[],a=0;a<r;++a){if((i=t.charCodeAt(a))>55295&&i<57344){if(!n){if(i>56319){(e-=3)>-1&&s.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&s.push(239,191,189);continue}n=i;continue}if(i<56320){(e-=3)>-1&&s.push(239,191,189),n=i;continue}i=65536+(n-55296<<10|i-56320)}else n&&(e-=3)>-1&&s.push(239,191,189);if(n=null,i<128){if((e-=1)<0)break;s.push(i)}else if(i<2048){if((e-=2)<0)break;s.push(i>>6|192,63&i|128)}else if(i<65536){if((e-=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((e-=4)<0)break;s.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return s}function u(t){return s.isBuffer(t)?t.length:"undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer)?t.byteLength:("string"!=typeof t&&(t=""+t),0===t.length?0:h(t).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(t,e,i){void 0===e||void 0===i&&"string"==typeof e?(i=this.length,e=0):isFinite(e)&&(e|=0,isFinite(i)?i|=0:i=void 0);var r=this.length-e;if((void 0===i||i>r)&&(i=r),t.length>0&&(i<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");return function(t,e,i,r){return function(t,e,i,r){for(var n=0;n<r&&!(n+i>=e.length||n>=t.length);++n)e[n+i]=t[n];return n}(h(e,t.length-i),t,i,r)}(this,t,e,i)},s.prototype.slice=function(t,e){var i,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),s.TYPED_ARRAY_SUPPORT)(i=this.subarray(t,e)).__proto__=s.prototype;else{var n=e-t;i=new s(n,void 0);for(var a=0;a<n;++a)i[a]=this[a+t]}return i},s.prototype.copy=function(t,e,i,r){if(i||(i=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<i&&(r=i),r===i)return 0;if(0===t.length||0===this.length)return 0;if(e<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),t.length-e<r-i&&(r=t.length-e+i);var n,a=r-i;if(this===t&&i<e&&e<r)for(n=a-1;n>=0;--n)t[n+e]=this[n+i];else if(a<1e3||!s.TYPED_ARRAY_SUPPORT)for(n=0;n<a;++n)t[n+e]=this[n+i];else Uint8Array.prototype.set.call(t,this.subarray(i,i+a),e);return a},s.prototype.fill=function(t,e,i){if("string"==typeof t){if("string"==typeof e?(e=0,i=this.length):"string"==typeof i&&(i=this.length),1===t.length){var r=t.charCodeAt(0);r<256&&(t=r)}}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<i)throw new RangeError("Out of range index");if(i<=e)return this;var n;if(e>>>=0,i=void 0===i?this.length:i>>>0,t||(t=0),"number"==typeof t)for(n=e;n<i;++n)this[n]=t;else{var a=s.isBuffer(t)?t:new s(t),o=a.length;for(n=0;n<i-e;++n)this[n+e]=a[n%o]}return this},s.concat=function(t,e){if(!r(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return o(null,0);var i;if(void 0===e)for(e=0,i=0;i<t.length;++i)e+=t[i].length;var n=l(null,e),a=0;for(i=0;i<t.length;++i){var c=t[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(t){return!(null==t||!t._isBuffer)},e.exports.alloc=function(t){var e=new s(t);return e.fill(0),e},e.exports.from=function(t){return new s(t)}},{isarray:33}],29:[function(t,e,i){i.byteLength=function(t){var e=l(t),i=e[0],r=e[1];return 3*(i+r)/4-r},i.toByteArray=function(t){var e,i,r=l(t),a=r[0],o=r[1],c=new s(function(t,e,i){return 3*(e+i)/4-i}(0,a,o)),h=0,u=o>0?a-4:a;for(i=0;i<u;i+=4)e=n[t.charCodeAt(i)]<<18|n[t.charCodeAt(i+1)]<<12|n[t.charCodeAt(i+2)]<<6|n[t.charCodeAt(i+3)],c[h++]=e>>16&255,c[h++]=e>>8&255,c[h++]=255&e;return 2===o&&(e=n[t.charCodeAt(i)]<<2|n[t.charCodeAt(i+1)]>>4,c[h++]=255&e),1===o&&(e=n[t.charCodeAt(i)]<<10|n[t.charCodeAt(i+1)]<<4|n[t.charCodeAt(i+2)]>>2,c[h++]=e>>8&255,c[h++]=255&e),c},i.fromByteArray=function(t){for(var e,i=t.length,n=i%3,s=[],a=16383,o=0,l=i-n;o<l;o+=a)s.push(c(t,o,o+a>l?l:o+a));return 1===n?(e=t[i-1],s.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],s.push(r[e>>10]+r[e>>4&63]+r[e<<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(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=t.indexOf("=");return-1===i&&(i=e),[i,i===e?0:4-i%4]}function c(t,e,i){for(var n,s=[],a=e;a<i;a+=3)n=(t[a]<<16&16711680)+(t[a+1]<<8&65280)+(255&t[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(t,e,i){var n=t("base64-js"),s=t("ieee754"),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;i.Buffer=c,i.SlowBuffer=function(t){return+t!=t&&(t=0),c.alloc(+t)},i.INSPECT_MAX_BYTES=50;var o=2147483647;function l(t){if(t>o)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,c.prototype),e}function c(t,e,i){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return d(t)}return h(t,e,i)}function h(t,e,i){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!c.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var i=0|A(t,e),r=l(i),n=r.write(t,e);return n!==i&&(r=r.slice(0,n)),r}(t,e);if(ArrayBuffer.isView(t))return p(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(F(t,ArrayBuffer)||t&&F(t.buffer,ArrayBuffer))return function(t,e,i){if(e<0||t.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(t.byteLength<e+(i||0))throw new RangeError('"length" is outside of buffer bounds');var r;return r=void 0===e&&void 0===i?new Uint8Array(t):void 0===i?new Uint8Array(t,e):new Uint8Array(t,e,i),Object.setPrototypeOf(r,c.prototype),r}(t,e,i);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=t.valueOf&&t.valueOf();if(null!=r&&r!==t)return c.from(r,e,i);var n=function(t){if(c.isBuffer(t)){var e=0|f(t.length),i=l(e);return 0===i.length||t.copy(i,0,0,e),i}return void 0!==t.length?"number"!=typeof t.length||z(t.length)?l(0):p(t):"Buffer"===t.type&&Array.isArray(t.data)?p(t.data):void 0}(t);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return c.from(t[Symbol.toPrimitive]("string"),e,i);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function u(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function d(t){return u(t),l(t<0?0:0|f(t))}function p(t){for(var e=t.length<0?0:0|f(t.length),i=l(e),r=0;r<e;r+=1)i[r]=255&t[r];return i}function f(t){if(t>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|t}function A(t,e){if(c.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||F(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var i=t.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===i)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return U(t).length;default:if(n)return r?-1:Y(t).length;e=(""+e).toLowerCase(),n=!0}}function g(t,e,i){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if((i>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return D(this,e,i);case"utf8":case"utf-8":return T(this,e,i);case"ascii":return k(this,e,i);case"latin1":case"binary":return R(this,e,i);case"base64":return x(this,e,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,i);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function m(t,e,i){var r=t[e];t[e]=t[i],t[i]=r}function v(t,e,i,r,n){if(0===t.length)return-1;if("string"==typeof i?(r=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),z(i=+i)&&(i=n?0:t.length-1),i<0&&(i=t.length+i),i>=t.length){if(n)return-1;i=t.length-1}else if(i<0){if(!n)return-1;i=0}if("string"==typeof e&&(e=c.from(e,r)),c.isBuffer(e))return 0===e.length?-1:_(t,e,i,r,n);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,i):Uint8Array.prototype.lastIndexOf.call(t,e,i):_(t,[e],i,r,n);throw new TypeError("val must be string, number or Buffer")}function _(t,e,i,r,n){var s,a=1,o=t.length,l=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,o/=2,l/=2,i/=2}function c(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(n){var h=-1;for(s=i;s<o;s++)if(c(t,s)===c(e,-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(t,s+d)!==c(e,d)){u=!1;break}if(u)return s}return-1}function y(t,e,i,r){i=Number(i)||0;var n=t.length-i;r?(r=Number(r))>n&&(r=n):r=n;var s=e.length;r>s/2&&(r=s/2);for(var a=0;a<r;++a){var o=parseInt(e.substr(2*a,2),16);if(z(o))return a;t[i+a]=o}return a}function C(t,e,i,r){return V(Y(e,t.length-i),t,i,r)}function w(t,e,i,r){return V(function(t){for(var e=[],i=0;i<t.length;++i)e.push(255&t.charCodeAt(i));return e}(e),t,i,r)}function E(t,e,i,r){return w(t,e,i,r)}function b(t,e,i,r){return V(U(e),t,i,r)}function S(t,e,i,r){return V(function(t,e){for(var i,r,n,s=[],a=0;a<t.length&&!((e-=2)<0);++a)r=(i=t.charCodeAt(a))>>8,n=i%256,s.push(n),s.push(r);return s}(e,t.length-i),t,i,r)}function x(t,e,i){return 0===e&&i===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,i))}function T(t,e,i){i=Math.min(t.length,i);for(var r=[],n=e;n<i;){var s,a,o,l,c=t[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=t[n+1]))&&(l=(31&c)<<6|63&s)>127&&(h=l);break;case 3:s=t[n+1],a=t[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=t[n+1],a=t[n+2],o=t[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(t){var e=t.length;if(e<=P)return String.fromCharCode.apply(String,t);for(var i="",r=0;r<e;)i+=String.fromCharCode.apply(String,t.slice(r,r+=P));return i}(r)}i.kMaxLength=o,c.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),42===t.foo()}catch(t){return!1}}(),c.TYPED_ARRAY_SUPPORT||void 0===r||"function"!=typeof r.error||r.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(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&c[Symbol.species]===c&&Object.defineProperty(c,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),c.poolSize=8192,c.from=function(t,e,i){return h(t,e,i)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array),c.alloc=function(t,e,i){return function(t,e,i){return u(t),t<=0?l(t):void 0!==e?"string"==typeof i?l(t).fill(e,i):l(t).fill(e):l(t)}(t,e,i)},c.allocUnsafe=function(t){return d(t)},c.allocUnsafeSlow=function(t){return d(t)},c.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==c.prototype},c.compare=function(t,e){if(F(t,Uint8Array)&&(t=c.from(t,t.offset,t.byteLength)),F(e,Uint8Array)&&(e=c.from(e,e.offset,e.byteLength)),!c.isBuffer(t)||!c.isBuffer(e))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var i=t.length,r=e.length,n=0,s=Math.min(i,r);n<s;++n)if(t[n]!==e[n]){i=t[n],r=e[n];break}return i<r?-1:r<i?1:0},c.isEncoding=function(t){switch(String(t).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}},c.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return c.alloc(0);var i;if(void 0===e)for(e=0,i=0;i<t.length;++i)e+=t[i].length;var r=c.allocUnsafe(e),n=0;for(i=0;i<t.length;++i){var s=t[i];if(F(s,Uint8Array)&&(s=c.from(s)),!c.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(r,n),n+=s.length}return r},c.byteLength=A,c.prototype._isBuffer=!0,c.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)m(this,e,e+1);return this},c.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)m(this,e,e+3),m(this,e+1,e+2);return this},c.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)m(this,e,e+7),m(this,e+1,e+6),m(this,e+2,e+5),m(this,e+3,e+4);return this},c.prototype.toString=function(){var t=this.length;return 0===t?"":0===arguments.length?T(this,0,t):g.apply(this,arguments)},c.prototype.toLocaleString=c.prototype.toString,c.prototype.equals=function(t){if(!c.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===c.compare(this,t)},c.prototype.inspect=function(){var t="",e=i.INSPECT_MAX_BYTES;return t=this.toString("hex",0,e).replace(/(.{2})/g,"$1 ").trim(),this.length>e&&(t+=" ... "),"<Buffer "+t+">"},a&&(c.prototype[a]=c.prototype.inspect),c.prototype.compare=function(t,e,i,r,n){if(F(t,Uint8Array)&&(t=c.from(t,t.offset,t.byteLength)),!c.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===i&&(i=t?t.length:0),void 0===r&&(r=0),void 0===n&&(n=this.length),e<0||i>t.length||r<0||n>this.length)throw new RangeError("out of range index");if(r>=n&&e>=i)return 0;if(r>=n)return-1;if(e>=i)return 1;if(this===t)return 0;for(var s=(n>>>=0)-(r>>>=0),a=(i>>>=0)-(e>>>=0),o=Math.min(s,a),l=this.slice(r,n),h=t.slice(e,i),u=0;u<o;++u)if(l[u]!==h[u]){s=l[u],a=h[u];break}return s<a?-1:a<s?1:0},c.prototype.includes=function(t,e,i){return-1!==this.indexOf(t,e,i)},c.prototype.indexOf=function(t,e,i){return v(this,t,e,i,!0)},c.prototype.lastIndexOf=function(t,e,i){return v(this,t,e,i,!1)},c.prototype.write=function(t,e,i,r){if(void 0===e)r="utf8",i=this.length,e=0;else if(void 0===i&&"string"==typeof e)r=e,i=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e>>>=0,isFinite(i)?(i>>>=0,void 0===r&&(r="utf8")):(r=i,i=void 0)}var n=this.length-e;if((void 0===i||i>n)&&(i=n),t.length>0&&(i<0||e<0)||e>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,t,e,i);case"utf8":case"utf-8":return C(this,t,e,i);case"ascii":return w(this,t,e,i);case"latin1":case"binary":return E(this,t,e,i);case"base64":return b(this,t,e,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,t,e,i);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var P=4096;function k(t,e,i){var r="";i=Math.min(t.length,i);for(var n=e;n<i;++n)r+=String.fromCharCode(127&t[n]);return r}function R(t,e,i){var r="";i=Math.min(t.length,i);for(var n=e;n<i;++n)r+=String.fromCharCode(t[n]);return r}function D(t,e,i){var r=t.length;(!e||e<0)&&(e=0),(!i||i<0||i>r)&&(i=r);for(var n="",s=e;s<i;++s)n+=j[t[s]];return n}function I(t,e,i){for(var r=t.slice(e,i),n="",s=0;s<r.length;s+=2)n+=String.fromCharCode(r[s]+256*r[s+1]);return n}function B(t,e,i){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>i)throw new RangeError("Trying to access beyond buffer length")}function N(t,e,i,r,n,s){if(!c.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||e<s)throw new RangeError('"value" argument is out of bounds');if(i+r>t.length)throw new RangeError("Index out of range")}function L(t,e,i,r,n,s){if(i+r>t.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function H(t,e,i,r,n){return e=+e,i>>>=0,n||L(t,0,i,4),s.write(t,e,i,r,23,4),i+4}function O(t,e,i,r,n){return e=+e,i>>>=0,n||L(t,0,i,8),s.write(t,e,i,r,52,8),i+8}c.prototype.slice=function(t,e){var i=this.length;(t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e<t&&(e=t);var r=this.subarray(t,e);return Object.setPrototypeOf(r,c.prototype),r},c.prototype.readUIntLE=function(t,e,i){t>>>=0,e>>>=0,i||B(t,e,this.length);for(var r=this[t],n=1,s=0;++s<e&&(n*=256);)r+=this[t+s]*n;return r},c.prototype.readUIntBE=function(t,e,i){t>>>=0,e>>>=0,i||B(t,e,this.length);for(var r=this[t+--e],n=1;e>0&&(n*=256);)r+=this[t+--e]*n;return r},c.prototype.readUInt8=function(t,e){return t>>>=0,e||B(t,1,this.length),this[t]},c.prototype.readUInt16LE=function(t,e){return t>>>=0,e||B(t,2,this.length),this[t]|this[t+1]<<8},c.prototype.readUInt16BE=function(t,e){return t>>>=0,e||B(t,2,this.length),this[t]<<8|this[t+1]},c.prototype.readUInt32LE=function(t,e){return t>>>=0,e||B(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},c.prototype.readUInt32BE=function(t,e){return t>>>=0,e||B(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},c.prototype.readIntLE=function(t,e,i){t>>>=0,e>>>=0,i||B(t,e,this.length);for(var r=this[t],n=1,s=0;++s<e&&(n*=256);)r+=this[t+s]*n;return r>=(n*=128)&&(r-=Math.pow(2,8*e)),r},c.prototype.readIntBE=function(t,e,i){t>>>=0,e>>>=0,i||B(t,e,this.length);for(var r=e,n=1,s=this[t+--r];r>0&&(n*=256);)s+=this[t+--r]*n;return s>=(n*=128)&&(s-=Math.pow(2,8*e)),s},c.prototype.readInt8=function(t,e){return t>>>=0,e||B(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},c.prototype.readInt16LE=function(t,e){t>>>=0,e||B(t,2,this.length);var i=this[t]|this[t+1]<<8;return 32768&i?4294901760|i:i},c.prototype.readInt16BE=function(t,e){t>>>=0,e||B(t,2,this.length);var i=this[t+1]|this[t]<<8;return 32768&i?4294901760|i:i},c.prototype.readInt32LE=function(t,e){return t>>>=0,e||B(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},c.prototype.readInt32BE=function(t,e){return t>>>=0,e||B(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},c.prototype.readFloatLE=function(t,e){return t>>>=0,e||B(t,4,this.length),s.read(this,t,!0,23,4)},c.prototype.readFloatBE=function(t,e){return t>>>=0,e||B(t,4,this.length),s.read(this,t,!1,23,4)},c.prototype.readDoubleLE=function(t,e){return t>>>=0,e||B(t,8,this.length),s.read(this,t,!0,52,8)},c.prototype.readDoubleBE=function(t,e){return t>>>=0,e||B(t,8,this.length),s.read(this,t,!1,52,8)},c.prototype.writeUIntLE=function(t,e,i,r){t=+t,e>>>=0,i>>>=0,r||N(this,t,e,i,Math.pow(2,8*i)-1,0);var n=1,s=0;for(this[e]=255&t;++s<i&&(n*=256);)this[e+s]=t/n&255;return e+i},c.prototype.writeUIntBE=function(t,e,i,r){t=+t,e>>>=0,i>>>=0,r||N(this,t,e,i,Math.pow(2,8*i)-1,0);var n=i-1,s=1;for(this[e+n]=255&t;--n>=0&&(s*=256);)this[e+n]=t/s&255;return e+i},c.prototype.writeUInt8=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,1,255,0),this[e]=255&t,e+1},c.prototype.writeUInt16LE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},c.prototype.writeUInt16BE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},c.prototype.writeUInt32LE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},c.prototype.writeUInt32BE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},c.prototype.writeIntLE=function(t,e,i,r){if(t=+t,e>>>=0,!r){var n=Math.pow(2,8*i-1);N(this,t,e,i,n-1,-n)}var s=0,a=1,o=0;for(this[e]=255&t;++s<i&&(a*=256);)t<0&&0===o&&0!==this[e+s-1]&&(o=1),this[e+s]=(t/a>>0)-o&255;return e+i},c.prototype.writeIntBE=function(t,e,i,r){if(t=+t,e>>>=0,!r){var n=Math.pow(2,8*i-1);N(this,t,e,i,n-1,-n)}var s=i-1,a=1,o=0;for(this[e+s]=255&t;--s>=0&&(a*=256);)t<0&&0===o&&0!==this[e+s+1]&&(o=1),this[e+s]=(t/a>>0)-o&255;return e+i},c.prototype.writeInt8=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},c.prototype.writeInt16LE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},c.prototype.writeInt16BE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},c.prototype.writeInt32LE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},c.prototype.writeInt32BE=function(t,e,i){return t=+t,e>>>=0,i||N(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},c.prototype.writeFloatLE=function(t,e,i){return H(this,t,e,!0,i)},c.prototype.writeFloatBE=function(t,e,i){return H(this,t,e,!1,i)},c.prototype.writeDoubleLE=function(t,e,i){return O(this,t,e,!0,i)},c.prototype.writeDoubleBE=function(t,e,i){return O(this,t,e,!1,i)},c.prototype.copy=function(t,e,i,r){if(!c.isBuffer(t))throw new TypeError("argument should be a Buffer");if(i||(i=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<i&&(r=i),r===i)return 0;if(0===t.length||0===this.length)return 0;if(e<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),t.length-e<r-i&&(r=t.length-e+i);var n=r-i;if(this===t&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(e,i,r);else if(this===t&&i<e&&e<r)for(var s=n-1;s>=0;--s)t[s+e]=this[s+i];else Uint8Array.prototype.set.call(t,this.subarray(i,r),e);return n},c.prototype.fill=function(t,e,i,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=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&&!c.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===t.length){var n=t.charCodeAt(0);("utf8"===r&&n<128||"latin1"===r)&&(t=n)}}else"number"==typeof t?t&=255:"boolean"==typeof t&&(t=Number(t));if(e<0||this.length<e||this.length<i)throw new RangeError("Out of range index");if(i<=e)return this;var s;if(e>>>=0,i=void 0===i?this.length:i>>>0,t||(t=0),"number"==typeof t)for(s=e;s<i;++s)this[s]=t;else{var a=c.isBuffer(t)?t:c.from(t,r),o=a.length;if(0===o)throw new TypeError('The value "'+t+'" is invalid for argument "value"');for(s=0;s<i-e;++s)this[s+e]=a[s%o]}return this};var M=/[^+/0-9A-Za-z-_]/g;function Y(t,e){var i;e=e||1/0;for(var r=t.length,n=null,s=[],a=0;a<r;++a){if((i=t.charCodeAt(a))>55295&&i<57344){if(!n){if(i>56319){(e-=3)>-1&&s.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&s.push(239,191,189);continue}n=i;continue}if(i<56320){(e-=3)>-1&&s.push(239,191,189),n=i;continue}i=65536+(n-55296<<10|i-56320)}else n&&(e-=3)>-1&&s.push(239,191,189);if(n=null,i<128){if((e-=1)<0)break;s.push(i)}else if(i<2048){if((e-=2)<0)break;s.push(i>>6|192,63&i|128)}else if(i<65536){if((e-=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((e-=4)<0)break;s.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return s}function U(t){return n.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function V(t,e,i,r){for(var n=0;n<r&&!(n+i>=e.length||n>=t.length);++n)e[n+i]=t[n];return n}function F(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function z(t){return t!=t}var j=function(){for(var t="0123456789abcdef",e=new Array(256),i=0;i<16;++i)for(var r=16*i,n=0;n<16;++n)e[r+n]=t[i]+t[n];return e}()},{"base64-js":29,ieee754:32}],31:[function(t,e,i){var r={single_source_shortest_paths:function(t,e,i){var n={},s={};s[e]=0;var a,o,l,c,h,u,d,p=r.PriorityQueue.make();for(p.push(e,0);!p.empty();)for(l in o=(a=p.pop()).value,c=a.cost,h=t[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 ",e," to ",i,"."].join("");throw new Error(f)}return n},extract_shortest_path_from_predecessor_list:function(t,e){for(var i=[],r=e;r;)i.push(r),t[r],r=t[r];return i.reverse(),i},find_path:function(t,e,i){var n=r.single_source_shortest_paths(t,e,i);return r.extract_shortest_path_from_predecessor_list(n,i)},PriorityQueue:{make:function(t){var e,i=r.PriorityQueue,n={};for(e in t=t||{},i)i.hasOwnProperty(e)&&(n[e]=i[e]);return n.queue=[],n.sorter=t.sorter||i.default_sorter,n},default_sorter:function(t,e){return t.cost-e.cost},push:function(t,e){var i={value:t,cost:e};this.queue.push(i),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};void 0!==e&&(e.exports=r)},{}],32:[function(t,e,i){i.read=function(t,e,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=t[e+u];for(u+=d,s=p&(1<<-h)-1,p>>=-h,h+=o;h>0;s=256*s+t[e+u],u+=d,h-=8);for(a=s&(1<<-h)-1,s>>=-h,h+=r;h>0;a=256*a+t[e+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(t,e,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,A=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=h):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=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=(e*l-1)*Math.pow(2,n),a+=u):(o=e*Math.pow(2,u-1)*Math.pow(2,n),a=0));n>=8;t[i+p]=255&o,p+=f,o/=256,n-=8);for(a=a<<n|o,c+=n;c>0;t[i+p]=255&a,p+=f,a/=256,c-=8);t[i+p-f]|=128*A}},{}],33:[function(t,e,i){var r={}.toString;e.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},{}]},{},[24])(24)},e.exports=n()}));return{name:"qrcode",props:{value:null,options:Object,tag:{type:String,default:"canvas"}},render:function(t){return t(this.tag,this.$slots.default)},watch:{$props:{deep:!0,immediate:!0,handler:function(){this.$el&&this.generate()}}},methods:{generate:function(){var t=this,i=this.options,r=this.tag,n=String(this.value);"canvas"===r?e.toCanvas(this.$el,n,i,(function(t){if(t)throw t})):"img"===r?e.toDataURL(n,i,(function(e,i){if(e)throw e;t.$el.src=i})):e.toString(n,i,(function(e,i){if(e)throw e;t.$el.innerHTML=i}))}},mounted:function(){this.generate()}}}()},86243:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".fade-enter-active[data-v-8e58e0a5],\n.fade-leave-active[data-v-8e58e0a5] {\n transition: opacity .3s ease;\n}\n.fade-enter[data-v-8e58e0a5],\n.fade-leave-to[data-v-8e58e0a5] {\n opacity: 0;\n}\n.linked-icons[data-v-8e58e0a5] {\n display: flex;\n}\n.linked-icons img[data-v-8e58e0a5] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: .7;\n}\n.linked-icons img[data-v-8e58e0a5]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-8e58e0a5] {\n display: none;\n}\n.popovermenu.open[data-v-8e58e0a5] {\n display: block;\n}\nli.collection-list-item[data-v-8e58e0a5] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-8e58e0a5] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-8e58e0a5],\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-8e58e0a5] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-8e58e0a5] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-8e58e0a5],\nli.collection-list-item .resource-list-details[data-v-8e58e0a5] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-8e58e0a5] {\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-8e58e0a5]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5] {\n opacity: .7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:hover,\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-8e58e0a5] {\n animation: shake-8e58e0a5 .6s 1 linear;\n}\n@keyframes shake-8e58e0a5 {\n 0% {\n transform: translate(15px);\n }\n 20% {\n transform: translate(-15px);\n }\n 40% {\n transform: translate(7px);\n }\n 60% {\n transform: translate(-7px);\n }\n 80% {\n transform: translate(3px);\n }\n to {\n transform: translate(0);\n }\n}\n.collection-list *[data-v-75a4370b] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-75a4370b] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-75a4370b] {\n margin-top: auto;\n}\n#collection-select-container[data-v-75a4370b] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-75a4370b] {\n display: block;\n padding: 16px;\n opacity: .7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-75a4370b]:hover {\n opacity: 1;\n}\np.hint[data-v-75a4370b] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-75a4370b] {\n width: 32px;\n height: 32px;\n margin: 30px 0 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n}\n.icon-projects[data-v-75a4370b] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-75a4370b] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-75a4370b] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-75a4370b] {\n padding: 4px;\n}\n.fade-enter-active[data-v-75a4370b],\n.fade-leave-active[data-v-75a4370b] {\n transition: opacity .5s;\n}\n.fade-enter[data-v-75a4370b],\n.fade-leave-to[data-v-75a4370b] {\n opacity: 0;\n}\n","",{version:3,sources:["webpack://./node_modules/nextcloud-vue-collections/dist/assets/index-Au1Gr_G6.css"],names:[],mappings:"AAAA;;EAEE,4BAA4B;AAC9B;AACA;;EAEE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,aAAa;EACb,YAAY;EACZ,cAAc;EACd,4BAA4B;EAC5B,2BAA2B;EAC3B,WAAW;AACb;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;;EAEE,eAAe;EACf,YAAY;EACZ,aAAa;AACf;AACA;EACE,iBAAiB;AACnB;AACA;EACE,eAAe;EACf,6CAA6C;AAC/C;AACA;EACE,YAAY;AACd;AACA;;EAEE,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,WAAW;AACb;AACA;;EAEE,UAAU;AACZ;AACA;EACE,sCAAsC;AACxC;AACA;EACE;IACE,0BAA0B;EAC5B;EACA;IACE,2BAA2B;EAC7B;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,0BAA0B;EAC5B;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,uBAAuB;EACzB;AACF;AACA;EACE,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,WAAW;EACX,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,UAAU;AACZ;AACA;EACE,UAAU;EACV,iBAAiB;EACjB,YAAY;EACZ,oCAAoC;EACpC,mBAAmB;AACrB;AACA;EACE,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,YAAY;EACZ,8CAA8C;AAChD;AACA;EACE,cAAc;EACd,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,2DAA2D;AAC7D;AACA;EACE,YAAY;AACd;AACA;;EAEE,uBAAuB;AACzB;AACA;;EAEE,UAAU;AACZ",sourcesContent:[".fade-enter-active[data-v-8e58e0a5],\n.fade-leave-active[data-v-8e58e0a5] {\n transition: opacity .3s ease;\n}\n.fade-enter[data-v-8e58e0a5],\n.fade-leave-to[data-v-8e58e0a5] {\n opacity: 0;\n}\n.linked-icons[data-v-8e58e0a5] {\n display: flex;\n}\n.linked-icons img[data-v-8e58e0a5] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: .7;\n}\n.linked-icons img[data-v-8e58e0a5]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-8e58e0a5] {\n display: none;\n}\n.popovermenu.open[data-v-8e58e0a5] {\n display: block;\n}\nli.collection-list-item[data-v-8e58e0a5] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-8e58e0a5] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-8e58e0a5],\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-8e58e0a5] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-8e58e0a5] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-8e58e0a5],\nli.collection-list-item .resource-list-details[data-v-8e58e0a5] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-8e58e0a5] {\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-8e58e0a5]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5] {\n opacity: .7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:hover,\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-8e58e0a5] {\n animation: shake-8e58e0a5 .6s 1 linear;\n}\n@keyframes shake-8e58e0a5 {\n 0% {\n transform: translate(15px);\n }\n 20% {\n transform: translate(-15px);\n }\n 40% {\n transform: translate(7px);\n }\n 60% {\n transform: translate(-7px);\n }\n 80% {\n transform: translate(3px);\n }\n to {\n transform: translate(0);\n }\n}\n.collection-list *[data-v-75a4370b] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-75a4370b] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-75a4370b] {\n margin-top: auto;\n}\n#collection-select-container[data-v-75a4370b] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-75a4370b] {\n display: block;\n padding: 16px;\n opacity: .7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-75a4370b]:hover {\n opacity: 1;\n}\np.hint[data-v-75a4370b] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-75a4370b] {\n width: 32px;\n height: 32px;\n margin: 30px 0 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n}\n.icon-projects[data-v-75a4370b] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-75a4370b] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-75a4370b] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-75a4370b] {\n padding: 4px;\n}\n.fade-enter-active[data-v-75a4370b],\n.fade-leave-active[data-v-75a4370b] {\n transition: opacity .5s;\n}\n.fade-enter[data-v-75a4370b],\n.fade-leave-to[data-v-75a4370b] {\n opacity: 0;\n}\n"],sourceRoot:""}]);const o=a},42572:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry[data-v-79edc2ff]{display:flex;align-items:center;height:44px}.sharing-entry__summary[data-v-79edc2ff]{padding:8px;padding-left: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-79edc2ff]{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-79edc2ff],.sharing-entry__summary__desc small[data-v-79edc2ff]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-79edc2ff]{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,iBAAA,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",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__summary {\n\t\tpadding: 8px;\n\t\tpadding-left: 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"],sourceRoot:""}]);const o=a},41699:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry[data-v-283ca89e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-283ca89e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;padding-left:10px;line-height:1.2em}.sharing-entry__desc p[data-v-283ca89e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-283ca89e]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tpadding-left: 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-left: auto;\n\t}\n}\n"],sourceRoot:""}]);const o=a},16469:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry__internal .avatar-external[data-v-e40cd936]{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-e40cd936]{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",sourcesContent:["\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t\tcolor: var(--color-success);\n\t}\n}\n"],sourceRoot:""}]);const o=a},54228:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry[data-v-4ec6c807]{display:flex;align-items:center;min-height:44px}.sharing-entry__summary[data-v-4ec6c807]{padding:8px;padding-left:10px;display:flex;justify-content:space-between;flex:1 0;min-width:0}.sharing-entry__desc[data-v-4ec6c807]{display:flex;flex-direction:column;line-height:1.2em}.sharing-entry__desc p[data-v-4ec6c807]{color:var(--color-text-maxcontrast)}.sharing-entry__desc__title[data-v-4ec6c807]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-4ec6c807]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-4ec6c807] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-4ec6c807]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-4ec6c807]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item~.action-item[data-v-4ec6c807],.sharing-entry .action-item~.sharing-entry__loading[data-v-4ec6c807]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-4ec6c807]{opacity:1;color:var(--color-success)}.qr-code-dialog[data-v-4ec6c807]{display:flex;width:100%;justify-content:center}.qr-code-dialog__img[data-v-4ec6c807]{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,iBAAA,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,CAKF,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAOA,+HAEC,aAAA,CAIF,sDACC,SAAA,CACA,0BAAA,CAKF,iCACC,YAAA,CACA,UAAA,CACA,sBAAA,CAEA,sCACC,UAAA,CACA,WAAA",sourcesContent:["\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-left: 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&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary-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-left: 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-left: 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"],sourceRoot:""}]);const o=a},45340:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".share-select[data-v-6e5dd9f1]{display:block}.share-select[data-v-6e5dd9f1] .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-6e5dd9f1] .action-item__menutoggle .button-vue__text{font-weight:normal !important}.share-select[data-v-6e5dd9f1] .action-item__menutoggle .button-vue__icon{height:24px !important;min-height:24px !important;width:24px !important;min-width:24px !important}.share-select[data-v-6e5dd9f1] .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",sourcesContent:["\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"],sourceRoot:""}]);const o=a},17557:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry[data-v-1852ea78]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1852ea78]{padding:8px;padding-left:10px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-1852ea78]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-1852ea78]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-1852ea78]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tpadding-left: 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-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]);const o=a},82162:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.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",sourcesContent:['\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for="sharing-search-input"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t.avatardiv__initials-wrapper {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const o=a},72832:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharingTabDetailsView[data-v-dc079594]{display:flex;flex-direction:column;width:100%;margin:0 auto;position:relative;height:100%;overflow:hidden}.sharingTabDetailsView__header[data-v-dc079594]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-dc079594]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-dc079594]{font-size:15px;padding-left:.3em}.sharingTabDetailsView__wrapper[data-v-dc079594]{position:relative;overflow:scroll;flex-shrink:1;padding:4px;padding-right:12px}.sharingTabDetailsView__quick-permissions[data-v-dc079594]{display:flex;justify-content:center;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-dc079594]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-dc079594]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-dc079594]:nth-child(1){align-items:center;justify-content:center;padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-dc079594] label span{display:flex;flex-direction:column}.sharingTabDetailsView__quick-permissions div span[data-v-dc079594] span.checkbox-content__text.checkbox-radio-switch__text{flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-dc079594] span.checkbox-content__text.checkbox-radio-switch__text .subline{display:block;flex-basis:100%}.sharingTabDetailsView__advanced-control[data-v-dc079594]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-dc079594]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-dc079594]{width:100%;margin-bottom:.5em;text-align:left;padding-left:0}.sharingTabDetailsView__advanced section textarea[data-v-dc079594],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-dc079594]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-dc079594]{height:80px;margin:0}.sharingTabDetailsView__advanced section span[data-v-dc079594] label{padding-left:0 !important;background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-dc079594]{padding-left:1.5em}.sharingTabDetailsView__delete>button[data-v-dc079594]:first-child{color:#df0707}.sharingTabDetailsView__footer[data-v-dc079594]{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-dc079594]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-dc079594]{margin-left:16px}.sharingTabDetailsView__footer .button-group button[data-v-dc079594]:first-child{margin-left: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,iBAAA,CAMH,iDACC,iBAAA,CACA,eAAA,CACA,aAAA,CACA,WAAA,CACA,kBAAA,CAGD,2DACC,YAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,YAAA,CAKA,+EACC,YAAA,CACA,qBAAA,CAKF,4HACC,cAAA,CAEA,qIACC,aAAA,CACA,eAAA,CAQL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,eAAA,CACA,cAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CACA,QAAA,CAaA,qEACC,yBAAA,CACA,mCAAA,CACA,sBAAA,CAIF,2FACC,kBAAA,CAMF,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,gBAAA,CAEA,iFACC,aAAA",sourcesContent:["\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-left: 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-right: 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::v-deep label {\n\n\t\t\t\t\tspan {\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t}\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: left;\n\t\tpadding-left: 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 The following style is applied out of the component's scope\n to remove padding from the label.checkbox-radio-switch__label,\n which is used to group radio checkbox items. The use of ::v-deep\n ensures that the padding is modified without being affected by\n the component's scoping.\n Without this achieving left alignment for the checkboxes would not\n be possible.\n */\n\t\t\tspan {\n\t\t\t\t::v-deep label {\n\t\t\t\t\tpadding-left: 0 !important;\n\t\t\t\t\tbackground-color: initial !important;\n\t\t\t\t\tborder: none !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsection.custom-permissions-group {\n\t\t\t\tpadding-left: 1.5em;\n\t\t\t}\n\t\t}\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-left: 16px;\n\n\t\t\t\t&:first-child {\n\t\t\t\t\tmargin-left: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=a},4442:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".sharing-entry__inherited .avatar-shared[data-v-50f9af8c]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]);const o=a},3316:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(71354),n=i.n(r),s=i(76314),a=i.n(s)()(n());a.push([t.id,".emptyContentWithSections[data-v-a65c443a]{margin:1rem auto}.sharingTab[data-v-a65c443a]{position:relative;height:100%}.sharingTab__content[data-v-a65c443a]{padding:0 6px}.sharingTab__additionalContent[data-v-a65c443a]{margin:44px 0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AACA,2CACC,gBAAA,CAGD,6BACC,iBAAA,CACA,WAAA,CAEA,sCACC,aAAA,CAGD,gDACC,aAAA",sourcesContent:["\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\t}\n\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n"],sourceRoot:""}]);const o=a},37023:(t,e,i)=>{"use strict";e.KT=void 0,i(25440),e.KT=(t,e,i)=>{const s=1===Object.assign({ocsVersion:2},i||{}).ocsVersion?1:2;return window.location.protocol+"//"+window.location.host+n()+"/ocs/v"+s+".php"+r(t,e,i)};const r=(t,e,i)=>{const r=Object.assign({escape:!0},i||{});return"/"!==t.charAt(0)&&(t="/"+t),n=(n=e||{})||{},t.replace(/{([^{}]*)}/g,(function(t,e){var i=n[e];return r.escape?"string"==typeof i||"number"==typeof i?encodeURIComponent(i.toString()):encodeURIComponent(t):"string"==typeof i||"number"==typeof i?i.toString():t}));var n};function n(){let t=window._oc_webroot;if(void 0===t){t=location.pathname;const e=t.indexOf("/index.php/");t=-1!==e?t.substr(0,e):t.substr(0,t.lastIndexOf("/"))}return t}},48318:function(t,e,i){!function(t){"use strict";var e,i=function(){try{if(t.URLSearchParams&&"bar"===new t.URLSearchParams("foo=bar").get("foo"))return t.URLSearchParams}catch(t){}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||((e=new i).append("s"," &"),"s=+%26"===e.toString()),l=p.prototype,c=!(!t.Symbol||!t.Symbol.iterator);if(!(i&&r&&n&&o&&s)){l.append=function(t,e){v(this[a],t,e)},l.delete=function(t){delete this[a][t]},l.get=function(t){var e=this[a];return this.has(t)?e[t][0]:null},l.getAll=function(t){var e=this[a];return this.has(t)?e[t].slice(0):[]},l.has=function(t){return y(this[a],t)},l.set=function(t,e){this[a][t]=[""+e]},l.toString=function(){var t,e,i,r,n=this[a],s=[];for(e in n)for(i=f(e),t=0,r=n[e];t<r.length;t++)s.push(i+"="+f(r[t]));return s.join("&")};var h,u=t.Proxy&&i&&(!n||!o||!r||!s);u?(h=new Proxy(i,{construct:function(t,e){return new t(new p(e[0]).toString())}})).toString=Function.prototype.toString.bind(p):h=p,Object.defineProperty(t,"URLSearchParams",{value:h});var d=t.URLSearchParams.prototype;d.polyfill=!0,!u&&t.Symbol&&(d[t.Symbol.toStringTag]="URLSearchParams"),"forEach"in d||(d.forEach=function(t,e){var i=m(this.toString());Object.getOwnPropertyNames(i).forEach((function(r){i[r].forEach((function(i){t.call(e,i,r,this)}),this)}),this)}),"sort"in d||(d.sort=function(){var t,e,i,r=m(this.toString()),n=[];for(t in r)n.push(t);for(n.sort(),e=0;e<n.length;e++)this.delete(n[e]);for(e=0;e<n.length;e++){var s=n[e],a=r[s];for(i=0;i<a.length;i++)this.append(s,a[i])}}),"keys"in d||(d.keys=function(){var t=[];return this.forEach((function(e,i){t.push(i)})),g(t)}),"values"in d||(d.values=function(){var t=[];return this.forEach((function(e){t.push(e)})),g(t)}),"entries"in d||(d.entries=function(){var t=[];return this.forEach((function(e,i){t.push([i,e])})),g(t)}),c&&(d[t.Symbol.iterator]=d[t.Symbol.iterator]||d.entries),"size"in d||Object.defineProperty(d,"size",{get:function(){var t=m(this.toString());if(d===this)throw new TypeError("Illegal invocation at URLSearchParams.invokeGetter");return Object.keys(t).reduce((function(e,i){return e+t[i].length}),0)}})}function p(t){((t=t||"")instanceof URLSearchParams||t instanceof p)&&(t=t.toString()),this[a]=m(t)}function f(t){var e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'\(\)~]|%20|%00/g,(function(t){return e[t]}))}function A(t){return t.replace(/[ +]/g,"%20").replace(/(%[a-f0-9]{2})+/gi,(function(t){return decodeURIComponent(t)}))}function g(e){var i={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return c&&(i[t.Symbol.iterator]=function(){return i}),i}function m(t){var e={};if("object"==typeof t)if(_(t))for(var i=0;i<t.length;i++){var r=t[i];if(!_(r)||2!==r.length)throw new TypeError("Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements");v(e,r[0],r[1])}else for(var n in t)t.hasOwnProperty(n)&&v(e,n,t[n]);else{0===t.indexOf("?")&&(t=t.slice(1));for(var s=t.split("&"),a=0;a<s.length;a++){var o=s[a],l=o.indexOf("=");-1<l?v(e,A(o.slice(0,l)),A(o.slice(l+1))):o&&v(e,A(o),"")}}return e}function v(t,e,i){var r="string"==typeof i?i:null!=i&&"function"==typeof i.toString?i.toString():JSON.stringify(i);y(t,e)?t[e].push(r):t[e]=[r]}function _(t){return!!t&&"[object Array]"===Object.prototype.toString.call(t)}function y(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(void 0!==i.g?i.g:"undefined"!=typeof window?window:this)},86642:(e,i,r)=>{"use strict";r.r(i),r.d(i,{default:()=>Ii});var n=r(85072),s=r.n(n),a=r(97825),o=r.n(a),l=r(77659),c=r.n(l),h=r(55056),u=r.n(h),d=r(10540),p=r.n(d),f=r(41113),A=r.n(f),g=r(86243),m={};m.styleTagTransform=A(),m.setAttributes=u(),m.insert=c().bind(null,"head"),m.domAPI=o(),m.insertStyleElement=p(),s()(g.A,m),g.A&&g.A.locals&&g.A.locals;var v=r(41944),_=r(67607);const y=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)},C="object"==typeof global&&global&&global.Object===Object&&global;var w="object"==typeof self&&self&&self.Object===Object&&self;const E=C||w||Function("return this")(),b=function(){return E.Date.now()};var S=/\s/;var x=/^\s+/;const T=function(t){return t?t.slice(0,function(t){for(var e=t.length;e--&&S.test(t.charAt(e)););return e}(t)+1).replace(x,""):t},P=E.Symbol;var k=Object.prototype,R=k.hasOwnProperty,D=k.toString,I=P?P.toStringTag:void 0;var B=Object.prototype.toString;var N=P?P.toStringTag:void 0;const L=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":N&&N in Object(t)?function(t){var e=R.call(t,I),i=t[I];try{t[I]=void 0;var r=!0}catch(t){}var n=D.call(t);return r&&(e?t[I]=i:delete t[I]),n}(t):function(t){return B.call(t)}(t)};var H=/^[-+]0x[0-9a-f]+$/i,O=/^0b[01]+$/i,M=/^0o[0-7]+$/i,Y=parseInt;const U=function(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return null!=t&&"object"==typeof t}(t)&&"[object Symbol]"==L(t)}(t))return NaN;if(y(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=y(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=T(t);var i=O.test(t);return i||M.test(t)?Y(t.slice(2),i?2:8):H.test(t)?NaN:+t};var V=Math.max,F=Math.min;var z=r(24764),j=r(89257),q=r(85471),W=r(65043),$=r(37023),K=r(96763);const G=new class{constructor(){this.http=W.Ay}listCollection(t){return this.http.get((0,$.KT)("collaboration/resources/collections/{collectionId}",{collectionId:t}))}renameCollection(t,e){return this.http.put((0,$.KT)("collaboration/resources/collections/{collectionId}",{collectionId:t}),{collectionName:e}).then((t=>t.data.ocs.data))}getCollectionsByResource(t,e){return this.http.get((0,$.KT)("collaboration/resources/{resourceType}/{resourceId}",{resourceType:t,resourceId:e})).then((t=>t.data.ocs.data))}createCollection(t,e,i){return this.http.post((0,$.KT)("collaboration/resources/{resourceType}/{resourceId}",{resourceType:t,resourceId:e}),{name:i}).then((t=>t.data.ocs.data))}addResource(t,e,i){return i=""+i,this.http.post((0,$.KT)("collaboration/resources/collections/{collectionId}",{collectionId:t}),{resourceType:e,resourceId:i}).then((t=>t.data.ocs.data))}removeResource(t,e,i){return this.http.delete((0,$.KT)("collaboration/resources/collections/{collectionId}",{collectionId:t}),{params:{resourceType:e,resourceId:i}}).then((t=>t.data.ocs.data))}search(t){return this.http.get((0,$.KT)("collaboration/resources/collections/search/{query}",{query:t})).then((t=>t.data.ocs.data))}},Z=q.Ay.observable({collections:[]}),Q={addCollections(t){(0,q.hZ)(Z,"collections",t)},addCollection(t){Z.collections.push(t)},removeCollection(t){(0,q.hZ)(Z,"collections",Z.collections.filter((e=>e.id!==t)))},updateCollection(t){const e=Z.collections.findIndex((e=>e.id===t.id));-1!==e?(0,q.hZ)(Z.collections,e,t):Z.collections.push(t)}},J={fetchCollectionsByResource:({resourceType:t,resourceId:e})=>G.getCollectionsByResource(t,e).then((t=>(Q.addCollections(t),t))),createCollection:({baseResourceType:t,baseResourceId:e,resourceType:i,resourceId:r,name:n})=>G.createCollection(t,e,n).then((t=>{Q.addCollection(t),J.addResourceToCollection({collectionId:t.id,resourceType:i,resourceId:r})})),renameCollection:({collectionId:t,name:e})=>G.renameCollection(t,e).then((t=>(Q.updateCollection(t),t))),addResourceToCollection:({collectionId:t,resourceType:e,resourceId:i})=>G.addResource(t,e,i).then((t=>(Q.updateCollection(t),t))),removeResource:({collectionId:t,resourceType:e,resourceId:i})=>G.removeResource(t,e,i).then((t=>{t.resources.length>0?Q.updateCollection(t):Q.removeCollection(t)})),search:t=>G.search(t)};function X(t,e,i,r,n,s,a,o){var l,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=i,c._compiled=!0),r&&(c.functional=!0),s&&(c._scopeId="data-v-"+s),a?(l=function(t){!(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)&&typeof __VUE_SSR_CONTEXT__<"u"&&(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._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(t,e){return l.call(e),h(t,e)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:t,options:c}}const tt=X({name:"CollectionListItem",components:{NcAvatar:v.A,NcActions:z.A,NcActionButton:j.A},props:{collection:{type:Object,default:null}},data:()=>({detailsOpen:!1,newName:null,error:{}}),computed:{getIcon:()=>t=>[t.iconClass],typeClass:()=>t=>"resource-type-"+t.type,limitedResources:()=>t=>t.resources?t.resources.slice(0,2):[],iconUrl:()=>t=>t.mimetype?OC.MimeType.getIconUrl(t.mimetype):t.iconUrl?t.iconUrl:""},methods:{toggleDetails(){this.detailsOpen=!this.detailsOpen},showDetails(){this.detailsOpen=!0},hideDetails(){this.detailsOpen=!1},removeResource(t,e){J.removeResource({collectionId:t.id,resourceType:e.type,resourceId:e.id})},openRename(){this.newName=this.collection.name},renameCollection(){""!==this.newName?J.renameCollection({collectionId:this.collection.id,name:this.newName}).then((t=>{this.newName=null})).catch((e=>{this.$set(this.error,"rename",t("core","Failed to rename the project")),K.error(e),setTimeout((()=>{(0,q.hZ)(this.error,"rename",null)}),3e3)})):this.newName=null}}},(function(){var t=this,e=t._self._c;return e("li",{staticClass:"collection-list-item"},[e("NcAvatar",{staticClass:"collection-avatar",attrs:{"display-name":t.collection.name,"allow-placeholder":""}}),null===t.newName?e("span",{staticClass:"collection-item-name",attrs:{title:""},on:{click:t.showDetails}},[t._v(t._s(t.collection.name))]):e("form",{class:{shouldshake:t.error.rename},on:{submit:function(e){return e.preventDefault(),t.renameCollection.apply(null,arguments)}}},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.newName,expression:"newName"}],attrs:{type:"text",autocomplete:"off",autocapitalize:"off"},domProps:{value:t.newName},on:{input:function(e){e.target.composing||(t.newName=e.target.value)}}}),e("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]),t.detailsOpen||null!==t.newName?t._e():e("div",{staticClass:"linked-icons"},t._l(t.limitedResources(t.collection),(function(i){return e("a",{key:i.type+"|"+i.id,class:t.typeClass(i),attrs:{title:i.name,href:i.link}},[e("img",{attrs:{src:t.iconUrl(i)}})])})),0),null===t.newName?e("span",{staticClass:"sharingOptionsGroup"},[e("NcActions",[e("NcActionButton",{attrs:{icon:"icon-info"},on:{click:function(e){return e.preventDefault(),t.toggleDetails.apply(null,arguments)}}},[t._v(" "+t._s(t.detailsOpen?t.t("core","Hide details"):t.t("core","Show details"))+" ")]),e("NcActionButton",{attrs:{icon:"icon-rename"},on:{click:function(e){return e.preventDefault(),t.openRename.apply(null,arguments)}}},[t._v(" "+t._s(t.t("core","Rename project"))+" ")])],1)],1):t._e(),e("transition",{attrs:{name:"fade"}},[t.error.rename?e("div",{staticClass:"error"},[t._v(" "+t._s(t.error.rename)+" ")]):t._e()]),e("transition",{attrs:{name:"fade"}},[t.detailsOpen?e("ul",{staticClass:"resource-list-details"},t._l(t.collection.resources,(function(i){return e("li",{key:i.type+"|"+i.id,class:t.typeClass(i)},[e("a",{attrs:{href:i.link}},[e("img",{attrs:{src:t.iconUrl(i)}}),e("span",{staticClass:"resource-name"},[t._v(t._s(i.name||""))])]),e("span",{staticClass:"icon-close",on:{click:function(e){return t.removeResource(t.collection,i)}}})])})),0):t._e()])],1)}),[],!1,null,"8e58e0a5",null,null).exports,et=function(t,e,i){var r,n,s,a,o,l,c=0,h=!1,u=!1,d=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function p(e){var i=r,s=n;return r=n=void 0,c=e,a=t.apply(s,i)}function f(t){var i=t-l;return void 0===l||i>=e||i<0||u&&t-c>=s}function A(){var t=b();if(f(t))return g(t);o=setTimeout(A,function(t){var i=e-(t-l);return u?F(i,s-(t-c)):i}(t))}function g(t){return o=void 0,d&&r?p(t):(r=n=void 0,a)}function m(){var t=b(),i=f(t);if(r=arguments,n=this,l=t,i){if(void 0===o)return function(t){return c=t,o=setTimeout(A,e),h?p(t):a}(l);if(u)return clearTimeout(o),o=setTimeout(A,e),p(l)}return void 0===o&&(o=setTimeout(A,e)),a}return e=U(e)||0,y(i)&&(h=!!i.leading,s=(u="maxWait"in i)?V(U(i.maxWait)||0,e):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:g(b())},m}((function(t,e){""!==t&&(e(!0),J.search(t).then((t=>{this.searchCollections=t})).catch((t=>{K.error("Failed to search for collections",t)})).finally((()=>{e(!1)})))}),500,{}),it=X({name:"CollectionList",components:{CollectionListItem:tt,NcAvatar:v.A,NcSelect:_.A},props:{type:{type:String,default:null},id:{type:String,default:null},name:{type:String,default:""},isActive:{type:Boolean,default:!0}},data:()=>({selectIsOpen:!1,generatingCodes:!1,codes:void 0,value:null,model:{},searchCollections:[],error:null,state:Z,isSelectOpen:!1}),computed:{collections(){return this.state.collections.filter((t=>typeof t.resources.find((t=>t&&t.id===""+this.id&&t.type===this.type))<"u"))},placeholder(){return this.isSelectOpen?t("core","Type to search for existing projects"):t("core","Add to a project")},options(){const t=[];window.OCP.Collaboration.getTypes().sort().forEach((e=>{t.push({method:0,type:e,title:window.OCP.Collaboration.getLabel(e),class:window.OCP.Collaboration.getIcon(e),action:()=>window.OCP.Collaboration.trigger(e)})}));for(const e in this.searchCollections)-1===this.collections.findIndex((t=>t.id===this.searchCollections[e].id))&&t.push({method:1,title:this.searchCollections[e].name,collectionId:this.searchCollections[e].id});return t}},watch:{type(){this.isActive&&J.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},id(){this.isActive&&J.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},isActive(t){t&&J.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})}},mounted(){J.fetchCollectionsByResource({resourceType:this.type,resourceId:this.id})},methods:{select(e,i){0===e.method&&e.action().then((i=>{J.createCollection({baseResourceType:this.type,baseResourceId:this.id,resourceType:e.type,resourceId:i,name:this.name}).catch((e=>{this.setError(t("core","Failed to create a project"),e)}))})).catch((t=>{K.error("No resource selected",t)})),1===e.method&&J.addResourceToCollection({collectionId:e.collectionId,resourceType:this.type,resourceId:this.id}).catch((e=>{this.setError(t("core","Failed to add the item to the project"),e)}))},search(t,e){et.bind(this)(t,e)},showSelect(){this.selectIsOpen=!0,this.$refs.select.$el.focus()},hideSelect(){this.selectIsOpen=!1},isVueComponent:t=>t._isVue,setError(t,e){K.error(t,e),this.error=t,setTimeout((()=>{this.error=null}),5e3)}}},(function(){var t=this,e=t._self._c;return t.collections&&t.type&&t.id?e("ul",{staticClass:"collection-list",attrs:{id:"collection-list"}},[e("li",{on:{click:t.showSelect}},[t._m(0),e("div",{attrs:{id:"collection-select-container"}},[e("NcSelect",{ref:"select",attrs:{"aria-label-combobox":t.t("core","Add to a project"),options:t.options,placeholder:t.placeholder,label:"title",limit:5},on:{close:function(e){t.isSelectOpen=!1},open:function(e){t.isSelectOpen=!0},"option:selected":t.select,search:t.search},scopedSlots:t._u([{key:"selected-option",fn:function(i){return[e("span",{staticClass:"option__desc"},[e("span",{staticClass:"option__title"},[t._v(t._s(i.title))])])]}},{key:"option",fn:function(i){return[e("span",{staticClass:"option__wrapper"},[i.class?e("span",{staticClass:"avatar",class:i.class}):2!==i.method?e("NcAvatar",{attrs:{"allow-placeholder":"","display-name":i.title}}):t._e(),e("span",{staticClass:"option__title"},[t._v(t._s(i.title))])],1)]}}],null,!1,2397208459),model:{value:t.value,callback:function(e){t.value=e},expression:"value"}},[e("p",{staticClass:"hint"},[t._v(" "+t._s(t.t("core","Connect items to a project to make them easier to find"))+" ")])])],1)]),e("transition",{attrs:{name:"fade"}},[t.error?e("li",{staticClass:"error"},[t._v(" "+t._s(t.error)+" ")]):t._e()]),t._l(t.collections,(function(t){return e("CollectionListItem",{key:t.id,attrs:{collection:t}})}))],2):t._e()}),[function(){var t=this._self._c;return t("div",{staticClass:"avatar"},[t("span",{staticClass:"icon-projects"})])}],!1,null,"75a4370b",null,null).exports;var rt=r(63814),nt=r(32981),st=r(87485);class at{constructor(){this._capabilities=(0,st.F)()}get defaultPermissions(){var t;return null===(t=this._capabilities.files_sharing)||void 0===t?void 0:t.default_permissions}get isPublicUploadEnabled(){var t;return null===(t=this._capabilities.files_sharing)||void 0===t?void 0:t.public.upload}get isShareWithLinkAllowed(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}get federatedShareDocLink(){return OC.appConfig.core.federatedCloudShareDoc}get defaultExpirationDate(){return this.isDefaultExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}get defaultInternalExpirationDate(){return this.isDefaultInternalExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}get defaultRemoteExpirationDateString(){return this.isDefaultRemoteExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}get enforcePasswordForPublicLink(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}get enableLinkPasswordByDefault(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}get isDefaultExpireDateEnforced(){return!0===OC.appConfig.core.defaultExpireDateEnforced}get isDefaultExpireDateEnabled(){return!0===OC.appConfig.core.defaultExpireDateEnabled}get isDefaultInternalExpireDateEnforced(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}get isDefaultRemoteExpireDateEnforced(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}get isDefaultInternalExpireDateEnabled(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}get isDefaultRemoteExpireDateEnabled(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnabled}get isRemoteShareAllowed(){return!0===OC.appConfig.core.remoteShareAllowed}get isMailShareAllowed(){var t,e;return void 0!==(null===(t=this._capabilities)||void 0===t||null===(t=t.files_sharing)||void 0===t?void 0:t.sharebymail)&&!0===(null===(e=this._capabilities)||void 0===e||null===(e=e.files_sharing)||void 0===e||null===(e=e.public)||void 0===e?void 0:e.enabled)}get defaultExpireDate(){return OC.appConfig.core.defaultExpireDate}get defaultInternalExpireDate(){return OC.appConfig.core.defaultInternalExpireDate}get defaultRemoteExpireDate(){return OC.appConfig.core.defaultRemoteExpireDate}get isResharingAllowed(){return!0===OC.appConfig.core.resharingAllowed}get isPasswordForMailSharesRequired(){return void 0!==this._capabilities.files_sharing.sharebymail&&this._capabilities.files_sharing.sharebymail.password.enforced}get shouldAlwaysShowUnique(){var t;return!0===(null===(t=this._capabilities.files_sharing)||void 0===t||null===(t=t.sharee)||void 0===t?void 0:t.always_show_unique)}get allowGroupSharing(){return!0===OC.appConfig.core.allowGroupSharing}get maxAutocompleteResults(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}get minSearchStringLength(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}get passwordPolicy(){return this._capabilities.password_policy?this._capabilities.password_policy:{}}}var ot=r(77905),lt=r(96763);class ct{constructor(t){var e,i,r,n;if(i=this,n=void 0,(r=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var r=i.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(r="_share"))in i?Object.defineProperty(i,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):i[r]=n,t.ocs&&t.ocs.data&&t.ocs.data[0]&&(t=t.ocs.data[0]),t.hide_download=!!t.hide_download,t.mail_send=!!t.mail_send,t.attributes&&"string"==typeof t.attributes)try{t.attributes=JSON.parse(t.attributes)}catch(e){lt.warn("Could not parse share attributes returned by server",t.attributes)}t.attributes=null!==(e=t.attributes)&&void 0!==e?e:[],this._share=t}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(t){this._share.permissions=t}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(t){this._share.expiration=t}get token(){return this._share.token}get note(){return this._share.note}set note(t){this._share.note=t}get label(){var t;return null!==(t=this._share.label)&&void 0!==t?t:""}set label(t){this._share.label=t}get mailSend(){return!0===this._share.mail_send}get hideDownload(){return!0===this._share.hide_download}set hideDownload(t){this._share.hide_download=!0===t}get password(){return this._share.password}set password(t){this._share.password=t}get passwordExpirationTime(){return this._share.password_expiration_time}set passwordExpirationTime(t){this._share.password_expiration_time=t}get sendPasswordByTalk(){return this._share.send_password_by_talk}set sendPasswordByTalk(t){this._share.send_password_by_talk=t}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&OC.PERMISSION_READ)}get hasCreatePermission(){return!!(this.permissions&OC.PERMISSION_CREATE)}get hasDeletePermission(){return!!(this.permissions&OC.PERMISSION_DELETE)}get hasUpdatePermission(){return!!(this.permissions&OC.PERMISSION_UPDATE)}get hasSharePermission(){return!!(this.permissions&OC.PERMISSION_SHARE)}get hasDownloadPermission(){for(const t in this._share.attributes){const e=this._share.attributes[t];if("permissions"===e.scope&&"download"===e.key)return e.enabled}return!0}set hasDownloadPermission(t){this.setAttribute("permissions","download",!!t)}setAttribute(t,e,i){const r={scope:t,key:e,enabled:i};for(const t in this._share.attributes){const e=this._share.attributes[t];if(e.scope===r.scope&&e.key===r.key)return void this._share.attributes.splice(t,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}}const ht={data:()=>({SHARE_TYPES:ot.Z})};var ut=r(85168);const dt={name:"CheckBoldIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var pt=r(14486);const ft=(0,pt.A)(dt,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon check-bold-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,At={name:"ClipboardFlowIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},gt=(0,pt.A)(At,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon clipboard-flow-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M15,19L11,15H14V8H16V15H19L15,19M10,16H8V9H5L9,5L13,9H10V16"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,mt={name:"SharingEntrySimple",components:{NcActions:z.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 vt=r(17557),_t={};_t.styleTagTransform=A(),_t.setAttributes=u(),_t.insert=c().bind(null,"head"),_t.domAPI=o(),_t.insertStyleElement=p(),s()(vt.A,_t),vt.A&&vt.A.locals&&vt.A.locals;const yt=(0,pt.A)(mt,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"sharing-entry"},[t._t("avatar"),t._v(" "),e("div",{staticClass:"sharing-entry__desc"},[e("span",{staticClass:"sharing-entry__title"},[t._v(t._s(t.title))]),t._v(" "),t.subtitle?e("p",[t._v("\n\t\t\t"+t._s(t.subtitle)+"\n\t\t")]):t._e()]),t._v(" "),t.$slots.default?e("NcActions",{ref:"actionsComponent",staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":t.ariaExpandedValue}},[t._t("default")],2):t._e()],2)}),[],!1,null,"1852ea78",null).exports;var Ct=r(96763);const wt={name:"SharingEntryInternal",components:{NcActionButton:j.A,SharingEntrySimple:yt,CheckIcon:ft,ClipboardIcon:gt},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({copied:!1,copySuccess:!1}),computed:{internalLink(){return window.location.protocol+"//"+window.location.host+(0,rt.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,ut.Te)(t("files_sharing","Link copied")),this.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(t){this.copySuccess=!1,this.copied=!0,Ct.error(t)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}}}};var Et=r(16469),bt={};bt.styleTagTransform=A(),bt.setAttributes=u(),bt.insert=c().bind(null,"head"),bt.domAPI=o(),bt.insertStyleElement=p(),s()(Et.A,bt),Et.A&&Et.A.locals&&Et.A.locals;const St=(0,pt.A)(wt,(function(){var t=this,e=t._self._c;return e("ul",[e("SharingEntrySimple",{ref:"shareEntrySimple",staticClass:"sharing-entry__internal",attrs:{title:t.t("files_sharing","Internal link"),subtitle:t.internalLinkSubtitle},scopedSlots:t._u([{key:"avatar",fn:function(){return[e("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[t._v(" "),e("NcActionButton",{attrs:{title:t.copyLinkTooltip,"aria-label":t.copyLinkTooltip},on:{click:t.copyLink},scopedSlots:t._u([{key:"icon",fn:function(){return[t.copied&&t.copySuccess?e("CheckIcon",{staticClass:"icon-checkmark-color",attrs:{size:20}}):e("ClipboardIcon",{attrs:{size:20}})]},proxy:!0}])})],1)],1)}),[],!1,null,"e40cd936",null).exports;var xt=r(21777),Tt=r(17334),Pt=r.n(Tt),kt=r(96763);const Rt=new at;async function Dt(){if(Rt.passwordPolicy.api&&Rt.passwordPolicy.api.generate)try{const e=await W.Ay.get(Rt.passwordPolicy.api.generate);if(e.data.ocs.data.password)return(0,ut.Te)(t("files_sharing","Password created successfully")),e.data.ocs.data.password}catch(e){kt.info("Error generating password from password_policy",e),(0,ut.Qg)(t("files_sharing","Error generating password from password policy"))}const e=new Uint8Array(10);self.crypto.getRandomValues(e);let i="";for(let t=0;t<e.length;t++)i+="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789".charAt(.20392156862745098*e[t]);return i}r(48318);var It=r(61338),Bt=r(96763);const Nt=(0,rt.KT)("apps/files_sharing/api/v1/shares"),Lt={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{var p;const t=await W.Ay.post(Nt,{path:i,permissions:r,shareType:n,shareWith:s,publicUpload:a,password:o,sendPasswordByTalk:l,expireDate:c,label:h,note:u,attributes:d});if(null==t||null===(p=t.data)||void 0===p||!p.ocs)throw t;const e=new ct(t.data.ocs.data);return(0,It.Ic)("files_sharing:share:created",{share:e}),e}catch(e){var f;Bt.error("Error while creating share",e);const i=null==e||null===(f=e.response)||void 0===f||null===(f=f.data)||void 0===f||null===(f=f.ocs)||void 0===f||null===(f=f.meta)||void 0===f?void 0:f.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{var i;const t=await W.Ay.delete(Nt+"/".concat(e));if(null==t||null===(i=t.data)||void 0===i||!i.ocs)throw t;return(0,It.Ic)("files_sharing:share:deleted",{id:e}),!0}catch(e){var r;Bt.error("Error while deleting share",e);const i=null==e||null===(r=e.response)||void 0===r||null===(r=r.data)||void 0===r||null===(r=r.ocs)||void 0===r||null===(r=r.meta)||void 0===r?void 0:r.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{var r;const t=await W.Ay.put(Nt+"/".concat(e),i);if((0,It.Ic)("files_sharing:share:updated",{id:e}),null!=t&&null!==(r=t.data)&&void 0!==r&&r.ocs)return t.data.ocs.data;throw t}catch(e){if(Bt.error("Error while updating share",e),400!==e.response.status){var n;const i=null==e||null===(n=e.response)||void 0===n||null===(n=n.data)||void 0===n||null===(n=n.ocs)||void 0===n||null===(n=n.meta)||void 0===n?void 0:n.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)}}}},Ht={methods:{async openSharingDetails(t){let e={};if(t.handler){const i={};this.suggestions&&(i.suggestions=this.suggestions,i.fileInfo=this.fileInfo,i.query=this.query);const r=await t.handler(i);e=this.mapShareRequestToShareObject(r)}else e=this.mapShareRequestToShareObject(t);const i={fileInfo:this.fileInfo,share:e};this.$emit("open-sharing-details",i)},openShareDetailsForCustomSettings(t){t.setCustomPermissions=!0,this.openSharingDetails(t)},mapShareRequestToShareObject(t){var e;if(t.id)return t;const i={attributes:[{enabled:!0,key:"download",scope:"permissions"}],share_type:t.shareType,share_with:t.shareWith,is_no_user:t.isNoUser,user:t.shareWith,share_with_displayname:t.displayName,subtitle:t.subtitle,permissions:null!==(e=t.permissions)&&void 0!==e?e:(new at).defaultPermissions,expiration:""};return new ct(i)}}};var Ot=r(96763);const Mt={name:"SharingInput",components:{NcSelect:_.A},mixins:[ht,Lt,Ht],props:{shares:{type:Array,default:()=>[],required:!0},linkShares:{type:Array,default:()=>[],required:!0},fileInfo:{type:Object,default:()=>{},required:!0},reshare:{type:ct,default:null},canReshare:{type:Boolean,required:!0}},data:()=>({config:new at,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?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.getRecommendations()},methods:{onSelected(t){this.value=null,this.openSharingDetails(t)},async asyncFind(t){this.query=t.trim(),this.isValidQuery&&(this.loading=!0,await this.debounceGetSuggestions(t))},async getSuggestions(e){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.loading=!0,!0===(0,st.F)().files_sharing.sharee.query_lookup_default&&(i=!0);const r=[this.SHARE_TYPES.SHARE_TYPE_USER,this.SHARE_TYPES.SHARE_TYPE_GROUP,this.SHARE_TYPES.SHARE_TYPE_REMOTE,this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,this.SHARE_TYPES.SHARE_TYPE_CIRCLE,this.SHARE_TYPES.SHARE_TYPE_ROOM,this.SHARE_TYPES.SHARE_TYPE_GUEST,this.SHARE_TYPES.SHARE_TYPE_DECK,this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH];!0===(0,st.F)().files_sharing.public.enabled&&r.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL);let n=null;try{n=await W.Ay.get((0,rt.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(t){return void Ot.error("Error fetching suggestions",t)}const s=n.data.ocs.data,a=n.data.ocs.data.exact;s.exact=[];const o=Object.values(a).reduce(((t,e)=>t.concat(e)),[]),l=Object.values(s).reduce(((t,e)=>t.concat(e)),[]),c=this.filterOutExistingShares(o).map((t=>this.formatForMultiselect(t))).sort(((t,e)=>t.shareType-e.shareType)),h=this.filterOutExistingShares(l).map((t=>this.formatForMultiselect(t))).sort(((t,e)=>t.shareType-e.shareType)),u=[];s.lookupEnabled&&!i&&u.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0});const d=this.externalResults.filter((t=>!t.condition||t.condition(this))),p=c.concat(h).concat(d).concat(u),f=p.reduce(((t,e)=>e.displayName?(t[e.displayName]||(t[e.displayName]=0),t[e.displayName]++,t):t),{});this.suggestions=p.map((t=>f[t.displayName]>1&&!t.desc?{...t,desc:t.shareWithDisplayNameUnique}:t)),this.loading=!1,Ot.info("suggestions",this.suggestions)},debounceGetSuggestions:Pt()((function(){this.getSuggestions(...arguments)}),300),async getRecommendations(){this.loading=!0;let t=null;try{t=await W.Ay.get((0,rt.KT)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:this.fileInfo.type}})}catch(t){return void Ot.error("Error fetching recommendations",t)}const e=this.externalResults.filter((t=>!t.condition||t.condition(this))),i=Object.values(t.data.ocs.data.exact).reduce(((t,e)=>t.concat(e)),[]);this.recommendations=this.filterOutExistingShares(i).map((t=>this.formatForMultiselect(t))).concat(e),this.loading=!1,Ot.info("recommendations",this.recommendations)},filterOutExistingShares(t){return t.reduce(((t,e)=>{if("object"!=typeof e)return t;try{if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER){if(e.value.shareWith===(0,xt.HW)().uid)return t;if(this.reshare&&e.value.shareWith===this.reshare.owner)return t}if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==this.linkShares.map((t=>t.shareWith)).indexOf(e.value.shareWith.trim()))return t}else{const i=this.shares.reduce(((t,e)=>(t[e.shareWith]=e.type,t)),{}),r=e.value.shareWith.trim();if(r in i&&i[r]===e.value.shareType)return t}t.push(e)}catch{return t}return t}),[])},shareTypeToIcon(e){switch(e){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return{icon:"icon-user",iconTitle:t("files_sharing","Guest")};case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return{icon:"icon-group",iconTitle:t("files_sharing","Group")};case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return{icon:"icon-mail",iconTitle:t("files_sharing","Email")};case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return{icon:"icon-teams",iconTitle:t("files_sharing","Team")};case this.SHARE_TYPES.SHARE_TYPE_ROOM:return{icon:"icon-room",iconTitle:t("files_sharing","Talk conversation")};case this.SHARE_TYPES.SHARE_TYPE_DECK:return{icon:"icon-deck",iconTitle:t("files_sharing","Deck board")};case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return{icon:"icon-sciencemesh",iconTitle:t("files_sharing","ScienceMesh")};default:return{}}},formatForMultiselect(e){let i;var r;if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)i=null!==(r=e.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!e.value.server)if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)i=e.value.shareWith;else{var n;i=null!==(n=e.shareWithDescription)&&void 0!==n?n:""}else i=t("files_sharing","on {server}",{server:e.value.server});return{shareWith:e.value.shareWith,shareType:e.value.shareType,user:e.uuid||e.value.shareWith,isNoUser:e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:e.name||e.label,subname:i,shareWithDisplayNameUnique:e.shareWithDisplayNameUnique||"",...this.shareTypeToIcon(e.value.shareType)}}}};var Yt=r(82162),Ut={};Ut.styleTagTransform=A(),Ut.setAttributes=u(),Ut.insert=c().bind(null,"head"),Ut.domAPI=o(),Ut.insertStyleElement=p(),s()(Yt.A,Ut),Yt.A&&Yt.A.locals&&Yt.A.locals;const Vt=(0,pt.A)(Mt,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"sharing-search"},[e("label",{attrs:{for:"sharing-search-input"}},[t._v(t._s(t.t("files_sharing","Search for share recipients")))]),t._v(" "),e("NcSelect",{ref:"select",staticClass:"sharing-search__input",attrs:{"input-id":"sharing-search-input",disabled:!t.canReshare,loading:t.loading,filterable:!1,placeholder:t.inputPlaceholder,"clear-search-on-blur":()=>!1,"user-select":!0,options:t.options},on:{search:t.asyncFind,"option:selected":t.onSelected},scopedSlots:t._u([{key:"no-options",fn:function(e){let{search:i}=e;return[t._v("\n\t\t\t"+t._s(i?t.noResultText:t.t("files_sharing","No recommendations. Start typing."))+"\n\t\t")]}}]),model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})],1)}),[],!1,null,null,null).exports;var Ft=r(71225),zt=r(73267),jt=r(32831),qt=r(31346);const Wt=(0,qt.H4)();var $t=r(49264),Kt=r(35947);const Gt=(0,Kt.YK)().setApp("files_sharing").detectUser().build(),Zt={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},Qt={READ_ONLY:Zt.READ,UPLOAD_AND_UPDATE:Zt.READ|Zt.UPDATE|Zt.CREATE|Zt.DELETE,FILE_DROP:Zt.CREATE,ALL:Zt.UPDATE|Zt.CREATE|Zt.READ|Zt.DELETE|Zt.SHARE,ALL_FILE:Zt.UPDATE|Zt.READ|Zt.SHARE};var Jt=r(96763);const Xt={mixins:[Lt,ht],props:{fileInfo:{type:Object,default:()=>{},required:!0},share:{type:ct,default:null},isUnique:{type:Boolean,default:!0}},data(){var t;return{config:new at,node:null,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new $t.A({concurrency:1}),reactiveState:null===(t=this.share)||void 0===t?void 0:t.state}},computed:{path(){return(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/")},hasNote:{get(){return""!==this.share.note},set(t){this.share.note=t?null:""}},dateTomorrow:()=>new Date((new Date).setDate((new Date).getDate()+1)),lang(){const t=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],e=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:e,weekdaysMin:t,weekdaysShort:t},monthFormat:"MMM"}},isFolder(){return"dir"===this.fileInfo.type},isPublicShare(){var t;const e=null!==(t=this.share.shareType)&&void 0!==t?t:this.share.type;return[this.SHARE_TYPES.SHARE_TYPE_LINK,this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(e)},isRemoteShare(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE},isShareOwner(){return this.share&&this.share.owner===(0,xt.HW)().uid},isExpiryDateEnforced(){return this.isPublicShare?this.config.isDefaultExpireDateEnforced:this.isRemoteShare?this.config.isDefaultRemoteExpireDateEnforced:this.config.isDefaultInternalExpireDateEnforced},hasCustomPermissions(){return![Qt.ALL,Qt.READ_ONLY,Qt.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 t={path:this.path};try{this.node=await(async t=>{const e=(0,qt.VL)(),i=await Wt.stat("".concat(qt.lJ).concat(t.path),{details:!0,data:e});return(0,qt.Al)(i.data)})(t),Gt.info("Fetched node:",{node:this.node})}catch(t){Gt.error("Error:",t)}},checkShare:t=>(!t.password||"string"==typeof t.password&&""!==t.password.trim())&&!(t.expirationDate&&!t.expirationDate.isValid()),formatDateToString:t=>new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())).toISOString().split("T")[0],onExpirationChange:Pt()((function(t){this.share.expireDate=this.formatDateToString(new Date(t))}),500),onExpirationDisable(){this.share.expireDate=""},onNoteChange(t){this.$set(this.share,"newNote",t.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),Jt.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,ut.Te)(e),this.$emit("remove:share",this.share),await this.getNode(),(0,It.Ic)("files:node:updated",this.node)}catch(t){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=>{"object"==typeof this.share[t]?e[t]=JSON.stringify(this.share[t]):e[t]=this.share[t].toString()})),void 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,ut.Te)(this.updateSuccessMessage(i))}catch(e){Gt.error("Could not update share",{error:e,share:this.share,propertyNames:i});const{message:r}=e;r&&""!==r?(this.onSyncError(i[0],r),(0,ut.Qg)(r)):(0,ut.Qg)(t("files_sharing","Could not update share"))}finally{this.saving=!1}}))}Jt.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 expire 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(t,e){switch(this.open=!0,t){case"password":case"pending":case"expireDate":case"label":case"note":{this.$set(this.errors,t,e);let i=this.$refs[t];if(i){i.$el&&(i=i.$el);const t=i.querySelector(".focusable");t&&t.focus()}break}case"sendPasswordByTalk":this.$set(this.errors,t,e),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:Pt()((function(t){this.queueUpdate(t)}),500)}},te={name:"SharingEntryInherited",components:{NcActionButton:j.A,NcActionLink:zt.A,NcActionText:jt.A,NcAvatar:v.A,SharingEntrySimple:yt},mixins:[Xt],props:{share:{type:ct,required:!0}},computed:{viaFileTargetUrl(){return(0,rt.Jv)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName(){return(0,Ft.P8)(this.share.viaPath)}}};var ee=r(41699),ie={};ie.styleTagTransform=A(),ie.setAttributes=u(),ie.insert=c().bind(null,"head"),ie.domAPI=o(),ie.insertStyleElement=p(),s()(ee.A,ie),ee.A&&ee.A.locals&&ee.A.locals;const re=(0,pt.A)(te,(function(){var t=this,e=t._self._c;return e("SharingEntrySimple",{key:t.share.id,staticClass:"sharing-entry__inherited",attrs:{title:t.share.shareWithDisplayName},scopedSlots:t._u([{key:"avatar",fn:function(){return[e("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:t.share.shareWith,"display-name":t.share.shareWithDisplayName}})]},proxy:!0}])},[t._v(" "),e("NcActionText",{attrs:{icon:"icon-user"}},[t._v("\n\t\t"+t._s(t.t("files_sharing","Added by {initiator}",{initiator:t.share.ownerDisplayName}))+"\n\t")]),t._v(" "),t.share.viaPath&&t.share.viaFileid?e("NcActionLink",{attrs:{icon:"icon-folder",href:t.viaFileTargetUrl}},[t._v("\n\t\t"+t._s(t.t("files_sharing","Via “{folder}”",{folder:t.viaFolderName}))+"\n\t")]):t._e(),t._v(" "),t.share.canDelete?e("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),t.onDelete.apply(null,arguments)}}},[t._v("\n\t\t"+t._s(t.t("files_sharing","Unshare"))+"\n\t")]):t._e()],1)}),[],!1,null,"283ca89e",null).exports;var ne=r(96763);const se={name:"SharingInherited",components:{NcActionButton:j.A,SharingEntryInherited:re,SharingEntrySimple:yt},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"".concat(this.fileInfo.path,"/").concat(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 t=(0,rt.KT)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:this.fullPath}),e=await W.Ay.get(t);this.shares=e.data.ocs.data.map((t=>new ct(t))).sort(((t,e)=>e.createdTime-t.createdTime)),ne.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(t){const e=this.shares.findIndex((e=>e===t));this.shares.splice(e,1)}}};var ae=r(4442),oe={};oe.styleTagTransform=A(),oe.setAttributes=u(),oe.insert=c().bind(null,"head"),oe.domAPI=o(),oe.insertStyleElement=p(),s()(ae.A,oe),ae.A&&ae.A.locals&&ae.A.locals;const le=(0,pt.A)(se,(function(){var t=this,e=t._self._c;return e("ul",{attrs:{id:"sharing-inherited-shares"}},[e("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:t.mainTitle,subtitle:t.subTitle,"aria-expanded":t.showInheritedShares},scopedSlots:t._u([{key:"avatar",fn:function(){return[e("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[t._v(" "),e("NcActionButton",{attrs:{icon:t.showInheritedSharesIcon,"aria-label":t.toggleTooltip,title:t.toggleTooltip},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.toggleInheritedShares.apply(null,arguments)}}})],1),t._v(" "),t._l(t.shares,(function(i){return e("SharingEntryInherited",{key:i.id,attrs:{"file-info":t.fileInfo,share:i},on:{"remove:share":t.removeShare}})}))],2)}),[],!1,null,"50f9af8c",null).exports;var ce=r(17816),he=r.n(ce),ue=r(1790),de=r(44131),pe=r(80114),fe=r(94219);const Ae={name:"TuneIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ge=(0,pt.A)(Ae,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon tune-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,me={name:"CalendarBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ve=(0,pt.A)(me,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon calendar-blank-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,_e={name:"QrcodeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ye=(0,pt.A)(_e,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon qrcode-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,Ce={name:"ExclamationIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},we=(0,pt.A)(Ce,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon exclamation-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,Ee={name:"LockIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},be=(0,pt.A)(Ee,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon lock-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var Se=r(24325),xe=r(27577);const Te={name:"TriangleSmallDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Pe=(0,pt.A)(Te,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon triangle-small-down-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M8 9H16L12 16"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,ke={name:"EyeOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Re=(0,pt.A)(ke,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon eye-outline-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var De=r(93919);const Ie={name:"FileUploadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Be=(0,pt.A)(Ie,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon file-upload-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,Ne={name:"SharingEntryQuickShareSelect",components:{DropdownIcon:Pe,NcActions:z.A,NcActionButton:j.A},mixins:[Xt,Ht,ht],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 drop"),customPermissionsText:()=>t("files_sharing","Custom permissions"),preSelectedOption(){return(this.share.permissions&~Zt.SHARE)===Qt.READ_ONLY?this.canViewText:this.share.permissions===Qt.ALL||this.share.permissions===Qt.ALL_FILE?this.canEditText:(this.share.permissions&~Zt.SHARE)===Qt.FILE_DROP?this.fileDropText:this.customPermissionsText},options(){const t=[{label:this.canViewText,icon:Re},{label:this.canEditText,icon:De.A}];return this.supportsFileDrop&&t.push({label:this.fileDropText,icon:Be}),t.push({label:this.customPermissionsText,icon:ge}),t},supportsFileDrop(){if(this.isFolder&&this.config.isPublicUploadEnabled){var t;const e=null!==(t=this.share.type)&&void 0!==t?t:this.share.shareType;return[this.SHARE_TYPES.SHARE_TYPE_LINK,this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(e)}return!1},dropDownPermissionValue(){switch(this.selectedOption){case this.canEditText:return this.isFolder?Qt.ALL:Qt.ALL_FILE;case this.fileDropText:return Qt.FILE_DROP;case this.customPermissionsText:return"custom";case this.canViewText:default:return Qt.READ_ONLY}}},created(){this.selectedOption=this.preSelectedOption},methods:{selectOption(t){this.selectedOption=t,t===this.customPermissionsText?this.$emit("open-sharing-details"):(this.share.permissions=this.dropDownPermissionValue,this.queueUpdate("permissions"),this.$refs.quickShareActions.$refs.menuButton.$el.focus())}}},Le=Ne;var He=r(45340),Oe={};Oe.styleTagTransform=A(),Oe.setAttributes=u(),Oe.insert=c().bind(null,"head"),Oe.domAPI=o(),Oe.insertStyleElement=p(),s()(He.A,Oe),He.A&&He.A.locals&&He.A.locals;const Me=(0,pt.A)(Le,(function(){var t=this,e=t._self._c;return e("NcActions",{ref:"quickShareActions",staticClass:"share-select",attrs:{"menu-name":t.selectedOption,"aria-label":t.ariaLabel,type:"tertiary-no-background","force-name":""},scopedSlots:t._u([{key:"icon",fn:function(){return[e("DropdownIcon",{attrs:{size:15}})]},proxy:!0}])},[t._v(" "),t._l(t.options,(function(i){return e("NcActionButton",{key:i.label,attrs:{type:"radio","model-value":i.label===t.selectedOption,"close-after-click":""},on:{click:function(e){return t.selectOption(i.label)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(i.icon,{tag:"component"})]},proxy:!0}],null,!0)},[t._v("\n\t\t"+t._s(i.label)+"\n\t")])}))],2)}),[],!1,null,"6e5dd9f1",null).exports,Ye={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:()=>({})},fileInfo:{type:Object,default:()=>{},required:!0},share:{type:ct,default:null}},computed:{data(){return this.action.data(this)}}},Ue=(0,pt.A)(Ye,(function(){var t=this;return(0,t._self._c)(t.data.is,t._g(t._b({tag:"Component"},"Component",t.data,!1),t.action.handlers),[t._v("\n\t"+t._s(t.data.text)+"\n")])}),[],!1,null,null,null).exports;var Ve=r(96763);const Fe={name:"SharingEntryLink",components:{ExternalShareAction:Ue,NcActions:z.A,NcActionButton:j.A,NcActionCheckbox:ue.A,NcActionInput:de.A,NcActionLink:zt.A,NcActionText:jt.A,NcActionSeparator:pe.A,NcAvatar:v.A,NcDialog:fe.A,VueQrcode:he(),Tune:ge,IconCalendarBlank:ve,IconQr:ye,ErrorIcon:we,LockIcon:be,CheckIcon:ft,ClipboardIcon:gt,CloseIcon:Se.A,PlusIcon:xe.A,SharingEntryQuickShareSelect:Me},mixins:[Xt,Ht],props:{canReshare:{type:Boolean,default:!0},index:{type:Number,default:null}},data:()=>({shareCreationComplete:!1,copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state,logger:(0,Kt.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?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return this.index>1?t("files_sharing","Share link ({index})",{index:this.index}):t("files_sharing","Share link")},subtitle(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(t){q.Ay.set(this.share,"password",t?await Dt():""),q.Ay.set(this.share,"newPassword",this.share.password)}},passwordExpirationTime(){if(null===this.share.passwordExpirationTime)return null;const t=moment(this.share.passwordExpirationTime);return!(t.diff(moment())<0)&&t.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(t){this.share.sendPasswordByTalk=t}},isEmailShareType(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword(){return this.config.enableLinkPasswordByDefault&&this.share&&!this.share.id},pendingEnforcedPassword(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},sharePolicyHasRequiredProperties(){return this.config.enforcePasswordForPublicLink||this.config.isDefaultExpireDateEnforced},requiredPropertiesMissing(){if(!this.sharePolicyHasRequiredProperties)return!1;if(!this.share)return!0;if(this.share.id)return!0;const t=this.config.enforcePasswordForPublicLink&&!this.share.password,e=this.config.isDefaultExpireDateEnforced&&!this.share.expireDate;return t||e},hasUnsavedPassword(){return void 0!==this.share.newPassword},shareLink(){return window.location.protocol+"//"+window.location.host+(0,rt.Jv)("/s/")+this.share.token},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((t=>(t.shareType.includes(ot.Z.SHARE_TYPE_LINK)||t.shareType.includes(ot.Z.SHARE_TYPE_EMAIL))&&!t.advanced))},isPasswordPolicyEnabled(){return"object"==typeof this.config.passwordPolicy},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((t=>"download"===t.key&&"permissions"===t.scope&&!1===t.enabled))}},methods:{async onNewLinkShare(){if(this.logger.debug("onNewLinkShare called (with this.share)",this.share),this.loading)return;const e={share_type:ot.Z.SHARE_TYPE_LINK};if(this.config.isDefaultExpireDateEnforced&&(e.expiration=this.formatDateToString(this.config.defaultExpirationDate)),this.logger.debug("Missing required properties?",this.requiredPropertiesMissing),this.sharePolicyHasRequiredProperties&&this.requiredPropertiesMissing){this.pending=!0,this.shareCreationComplete=!1,this.logger.info("Share policy requires mandated properties (password)..."),(this.config.enableLinkPasswordByDefault||this.config.enforcePasswordForPublicLink)&&(e.password=await Dt());const t=new ct(e),i=await new Promise((e=>{this.$emit("add:share",t,e)}));this.open=!1,this.pending=!1,i.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(t){return this.pending=!1,this.logger.error("Error creating share",t),!1}return!0}return this.open=!0,(0,ut.Qg)(t("files_sharing","Error, please enter proper password and/or expiration date")),!1}const i=new ct(e);await this.pushNewLinkShare(i),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:ot.Z.SHARE_TYPE_LINK,password:e.password,expireDate:e.expireDate,attributes:JSON.stringify(this.fileInfo.shareAttributes)};Ve.debug("Creating link share with options",r);const n=await this.createShare(r);let s;this.open=!1,this.shareCreationComplete=!0,Ve.debug("Link share created",n),s=i?await new Promise((t=>{this.$emit("update:share",n,t)})):await new Promise((t=>{this.$emit("add:share",n,t)})),await this.getNode(),(0,It.Ic)("files:node:updated",this.node),this.config.enforcePasswordForPublicLink||s.copyLink(),(0,ut.Te)(t("files_sharing","Link share created"))}catch(e){var r;const i=null==e||null===(r=e.response)||void 0===r||null===(r=r.data)||void 0===r||null===(r=r.ocs)||void 0===r||null===(r=r.meta)||void 0===r?void 0:r.message;if(!i)return(0,ut.Qg)(t("files_sharing","Error while creating the share")),void Ve.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,ut.Te)(t("files_sharing","Link copied")),this.$refs.copyButton.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(t){this.copySuccess=!1,this.copied=!0,Ve.error(t)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}},onPasswordChange(t){this.$set(this.share,"newPassword",t)},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()},onCancel(){this.shareCreationComplete||this.$emit("remove:share",this.share)}}},ze=Fe;var je=r(54228),qe={};qe.styleTagTransform=A(),qe.setAttributes=u(),qe.insert=c().bind(null,"head"),qe.domAPI=o(),qe.insertStyleElement=p(),s()(je.A,qe),je.A&&je.A.locals&&je.A.locals;const We={name:"SharingLinkList",components:{SharingEntryLink:(0,pt.A)(ze,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":t.share}},[e("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":t.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),t._v(" "),e("div",{staticClass:"sharing-entry__summary"},[e("div",{staticClass:"sharing-entry__desc"},[e("span",{staticClass:"sharing-entry__title",attrs:{title:t.title}},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),t.subtitle?e("p",[t._v("\n\t\t\t\t"+t._s(t.subtitle)+"\n\t\t\t")]):t._e(),t._v(" "),t.share&&void 0!==t.share.permissions?e("SharingEntryQuickShareSelect",{attrs:{share:t.share,"file-info":t.fileInfo},on:{"open-sharing-details":function(e){return t.openShareDetailsForCustomSettings(t.share)}}}):t._e()],1),t._v(" "),t.share&&!t.isEmailShareType&&t.share.token?e("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[e("NcActionButton",{attrs:{title:t.copyLinkTooltip,"aria-label":t.copyLinkTooltip},on:{click:function(e){return e.preventDefault(),t.copyLink.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.copied&&t.copySuccess?e("CheckIcon",{staticClass:"icon-checkmark-color",attrs:{size:20}}):e("ClipboardIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,4269614823)})],1):t._e()],1),t._v(" "),!t.pending&&(t.pendingPassword||t.pendingEnforcedPassword||t.pendingExpirationDate)?e("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":t.actionsTooltip,"menu-align":"right",open:t.open},on:{"update:open":function(e){t.open=e},close:t.onCancel}},[t.errors.pending?e("NcActionText",{staticClass:"error",scopedSlots:t._u([{key:"icon",fn:function(){return[e("ErrorIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,1966124155)},[t._v("\n\t\t\t"+t._s(t.errors.pending)+"\n\t\t")]):e("NcActionText",{attrs:{icon:"icon-info"}},[t._v("\n\t\t\t"+t._s(t.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),t._v(" "),t.pendingPassword?e("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:t.isPasswordProtected,disabled:t.config.enforcePasswordForPublicLink||t.saving},on:{"update:checked":function(e){t.isPasswordProtected=e},uncheck:t.onPasswordDisable}},[t._v("\n\t\t\t"+t._s(t.config.enforcePasswordForPublicLink?t.t("files_sharing","Password protection (enforced)"):t.t("files_sharing","Password protection"))+"\n\t\t")]):t._e(),t._v(" "),t.pendingEnforcedPassword||t.share.password?e("NcActionInput",{staticClass:"share-link-password",attrs:{label:t.t("files_sharing","Enter a password"),value:t.share.password,disabled:t.saving,required:t.config.enableLinkPasswordByDefault||t.config.enforcePasswordForPublicLink,minlength:t.isPasswordPolicyEnabled&&t.config.passwordPolicy.minLength,autocomplete:"new-password"},on:{"update:value":function(e){return t.$set(t.share,"password",e)},submit:t.onNewLinkShare},scopedSlots:t._u([{key:"icon",fn:function(){return[e("LockIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2056568168)}):t._e(),t._v(" "),t.pendingExpirationDate?e("NcActionInput",{staticClass:"share-link-expire-date",attrs:{label:t.t("files_sharing","Expiration date (enforced)"),disabled:t.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(t.share.expireDate),type:"date",min:t.dateTomorrow,max:t.maxExpirationDateEnforced},on:{input:function(e){t.onExpirationChange}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconCalendarBlank",{attrs:{size:20}})]},proxy:!0}],null,!1,3418578971)}):t._e(),t._v(" "),e("NcActionButton",{on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.onNewLinkShare.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("CheckIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2630571749)},[t._v("\n\t\t\t"+t._s(t.t("files_sharing","Create share"))+"\n\t\t")]),t._v(" "),e("NcActionButton",{on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.onCancel.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("CloseIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2428343285)},[t._v("\n\t\t\t"+t._s(t.t("files_sharing","Cancel"))+"\n\t\t")])],1):t.loading?e("div",{staticClass:"icon-loading-small sharing-entry__loading"}):e("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":t.actionsTooltip,"menu-align":"right",open:t.open},on:{"update:open":function(e){t.open=e},close:t.onMenuClose}},[t.share?[t.share.canEdit&&t.canReshare?[e("NcActionButton",{attrs:{disabled:t.saving,"close-after-click":!0},on:{click:function(e){return e.preventDefault(),t.openSharingDetails.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Tune",{attrs:{size:20}})]},proxy:!0}],null,!1,1300586850)},[t._v("\n\t\t\t\t\t"+t._s(t.t("files_sharing","Customize link"))+"\n\t\t\t\t")])]:t._e(),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(e){e.preventDefault(),t.showQRCode=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconQr",{attrs:{size:20}})]},proxy:!0}],null,!1,1082198240)},[t._v("\n\t\t\t\t"+t._s(t.t("files_sharing","Generate QR code"))+"\n\t\t\t")]),t._v(" "),e("NcActionSeparator"),t._v(" "),t._l(t.externalLinkActions,(function(i){return e("ExternalShareAction",{key:i.id,attrs:{id:i.id,action:i,"file-info":t.fileInfo,share:t.share}})})),t._v(" "),t._l(t.externalLegacyLinkActions,(function(i,r){let{icon:n,url:s,name:a}=i;return e("NcActionLink",{key:r,attrs:{href:s(t.shareLink),icon:n,target:"_blank"}},[t._v("\n\t\t\t\t"+t._s(a)+"\n\t\t\t")])})),t._v(" "),!t.isEmailShareType&&t.canReshare?e("NcActionButton",{staticClass:"new-share-link",on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.onNewLinkShare.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("PlusIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2953566425)},[t._v("\n\t\t\t\t"+t._s(t.t("files_sharing","Add another link"))+"\n\t\t\t")]):t._e(),t._v(" "),t.share.canDelete?e("NcActionButton",{attrs:{disabled:t.saving},on:{click:function(e){return e.preventDefault(),t.onDelete.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("CloseIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2428343285)},[t._v("\n\t\t\t\t"+t._s(t.t("files_sharing","Unshare"))+"\n\t\t\t")]):t._e()]:t.canReshare?e("NcActionButton",{staticClass:"new-share-link",attrs:{title:t.t("files_sharing","Create a new share link"),"aria-label":t.t("files_sharing","Create a new share link"),icon:t.loading?"icon-loading-small":"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.onNewLinkShare.apply(null,arguments)}}}):t._e()],2),t._v(" "),t.showQRCode?e("NcDialog",{attrs:{size:"normal",open:t.showQRCode,name:t.title,"close-on-click-outside":!0},on:{"update:open":function(e){t.showQRCode=e},close:function(e){t.showQRCode=!1}}},[e("div",{staticClass:"qr-code-dialog"},[e("VueQrcode",{staticClass:"qr-code-dialog__img",attrs:{tag:"img",value:t.shareLink}})],1)]):t._e()],1)}),[],!1,null,"4ec6c807",null).exports},mixins:[ht,Ht],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0},canReshare:{type:Boolean,required:!0}},data:()=>({canLinkShare:(0,st.F)().files_sharing.public.enabled}),computed:{hasLinkShares(){return this.shares.filter((t=>t.type===this.SHARE_TYPES.SHARE_TYPE_LINK)).length>0},hasShares(){return this.shares.length>0}},methods:{addShare(t,e){this.shares.push(t),this.awaitForShare(t,e)},awaitForShare(t,e){this.$nextTick((()=>{const i=this.$children.find((e=>e.share===t));i&&e(i)}))},removeShare(t){const e=this.shares.findIndex((e=>e===t));this.shares.splice(e,1)}}},$e=(0,pt.A)(We,(function(){var t=this,e=t._self._c;return t.canLinkShare?e("ul",{staticClass:"sharing-link-list"},[!t.hasLinkShares&&t.canReshare?e("SharingEntryLink",{attrs:{"can-reshare":t.canReshare,"file-info":t.fileInfo},on:{"add:share":t.addShare}}):t._e(),t._v(" "),t.hasShares?t._l(t.shares,(function(i,r){return e("SharingEntryLink",{key:i.id,attrs:{index:t.shares.length>1?r+1:null,"can-reshare":t.canReshare,share:t.shares[r],"file-info":t.fileInfo},on:{"update:share":[function(e){return t.$set(t.shares,r,e)},function(e){return t.awaitForShare(...arguments)}],"add:share":function(e){return t.addShare(...arguments)},"remove:share":t.removeShare,"open-sharing-details":function(e){return t.openSharingDetails(i)}}})})):t._e()],2):t._e()}),[],!1,null,null,null).exports;var Ke=r(18740);const Ge={name:"DotsHorizontalIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ze=(0,pt.A)(Ge,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon dots-horizontal-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,Qe={name:"SharingEntry",components:{NcButton:Ke.A,NcAvatar:v.A,DotsHorizontalIcon:Ze,NcSelect:_.A,SharingEntryQuickShareSelect:Me},mixins:[Xt,Ht],computed:{title(){let e=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?e+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?e+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?e+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?e+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(e+=" (".concat(t("files_sharing","guest"),")")),e},tooltip(){if(this.share.owner!==this.share.uidFileOwner){const e={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",e):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",e):t("files_sharing","Shared with {user} by {owner}",e)}return null},hasStatus(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"==typeof this.share.status&&!Array.isArray(this.share.status)}},methods:{onMenuClose(){this.onNoteSubmit()}}};var Je=r(42572),Xe={};Xe.styleTagTransform=A(),Xe.setAttributes=u(),Xe.insert=c().bind(null,"head"),Xe.domAPI=o(),Xe.insertStyleElement=p(),s()(Je.A,Xe),Je.A&&Je.A.locals&&Je.A.locals;const ti={name:"SharingList",components:{SharingEntry:(0,pt.A)(Qe,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"sharing-entry"},[e("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":t.share.type!==t.SHARE_TYPES.SHARE_TYPE_USER,user:t.share.shareWith,"display-name":t.share.shareWithDisplayName,"menu-position":"left",url:t.share.shareWithAvatar}}),t._v(" "),e("div",{staticClass:"sharing-entry__summary"},[e(t.share.shareWithLink?"a":"div",{tag:"component",staticClass:"sharing-entry__summary__desc",attrs:{title:t.tooltip,"aria-label":t.tooltip,href:t.share.shareWithLink}},[e("span",[t._v(t._s(t.title)+"\n\t\t\t\t"),t.isUnique?t._e():e("span",{staticClass:"sharing-entry__summary__desc-unique"},[t._v(" ("+t._s(t.share.shareWithDisplayNameUnique)+")")]),t._v(" "),t.hasStatus&&t.share.status.message?e("small",[t._v("("+t._s(t.share.status.message)+")")]):t._e()])]),t._v(" "),e("SharingEntryQuickShareSelect",{attrs:{share:t.share,"file-info":t.fileInfo},on:{"open-sharing-details":function(e){return t.openShareDetailsForCustomSettings(t.share)}}})],1),t._v(" "),e("NcButton",{staticClass:"sharing-entry__action",attrs:{"data-cy-files-sharing-share-actions":"","aria-label":t.t("files_sharing","Open Sharing Details"),type:"tertiary"},on:{click:function(e){return t.openSharingDetails(t.share)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("DotsHorizontalIcon",{attrs:{size:20}})]},proxy:!0}])})],1)}),[],!1,null,"79edc2ff",null).exports},mixins:[ht,Ht],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0}},computed:{hasShares(){return 0===this.shares.length},isUnique(){return t=>[...this.shares].filter((e=>t.type===this.SHARE_TYPES.SHARE_TYPE_USER&&t.shareWithDisplayName===e.shareWithDisplayName)).length<=1}}},ei=(0,pt.A)(ti,(function(){var t=this,e=t._self._c;return e("ul",{staticClass:"sharing-sharee-list"},t._l(t.shares,(function(i){return e("SharingEntry",{key:i.id,attrs:{"file-info":t.fileInfo,share:i,"is-unique":t.isUnique(i)},on:{"open-sharing-details":function(e){return t.openSharingDetails(i)}}})})),1)}),[],!1,null,null,null).exports;var ii=r(53334),ri=r(63407),ni=r(16044),si=r(31126),ai=r(32073),oi=r(84237);const li={name:"CircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ci=(0,pt.A)(li,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon circle-outline-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,hi={name:"EmailIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ui=(0,pt.A)(hi,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon email-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var di=r(89979),pi=r(72755);const fi={name:"ShareCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ai=(0,pt.A)(fi,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon share-circle-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,gi={name:"AccountCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mi=(0,pt.A)(gi,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon account-circle-outline-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,vi={name:"EyeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},_i=(0,pt.A)(vi,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon eye-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var yi=r(45821),Ci=r(1795),wi=r(33017);const Ei={name:"SharingDetailsTab",components:{NcAvatar:v.A,NcButton:Ke.A,NcInputField:ri.A,NcPasswordField:ni.A,NcDateTimePickerNative:si.A,NcCheckboxRadioSwitch:ai.A,NcLoadingIcon:oi.A,CloseIcon:Se.A,CircleIcon:ci,EditIcon:De.A,ExternalShareAction:Ue,LinkIcon:di.A,GroupIcon:pi.A,ShareIcon:Ai,UserIcon:mi,UploadIcon:yi.A,ViewIcon:_i,MenuDownIcon:Ci.A,MenuUpIcon:wi.A,DotsHorizontalIcon:Ze},mixins:[ht,Lt,Xt],props:{shareRequestValue:{type:Object,required:!1},fileInfo:{type:Object,required:!0},share:{type:Object,required:!0}},data:()=>({writeNoteToRecipientIsChecked:!1,sharingPermission:Qt.ALL.toString(),revertSharingPermission:Qt.ALL.toString(),setCustomPermissions:!1,passwordError:!1,advancedSectionAccordionExpanded:!1,bundledPermissions:Qt,isFirstComponentLoad:!0,test:!1,creating:!1,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}),computed:{title(){switch(this.share.type){case this.SHARE_TYPES.SHARE_TYPE_USER:return t("files_sharing","Share with {userName}",{userName:this.share.shareWithDisplayName});case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return t("files_sharing","Share with email {email}",{email:this.share.shareWith});case this.SHARE_TYPES.SHARE_TYPE_LINK:return t("files_sharing","Share link");case this.SHARE_TYPES.SHARE_TYPE_GROUP:return t("files_sharing","Share with group");case this.SHARE_TYPES.SHARE_TYPE_ROOM:return t("files_sharing","Share in conversation");case this.SHARE_TYPES.SHARE_TYPE_REMOTE:{const[e,i]=this.share.shareWith.split("@");return t("files_sharing","Share with {user} on remote server {server}",{user:e,server:i})}case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:return t("files_sharing","Share with remote group");case this.SHARE_TYPES.SHARE_TYPE_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(t){this.updateAtomicPermissions({isEditChecked:t})}},canCreate:{get(){return this.share.hasCreatePermission},set(t){this.updateAtomicPermissions({isCreateChecked:t})}},canDelete:{get(){return this.share.hasDeletePermission},set(t){this.updateAtomicPermissions({isDeleteChecked:t})}},canReshare:{get(){return this.share.hasSharePermission},set(t){this.updateAtomicPermissions({isReshareChecked:t})}},canDownload:{get(){var t;return(null===(t=this.share.attributes.find((t=>"download"===t.key)))||void 0===t?void 0:t.enabled)||!1},set(t){const e=this.share.attributes.find((t=>"download"===t.key));e&&(e.enabled=t)}},hasRead:{get(){return this.share.hasReadPermission},set(t){this.updateAtomicPermissions({isReadChecked:t})}},hasExpirationDate:{get(){return this.isValidShareAttribute(this.share.expireDate)},set(t){this.share.expireDate=t?this.formatDateToString(this.defaultExpiryDate):""}},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(t){t?(this.share.password=await Dt(),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===this.SHARE_TYPES.SHARE_TYPE_USER},isGroupShare(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP},isNewShare(){return!this.share.id},allowsFileDrop(){return!(!this.isFolder||!this.config.isPublicUploadEnabled||this.share.type!==this.SHARE_TYPES.SHARE_TYPE_LINK&&this.share.type!==this.SHARE_TYPES.SHARE_TYPE_EMAIL)},hasFileDropPermissions(){return this.share.permissions===this.bundledPermissions.FILE_DROP},shareButtonText(){return this.isNewShare?t("files_sharing","Save share"):t("files_sharing","Update share")},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===this.SHARE_TYPES.SHARE_TYPE_LINK||this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL)},hasUnsavedPassword(){return void 0!==this.share.newPassword},passwordExpirationTime(){if(!this.isValidShareAttribute(this.share.passwordExpirationTime))return null;const t=moment(this.share.passwordExpirationTime);return!(t.diff(moment())<0)&&t.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(t){this.share.sendPasswordByTalk=t}},isEmailShareType(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPublicShare||!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword||void 0===OC.appswebroots.spreed)},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((t=>"download"===t.key&&"permissions"===t.scope&&!1===t.enabled))},customPermissionsList(){const t={[Zt.READ]:this.t("files_sharing","Read"),[Zt.CREATE]:this.t("files_sharing","Create"),[Zt.UPDATE]:this.t("files_sharing","Edit"),[Zt.SHARE]:this.t("files_sharing","Share"),[Zt.DELETE]:this.t("files_sharing","Delete")};return[Zt.READ,Zt.CREATE,Zt.UPDATE,Zt.SHARE,Zt.DELETE].filter((t=>{return e=this.share.permissions,i=t,e!==Zt.NONE&&(e&i)===i;var e,i})).map(((e,i)=>0===i?t[e]:t[e].toLocaleLowerCase((0,ii.Z0)()))).join(", ")},advancedControlExpandedValue(){return this.advancedSectionAccordionExpanded?"true":"false"},errorPasswordLabel(){if(this.passwordError)return t("files_sharing","Password field can't be empty")},passwordHint(){if(!this.isNewShare&&!this.hasUnsavedPassword)return t("files_sharing","Replace current password")},externalLinkActions(){return this.ExternalShareActions.actions.filter((t=>(t.shareType.includes(ot.Z.SHARE_TYPE_LINK)||t.shareType.includes(ot.Z.SHARE_TYPE_EMAIL))&&t.advanced))}},watch:{setCustomPermissions(t){this.sharingPermission=t?"custom":this.revertSharingPermission}},beforeMount(){this.initializePermissions(),this.initializeAttributes(),Gt.debug("Share object received",{share:this.share}),Gt.debug("Configuration object received",{config:this.config})},mounted(){var t;null===(t=this.$refs.quickPermissions)||void 0===t||null===(t=t.querySelector("input:checked"))||void 0===t||t.focus()},methods:{updateAtomicPermissions(){let{isReadChecked:t=this.hasRead,isEditChecked:e=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=0|(t?Zt.READ:0)|(i?Zt.CREATE:0)|(r?Zt.DELETE:0)|(e?Zt.UPDATE:0)|(n?Zt.SHARE:0);this.share.permissions=s},expandCustomPermissions(){this.advancedSectionAccordionExpanded||(this.advancedSectionAccordionExpanded=!0),this.toggleCustomPermissions()},toggleCustomPermissions(t){const e="custom"===this.sharingPermission;this.revertSharingPermission=e?"custom":t,this.setCustomPermissions=e},async initializeAttributes(){if(this.isNewShare)return this.isPasswordEnforced&&this.isPublicShare&&(this.$set(this.share,"newPassword",await Dt()),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)},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 t=this.config.defaultPermissions;t===Qt.READ_ONLY||t===Qt.ALL?this.sharingPermission=t.toString():(this.sharingPermission="custom",this.share.permissions=t,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(){var t;const e=["permissions","attributes","note","expireDate"];this.isPublicShare&&e.push("label","password","hideDownload");const i=parseInt(this.sharingPermission);if(this.setCustomPermissions?this.updateAtomicPermissions():this.share.permissions=i,this.isFolder||this.share.permissions!==Qt.ALL||(this.share.permissions=Qt.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 e=await this.addShare(t);this.creating=!1,this.share=e,this.$emit("add:share",this.share)}else this.$emit("update:share",this.share),this.queueUpdate(...e);await this.getNode(),(0,It.Ic)("files:node:updated",this.node),(null===(t=this.$refs.externalLinkActions)||void 0===t?void 0:t.length)>0&&await Promise.allSettled(this.$refs.externalLinkActions.map((t=>{var e,i,r;return"function"!=typeof(null===(e=t.$children.at(0))||void 0===e?void 0:e.onSave)?Promise.resolve():null===(i=t.$children.at(0))||void 0===i||null===(r=i.onSave)||void 0===r?void 0:r.call(i)}))),this.$emit("close-sharing-details")},async addShare(t){Gt.debug("Adding a new share from the input for",{share:t});const e=this.path;try{return await this.createShare({path:e,shareType:t.shareType,shareWith:t.shareWith,permissions:t.permissions,expireDate:t.expireDate,attributes:JSON.stringify(t.attributes),...t.note?{note:t.note}:{},...t.password?{password:t.password}:{}})}catch(t){Gt.error("Error while adding new share",{error:t})}},async removeShare(){await this.onDelete(),await this.getNode(),(0,It.Ic)("files:node:updated",this.node),this.$emit("close-sharing-details")},onPasswordChange(t){if(""===t)return this.$delete(this.share,"newPassword"),void(this.passwordError=this.isNewShare&&this.isPasswordEnforced);this.passwordError=!this.isValidShareAttribute(t),this.$set(this.share,"newPassword",t)},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},isValidShareAttribute:t=>![null,void 0].includes(t)&&t.trim().length>0,getShareTypeIcon(t){switch(t){case this.SHARE_TYPES.SHARE_TYPE_LINK:return di.A;case this.SHARE_TYPES.SHARE_TYPE_GUEST:return mi;case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return pi.A;case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return ui;case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return ci;case this.SHARE_TYPES.SHARE_TYPE_ROOM:case this.SHARE_TYPES.SHARE_TYPE_DECK:case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return Ai;default:return null}}}};var bi=r(72832),Si={};Si.styleTagTransform=A(),Si.setAttributes=u(),Si.insert=c().bind(null,"head"),Si.domAPI=o(),Si.insertStyleElement=p(),s()(bi.A,Si),bi.A&&bi.A.locals&&bi.A.locals;const xi=(0,pt.A)(Ei,(function(){var t,e=this,i=e._self._c;return i("div",{staticClass:"sharingTabDetailsView"},[i("div",{staticClass:"sharingTabDetailsView__header"},[i("span",[e.isUserShare?i("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.shareType!==e.SHARE_TYPES.SHARE_TYPE_USER,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}):e._e(),e._v(" "),i(e.getShareTypeIcon(e.share.type),{tag:"component",attrs:{size:32}})],1),e._v(" "),i("span",[i("h1",[e._v(e._s(e.title))])])]),e._v(" "),i("div",{staticClass:"sharingTabDetailsView__wrapper"},[i("div",{ref:"quickPermissions",staticClass:"sharingTabDetailsView__quick-permissions"},[i("div",[i("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[i("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(" "),i("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[i("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?i("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[i("UploadIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,1083194048)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","File drop"))+"\n\t\t\t\t\t"),i("small",{staticClass:"subline"},[e._v(e._s(e.t("files_sharing","Upload only")))])]):e._e(),e._v(" "),i("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[i("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"),i("small",{staticClass:"subline"},[e._v(e._s(e.customPermissionsList))])])],1)]),e._v(" "),i("div",{staticClass:"sharingTabDetailsView__advanced-control"},[i("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?i("MenuUpIcon"):i("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?i("div",{staticClass:"sharingTabDetailsView__advanced",attrs:{id:"advancedSectionAccordionAdvanced","aria-labelledby":"advancedSectionAccordionAdvancedControl",role:"region"}},[i("section",[e.isPublicShare?i("NcInputField",{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.isPublicShare?[i("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?i("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?i("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?i("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?i("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(" "),i("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?i("NcDateTimePickerNative",{attrs:{id:"share-date-picker",value:new Date(null!==(t=e.share.expireDate)&&void 0!==t?t:e.dateTomorrow),min:e.dateTomorrow,max:e.maxExpirationDateEnforced,"hide-label":!0,placeholder:e.t("files_sharing","Expiration date"),type:"date"},on:{input:e.onExpirationChange}}):e._e(),e._v(" "),e.isPublicShare?i("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")]):e._e(),e._v(" "),e.isPublicShare?e._e():i("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"))+"\n\t\t\t\t")]),e._v(" "),i("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?[i("label",{attrs:{for:"share-note-textarea"}},[e._v("\n\t\t\t\t\t\t"+e._s(e.t("files_sharing","Enter a note for the share recipient"))+"\n\t\t\t\t\t")]),e._v(" "),i("textarea",{attrs:{id:"share-note-textarea"},domProps:{value:e.share.note},on:{input:function(t){e.share.note=t.target.value}}})]:e._e(),e._v(" "),e._l(e.externalLinkActions,(function(t){return i("ExternalShareAction",{key:t.id,ref:"externalLinkActions",refInFor:!0,attrs:{id:t.id,action:t,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),i("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?i("section",{staticClass:"custom-permissions-group"},[i("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?i("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(" "),i("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.config.isResharingAllowed&&e.share.type!==e.SHARE_TYPES.SHARE_TYPE_LINK?i("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(" "),i("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(" "),i("div",{staticClass:"sharingTabDetailsView__delete"},[e.isNewShare?e._e():i("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[i("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(" "),i("div",{staticClass:"sharingTabDetailsView__footer"},[i("div",{staticClass:"button-group"},[i("NcButton",{attrs:{"data-cy-files-sharing-share-editor-action":"cancel"},on:{click:function(t){return e.$emit("close-sharing-details")}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t\t")]),e._v(" "),i("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[i("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,"dc079594",null).exports;var Ti=r(96763);const Pi={name:"SharingTab",components:{NcAvatar:v.A,CollectionList:it,SharingEntryInternal:St,SharingEntrySimple:yt,SharingInherited:le,SharingInput:Vt,SharingLinkList:$e,SharingList:ei,SharingDetailsTab:xi},mixins:[ht],data:()=>({config:new at,deleteEvent:null,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,nt.C)("core","projects_enabled",!1),showSharingDetailsView:!1,shareDetailsData:{},returnFocusElement:null}),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(t){this.fileInfo=t,this.resetState(),this.getShares()},async getShares(){try{this.loading=!0;const t=(0,rt.KT)("apps/files_sharing/api/v1/shares"),e="json",i=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),r=W.Ay.get(t,{params:{format:e,path:i,reshares:!0}}),n=W.Ay.get(t,{params:{format:e,path:i,shared_with_me:!0}}),[s,a]=await Promise.all([r,n]);this.loading=!1,this.processSharedWithMe(a),this.processShares(s)}catch(i){var e;null!==(e=i.response.data)&&void 0!==e&&null!==(e=e.ocs)&&void 0!==e&&null!==(e=e.meta)&&void 0!==e&&e.message?this.error=i.response.data.ocs.meta.message:this.error=t("files_sharing","Unable to load the shares list"),this.loading=!1,Ti.error("Error loading the shares list",i)}},resetState(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[],this.showSharingDetailsView=!1,this.shareDetailsData={}},updateExpirationSubtitle(e){const i=moment(e.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*i)})),moment().unix()>i&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares(t){let{data:e}=t;if(e.ocs&&e.ocs.data&&e.ocs.data.length>0){const t=e.ocs.data.map((t=>new ct(t))).sort(((t,e)=>e.createdTime-t.createdTime));this.linkShares=t.filter((t=>t.type===this.SHARE_TYPES.SHARE_TYPE_LINK||t.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL)),this.shares=t.filter((t=>t.type!==this.SHARE_TYPES.SHARE_TYPE_LINK&&t.type!==this.SHARE_TYPES.SHARE_TYPE_EMAIL)),Ti.debug("Processed",this.linkShares.length,"link share(s)"),Ti.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 ct(i),r=function(e){return e.type===ot.Z.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===ot.Z.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===ot.Z.SHARE_TYPE_ROOM?e.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1})}(e),n=e.ownerDisplayName,s=e.owner;this.sharedWithMe={displayName:n,title:r,user:s},this.reshare=e,e.expireDate&&moment(e.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(e),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,e))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{};t.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(t):this.shares.unshift(t),this.awaitForShare(t,e)},removeShare(t){const e=t.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL||t.type===this.SHARE_TYPES.SHARE_TYPE_LINK?this.linkShares:this.shares,i=e.findIndex((e=>e.id===t.id));-1!==i&&e.splice(i,1)},awaitForShare(t,e){this.$nextTick((()=>{let i=this.$refs.shareList;t.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(i=this.$refs.linkShareList);const r=i.$children.find((e=>e.share===t));r&&e(r)}))},toggleShareDetailsView(t){if(!this.showSharingDetailsView)if(Array.from(document.activeElement.classList).some((t=>t.startsWith("action-")))){var e;const t=null===(e=document.activeElement.closest('[role="menu"]'))||void 0===e?void 0:e.id;this.returnFocusElement=document.querySelector('[aria-controls="'.concat(t,'"]'))}else this.returnFocusElement=document.activeElement;t&&(this.shareDetailsData=t),this.showSharingDetailsView=!this.showSharingDetailsView,this.showSharingDetailsView||this.$nextTick((()=>{var t;null===(t=this.returnFocusElement)||void 0===t||t.focus(),this.returnFocusElement=null}))}}},ki=Pi;var Ri=r(3316),Di={};Di.styleTagTransform=A(),Di.setAttributes=u(),Di.insert=c().bind(null,"head"),Di.domAPI=o(),Di.insertStyleElement=p(),s()(Ri.A,Di),Ri.A&&Ri.A.locals&&Ri.A.locals;const Ii=(0,pt.A)(ki,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"sharingTab",class:{"icon-loading":t.loading}},[t.error?e("div",{staticClass:"emptycontent",class:{emptyContentWithSections:t.sections.length>0}},[e("div",{staticClass:"icon icon-error"}),t._v(" "),e("h2",[t._v(t._s(t.error))])]):t._e(),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.showSharingDetailsView,expression:"!showSharingDetailsView"}],staticClass:"sharingTab__content"},[e("ul",[t.isSharedWithMe?e("SharingEntrySimple",t._b({staticClass:"sharing-entry__reshare",scopedSlots:t._u([{key:"avatar",fn:function(){return[e("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:t.sharedWithMe.user,"display-name":t.sharedWithMe.displayName}})]},proxy:!0}],null,!1,3197855346)},"SharingEntrySimple",t.sharedWithMe,!1)):t._e()],1),t._v(" "),t.loading?t._e():e("SharingInput",{attrs:{"can-reshare":t.canReshare,"file-info":t.fileInfo,"link-shares":t.linkShares,reshare:t.reshare,shares:t.shares},on:{"open-sharing-details":t.toggleShareDetailsView}}),t._v(" "),t.loading?t._e():e("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":t.canReshare,"file-info":t.fileInfo,shares:t.linkShares},on:{"open-sharing-details":t.toggleShareDetailsView}}),t._v(" "),t.loading?t._e():e("SharingList",{ref:"shareList",attrs:{shares:t.shares,"file-info":t.fileInfo},on:{"open-sharing-details":t.toggleShareDetailsView}}),t._v(" "),t.canReshare&&!t.loading?e("SharingInherited",{attrs:{"file-info":t.fileInfo}}):t._e(),t._v(" "),e("SharingEntryInternal",{attrs:{"file-info":t.fileInfo}}),t._v(" "),t.projectsEnabled&&t.fileInfo?e("CollectionList",{attrs:{id:"".concat(t.fileInfo.id),type:"file",name:t.fileInfo.name}}):t._e()],1),t._v(" "),t._l(t.sections,(function(i,r){return e("div",{directives:[{name:"show",rawName:"v-show",value:!t.showSharingDetailsView,expression:"!showSharingDetailsView"}],key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[e(i(t.$refs["section-"+r],t.fileInfo),{tag:"component",attrs:{"file-info":t.fileInfo}})],1)})),t._v(" "),t.showSharingDetailsView?e("SharingDetailsTab",{attrs:{"file-info":t.shareDetailsData.fileInfo,share:t.shareDetailsData.share},on:{"close-sharing-details":t.toggleShareDetailsView,"add:share":t.addShare,"remove:share":t.removeShare}}):t._e()],2)}),[],!1,null,"a65c443a",null).exports},27518:t=>{"use strict";t.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:t=>{"use strict";t.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:t=>{"use strict";t.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:t=>{"use strict";t.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"}}]); +//# sourceMappingURL=1356-1356.js.map?v=0872d426bc0607fd82d7
\ No newline at end of file diff --git a/dist/2773-2773.js.LICENSE.txt b/dist/1356-1356.js.LICENSE.txt index ddfe3727c21..ddfe3727c21 100644 --- a/dist/2773-2773.js.LICENSE.txt +++ b/dist/1356-1356.js.LICENSE.txt diff --git a/dist/1356-1356.js.map b/dist/1356-1356.js.map new file mode 100644 index 00000000000..ebd80ba28df --- /dev/null +++ b/dist/1356-1356.js.map @@ -0,0 +1 @@ +{"version":3,"file":"1356-1356.js?v=0872d426bc0607fd82d7","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-Au1Gr_G6.css","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=79edc2ff&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=283ca89e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=e40cd936&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=4ec6c807&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=6e5dd9f1&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=1852ea78&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&id=19527463&prod&lang=scss","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=style&index=0&id=dc079594&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=50f9af8c&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=a65c443a&prod&scoped=true&lang=scss","webpack:///nextcloud/node_modules/nextcloud-vue-collections/node_modules/@nextcloud/router/dist/index.js","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-Au1Gr_G6.css?fdca","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.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?6c02","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckBold.vue","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?7500","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckBold.vue?vue&type=template&id=d4239c4a","webpack:///nextcloud/node_modules/vue-material-design-icons/ClipboardFlow.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/ClipboardFlow.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ClipboardFlow.vue?07b2","webpack:///nextcloud/node_modules/vue-material-design-icons/ClipboardFlow.vue?vue&type=template&id=692acad9","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?9588","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?0c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?60fa","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/utils/GeneratePassword.js","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","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?9b5c","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/services/WebdavClient.ts","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","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?c7aa","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?77d5","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?6882","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=44530562","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=0bf2dcbd","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=cc96c380","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=33754429","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=0e338773","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=0610cec6","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=30219a41","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=437aa472","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?30ef","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/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/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?cf0e","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/node_modules/vue-material-design-icons/DotsHorizontal.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/DotsHorizontal.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/DotsHorizontal.vue?c5a1","webpack:///nextcloud/node_modules/vue-material-design-icons/DotsHorizontal.vue?vue&type=template&id=a4d4ab3e","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?d549","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=33494a74","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=ec4501a4","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=c22eb9fe","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=59b2bccc","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=363a0196","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?4a0f","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?a79d","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997"],"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-8e58e0a5],\n.fade-leave-active[data-v-8e58e0a5] {\n transition: opacity .3s ease;\n}\n.fade-enter[data-v-8e58e0a5],\n.fade-leave-to[data-v-8e58e0a5] {\n opacity: 0;\n}\n.linked-icons[data-v-8e58e0a5] {\n display: flex;\n}\n.linked-icons img[data-v-8e58e0a5] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: .7;\n}\n.linked-icons img[data-v-8e58e0a5]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-8e58e0a5] {\n display: none;\n}\n.popovermenu.open[data-v-8e58e0a5] {\n display: block;\n}\nli.collection-list-item[data-v-8e58e0a5] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-8e58e0a5] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-8e58e0a5],\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-8e58e0a5] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-8e58e0a5] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-8e58e0a5],\nli.collection-list-item .resource-list-details[data-v-8e58e0a5] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-8e58e0a5] {\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-8e58e0a5]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5] {\n opacity: .7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:hover,\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-8e58e0a5] {\n animation: shake-8e58e0a5 .6s 1 linear;\n}\n@keyframes shake-8e58e0a5 {\n 0% {\n transform: translate(15px);\n }\n 20% {\n transform: translate(-15px);\n }\n 40% {\n transform: translate(7px);\n }\n 60% {\n transform: translate(-7px);\n }\n 80% {\n transform: translate(3px);\n }\n to {\n transform: translate(0);\n }\n}\n.collection-list *[data-v-75a4370b] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-75a4370b] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-75a4370b] {\n margin-top: auto;\n}\n#collection-select-container[data-v-75a4370b] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-75a4370b] {\n display: block;\n padding: 16px;\n opacity: .7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-75a4370b]:hover {\n opacity: 1;\n}\np.hint[data-v-75a4370b] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-75a4370b] {\n width: 32px;\n height: 32px;\n margin: 30px 0 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n}\n.icon-projects[data-v-75a4370b] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-75a4370b] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-75a4370b] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-75a4370b] {\n padding: 4px;\n}\n.fade-enter-active[data-v-75a4370b],\n.fade-leave-active[data-v-75a4370b] {\n transition: opacity .5s;\n}\n.fade-enter[data-v-75a4370b],\n.fade-leave-to[data-v-75a4370b] {\n opacity: 0;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/nextcloud-vue-collections/dist/assets/index-Au1Gr_G6.css\"],\"names\":[],\"mappings\":\"AAAA;;EAEE,4BAA4B;AAC9B;AACA;;EAEE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,aAAa;EACb,YAAY;EACZ,cAAc;EACd,4BAA4B;EAC5B,2BAA2B;EAC3B,WAAW;AACb;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;;EAEE,eAAe;EACf,YAAY;EACZ,aAAa;AACf;AACA;EACE,iBAAiB;AACnB;AACA;EACE,eAAe;EACf,6CAA6C;AAC/C;AACA;EACE,YAAY;AACd;AACA;;EAEE,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,WAAW;AACb;AACA;;EAEE,UAAU;AACZ;AACA;EACE,sCAAsC;AACxC;AACA;EACE;IACE,0BAA0B;EAC5B;EACA;IACE,2BAA2B;EAC7B;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,0BAA0B;EAC5B;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,uBAAuB;EACzB;AACF;AACA;EACE,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,WAAW;EACX,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,UAAU;AACZ;AACA;EACE,UAAU;EACV,iBAAiB;EACjB,YAAY;EACZ,oCAAoC;EACpC,mBAAmB;AACrB;AACA;EACE,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,YAAY;EACZ,8CAA8C;AAChD;AACA;EACE,cAAc;EACd,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,2DAA2D;AAC7D;AACA;EACE,YAAY;AACd;AACA;;EAEE,uBAAuB;AACzB;AACA;;EAEE,UAAU;AACZ\",\"sourcesContent\":[\".fade-enter-active[data-v-8e58e0a5],\\n.fade-leave-active[data-v-8e58e0a5] {\\n transition: opacity .3s ease;\\n}\\n.fade-enter[data-v-8e58e0a5],\\n.fade-leave-to[data-v-8e58e0a5] {\\n opacity: 0;\\n}\\n.linked-icons[data-v-8e58e0a5] {\\n display: flex;\\n}\\n.linked-icons img[data-v-8e58e0a5] {\\n padding: 12px;\\n height: 44px;\\n display: block;\\n background-repeat: no-repeat;\\n background-position: center;\\n opacity: .7;\\n}\\n.linked-icons img[data-v-8e58e0a5]:hover {\\n opacity: 1;\\n}\\n.popovermenu[data-v-8e58e0a5] {\\n display: none;\\n}\\n.popovermenu.open[data-v-8e58e0a5] {\\n display: block;\\n}\\nli.collection-list-item[data-v-8e58e0a5] {\\n flex-wrap: wrap;\\n height: auto;\\n cursor: pointer;\\n margin-bottom: 0 !important;\\n}\\nli.collection-list-item .collection-avatar[data-v-8e58e0a5] {\\n margin-top: 6px;\\n}\\nli.collection-list-item form[data-v-8e58e0a5],\\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\\n flex-basis: 10%;\\n flex-grow: 1;\\n display: flex;\\n}\\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\\n padding: 12px 9px;\\n}\\nli.collection-list-item input[data-v-8e58e0a5] {\\n margin-top: 4px;\\n border-color: var(--color-border-maxcontrast);\\n}\\nli.collection-list-item input[type=text][data-v-8e58e0a5] {\\n flex-grow: 1;\\n}\\nli.collection-list-item .error[data-v-8e58e0a5],\\nli.collection-list-item .resource-list-details[data-v-8e58e0a5] {\\n flex-basis: 100%;\\n width: 100%;\\n}\\nli.collection-list-item .resource-list-details li[data-v-8e58e0a5] {\\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-8e58e0a5]:hover {\\n background-color: var(--color-background-dark);\\n}\\nli.collection-list-item .resource-list-details li a[data-v-8e58e0a5] {\\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-8e58e0a5] {\\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-8e58e0a5] {\\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-8e58e0a5] {\\n width: 24px;\\n height: 24px;\\n}\\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5] {\\n opacity: .7;\\n}\\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:hover,\\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:focus {\\n opacity: 1;\\n}\\n.shouldshake[data-v-8e58e0a5] {\\n animation: shake-8e58e0a5 .6s 1 linear;\\n}\\n@keyframes shake-8e58e0a5 {\\n 0% {\\n transform: translate(15px);\\n }\\n 20% {\\n transform: translate(-15px);\\n }\\n 40% {\\n transform: translate(7px);\\n }\\n 60% {\\n transform: translate(-7px);\\n }\\n 80% {\\n transform: translate(3px);\\n }\\n to {\\n transform: translate(0);\\n }\\n}\\n.collection-list *[data-v-75a4370b] {\\n box-sizing: border-box;\\n}\\n.collection-list > li[data-v-75a4370b] {\\n display: flex;\\n align-items: start;\\n gap: 12px;\\n}\\n.collection-list > li > .avatar[data-v-75a4370b] {\\n margin-top: auto;\\n}\\n#collection-select-container[data-v-75a4370b] {\\n display: flex;\\n flex-direction: column;\\n}\\n.v-select span.avatar[data-v-75a4370b] {\\n display: block;\\n padding: 16px;\\n opacity: .7;\\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n.v-select span.avatar[data-v-75a4370b]:hover {\\n opacity: 1;\\n}\\np.hint[data-v-75a4370b] {\\n z-index: 1;\\n margin-top: -16px;\\n padding: 8px;\\n color: var(--color-text-maxcontrast);\\n line-height: normal;\\n}\\ndiv.avatar[data-v-75a4370b] {\\n width: 32px;\\n height: 32px;\\n margin: 30px 0 0;\\n padding: 8px;\\n background-color: var(--color-background-dark);\\n}\\n.icon-projects[data-v-75a4370b] {\\n display: block;\\n padding: 8px;\\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n.option__wrapper[data-v-75a4370b] {\\n display: flex;\\n}\\n.option__wrapper .avatar[data-v-75a4370b] {\\n display: block;\\n background-color: var(--color-background-darker) !important;\\n}\\n.option__wrapper .option__title[data-v-75a4370b] {\\n padding: 4px;\\n}\\n.fade-enter-active[data-v-75a4370b],\\n.fade-leave-active[data-v-75a4370b] {\\n transition: opacity .5s;\\n}\\n.fade-enter[data-v-75a4370b],\\n.fade-leave-to[data-v-75a4370b] {\\n opacity: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing-entry[data-v-79edc2ff]{display:flex;align-items:center;height:44px}.sharing-entry__summary[data-v-79edc2ff]{padding:8px;padding-left: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-79edc2ff]{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-79edc2ff],.sharing-entry__summary__desc small[data-v-79edc2ff]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-79edc2ff]{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,iBAAA,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\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__summary {\\n\\t\\tpadding: 8px;\\n\\t\\tpadding-left: 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\"],\"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-283ca89e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-283ca89e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;padding-left:10px;line-height:1.2em}.sharing-entry__desc p[data-v-283ca89e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-283ca89e]{margin-left:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tpadding-left: 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-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing-entry__internal .avatar-external[data-v-e40cd936]{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-e40cd936]{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\",\"sourcesContent\":[\"\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t\\tcolor: var(--color-success);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing-entry[data-v-4ec6c807]{display:flex;align-items:center;min-height:44px}.sharing-entry__summary[data-v-4ec6c807]{padding:8px;padding-left:10px;display:flex;justify-content:space-between;flex:1 0;min-width:0}.sharing-entry__desc[data-v-4ec6c807]{display:flex;flex-direction:column;line-height:1.2em}.sharing-entry__desc p[data-v-4ec6c807]{color:var(--color-text-maxcontrast)}.sharing-entry__desc__title[data-v-4ec6c807]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-4ec6c807]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-4ec6c807] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-4ec6c807]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-4ec6c807]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item~.action-item[data-v-4ec6c807],.sharing-entry .action-item~.sharing-entry__loading[data-v-4ec6c807]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-4ec6c807]{opacity:1;color:var(--color-success)}.qr-code-dialog[data-v-4ec6c807]{display:flex;width:100%;justify-content:center}.qr-code-dialog__img[data-v-4ec6c807]{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,iBAAA,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,CAKF,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAOA,+HAEC,aAAA,CAIF,sDACC,SAAA,CACA,0BAAA,CAKF,iCACC,YAAA,CACA,UAAA,CACA,sBAAA,CAEA,sCACC,UAAA,CACA,WAAA\",\"sourcesContent\":[\"\\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-left: 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&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary-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-left: 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-left: 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\"],\"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-6e5dd9f1]{display:block}.share-select[data-v-6e5dd9f1] .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-6e5dd9f1] .action-item__menutoggle .button-vue__text{font-weight:normal !important}.share-select[data-v-6e5dd9f1] .action-item__menutoggle .button-vue__icon{height:24px !important;min-height:24px !important;width:24px !important;min-width:24px !important}.share-select[data-v-6e5dd9f1] .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\",\"sourcesContent\":[\"\\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\"],\"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-1852ea78]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1852ea78]{padding:8px;padding-left:10px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-1852ea78]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-1852ea78]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-1852ea78]{margin-left:auto !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tpadding-left: 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-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv .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\",\"sourcesContent\":[\"\\n.sharing-search {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 4px;\\n\\n\\tlabel[for=\\\"sharing-search-input\\\"] {\\n\\t\\tmargin-bottom: 2px;\\n\\t}\\n\\n\\t&__input {\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 10px 0;\\n\\t}\\n}\\n\\n.vs__dropdown-menu {\\n\\t// properly style the lookup entry\\n\\tspan[lookup] {\\n\\t\\t.avatardiv {\\n\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t.avatardiv__initials-wrapper {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharingTabDetailsView[data-v-dc079594]{display:flex;flex-direction:column;width:100%;margin:0 auto;position:relative;height:100%;overflow:hidden}.sharingTabDetailsView__header[data-v-dc079594]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-dc079594]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-dc079594]{font-size:15px;padding-left:.3em}.sharingTabDetailsView__wrapper[data-v-dc079594]{position:relative;overflow:scroll;flex-shrink:1;padding:4px;padding-right:12px}.sharingTabDetailsView__quick-permissions[data-v-dc079594]{display:flex;justify-content:center;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-dc079594]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-dc079594]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-dc079594]:nth-child(1){align-items:center;justify-content:center;padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-dc079594] label span{display:flex;flex-direction:column}.sharingTabDetailsView__quick-permissions div span[data-v-dc079594] span.checkbox-content__text.checkbox-radio-switch__text{flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-dc079594] span.checkbox-content__text.checkbox-radio-switch__text .subline{display:block;flex-basis:100%}.sharingTabDetailsView__advanced-control[data-v-dc079594]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-dc079594]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-dc079594]{width:100%;margin-bottom:.5em;text-align:left;padding-left:0}.sharingTabDetailsView__advanced section textarea[data-v-dc079594],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-dc079594]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-dc079594]{height:80px;margin:0}.sharingTabDetailsView__advanced section span[data-v-dc079594] label{padding-left:0 !important;background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-dc079594]{padding-left:1.5em}.sharingTabDetailsView__delete>button[data-v-dc079594]:first-child{color:#df0707}.sharingTabDetailsView__footer[data-v-dc079594]{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-dc079594]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-dc079594]{margin-left:16px}.sharingTabDetailsView__footer .button-group button[data-v-dc079594]:first-child{margin-left: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,iBAAA,CAMH,iDACC,iBAAA,CACA,eAAA,CACA,aAAA,CACA,WAAA,CACA,kBAAA,CAGD,2DACC,YAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,YAAA,CAKA,+EACC,YAAA,CACA,qBAAA,CAKF,4HACC,cAAA,CAEA,qIACC,aAAA,CACA,eAAA,CAQL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,eAAA,CACA,cAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CACA,QAAA,CAaA,qEACC,yBAAA,CACA,mCAAA,CACA,sBAAA,CAIF,2FACC,kBAAA,CAMF,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,gBAAA,CAEA,iFACC,aAAA\",\"sourcesContent\":[\"\\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-left: 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-right: 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::v-deep label {\\n\\n\\t\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\t\\t\\tflex-direction: column;\\n\\t\\t\\t\\t\\t}\\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: left;\\n\\t\\tpadding-left: 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 The following style is applied out of the component's scope\\n to remove padding from the label.checkbox-radio-switch__label,\\n which is used to group radio checkbox items. The use of ::v-deep\\n ensures that the padding is modified without being affected by\\n the component's scoping.\\n Without this achieving left alignment for the checkboxes would not\\n be possible.\\n */\\n\\t\\t\\tspan {\\n\\t\\t\\t\\t::v-deep label {\\n\\t\\t\\t\\t\\tpadding-left: 0 !important;\\n\\t\\t\\t\\t\\tbackground-color: initial !important;\\n\\t\\t\\t\\t\\tborder: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tsection.custom-permissions-group {\\n\\t\\t\\t\\tpadding-left: 1.5em;\\n\\t\\t\\t}\\n\\t\\t}\\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-left: 16px;\\n\\n\\t\\t\\t\\t&:first-child {\\n\\t\\t\\t\\t\\tmargin-left: 0;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing-entry__inherited .avatar-shared[data-v-50f9af8c]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.emptyContentWithSections[data-v-a65c443a]{margin:1rem auto}.sharingTab[data-v-a65c443a]{position:relative;height:100%}.sharingTab__content[data-v-a65c443a]{padding:0 6px}.sharingTab__additionalContent[data-v-a65c443a]{margin:44px 0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,gBAAA,CAGD,6BACC,iBAAA,CACA,WAAA,CAEA,sCACC,aAAA,CAGD,gDACC,aAAA\",\"sourcesContent\":[\"\\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\\t}\\n\\n\\t&__additionalContent {\\n\\t\\tmargin: 44px 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generateUrl = exports.generateRemoteUrl = exports.generateOcsUrl = exports.generateFilePath = void 0;\nexports.getAppRootUrl = getAppRootUrl;\nexports.getRootUrl = getRootUrl;\nexports.linkTo = exports.imagePath = void 0;\nrequire(\"core-js/modules/es.string.replace.js\");\n/**\n * Get an url with webroot to a file in an app\n *\n * @param {string} app the id of the app the file belongs to\n * @param {string} file the file path relative to the app folder\n * @return {string} URL with webroot to a file\n */\nconst linkTo = (app, file) => generateFilePath(app, '', file);\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexports.linkTo = linkTo;\nconst linkToRemoteBase = service => getRootUrl() + '/remote.php/' + service;\n\n/**\n * @brief Creates an absolute url for remote use\n * @param {string} service id\n * @return {string} the url\n */\nconst generateRemoteUrl = service => window.location.protocol + '//' + window.location.host + linkToRemoteBase(service);\n\n/**\n * Get the base path for the given OCS API service\n *\n * @param {string} url OCS API service url\n * @param {object} params parameters to be replaced into the service url\n * @param {UrlOptions} options options for the parameter replacement\n * @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true)\n * @param {Number} options.ocsVersion OCS version to use (defaults to 2)\n * @return {string} Absolute path for the OCS URL\n */\nexports.generateRemoteUrl = generateRemoteUrl;\nconst generateOcsUrl = (url, params, options) => {\n const allOptions = Object.assign({\n ocsVersion: 2\n }, options || {});\n const version = allOptions.ocsVersion === 1 ? 1 : 2;\n return window.location.protocol + '//' + window.location.host + getRootUrl() + '/ocs/v' + version + '.php' + _generateUrlPath(url, params, options);\n};\nexports.generateOcsUrl = generateOcsUrl;\n/**\n * Generate a url path, which can contain parameters\n *\n * Parameters will be URL encoded automatically\n *\n * @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token\n * @param {object} params parameters to be replaced into the address\n * @param {UrlOptions} options options for the parameter replacement\n * @return {string} Path part for the given URL\n */\nconst _generateUrlPath = (url, params, options) => {\n const allOptions = Object.assign({\n escape: true\n }, options || {});\n const _build = function (text, vars) {\n vars = vars || {};\n return text.replace(/{([^{}]*)}/g, function (a, b) {\n var r = vars[b];\n if (allOptions.escape) {\n return typeof r === 'string' || typeof r === 'number' ? encodeURIComponent(r.toString()) : encodeURIComponent(a);\n } else {\n return typeof r === 'string' || typeof r === 'number' ? r.toString() : a;\n }\n });\n };\n if (url.charAt(0) !== '/') {\n url = '/' + url;\n }\n return _build(url, params || {});\n};\n\n/**\n * Generate the url with webroot for the given relative url, which can contain parameters\n *\n * Parameters will be URL encoded automatically\n *\n * @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token\n * @param {object} params parameters to be replaced into the url\n * @param {UrlOptions} options options for the parameter replacement\n * @param {boolean} options.noRewrite True if you want to force index.php being added\n * @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true)\n * @return {string} URL with webroot for the given relative URL\n */\nconst generateUrl = (url, params, options) => {\n var _window;\n const allOptions = Object.assign({\n noRewrite: false\n }, options || {});\n if (((_window = window) === null || _window === void 0 || (_window = _window.OC) === null || _window === void 0 || (_window = _window.config) === null || _window === void 0 ? void 0 : _window.modRewriteWorking) === true && !allOptions.noRewrite) {\n return getRootUrl() + _generateUrlPath(url, params, options);\n }\n return getRootUrl() + '/index.php' + _generateUrlPath(url, params, options);\n};\n\n/**\n * Get the path with webroot to an image file\n * if no extension is given for the image, it will automatically decide\n * between .png and .svg based on what the browser supports\n *\n * @param {string} app the app id to which the image belongs\n * @param {string} file the name of the image file\n * @return {string}\n */\nexports.generateUrl = generateUrl;\nconst imagePath = (app, file) => {\n if (file.indexOf('.') === -1) {\n //if no extension is given, use svg\n return generateFilePath(app, 'img', file + '.svg');\n }\n return generateFilePath(app, 'img', file);\n};\n\n/**\n * Get the url with webroot for a file in an app\n *\n * @param {string} app the id of the app\n * @param {string} type the type of the file to link to (e.g. css,img,ajax.template)\n * @param {string} file the filename\n * @return {string} URL with webroot for a file in an app\n */\nexports.imagePath = imagePath;\nconst generateFilePath = (app, type, file) => {\n var _window2;\n const isCore = ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.OC) === null || _window2 === void 0 || (_window2 = _window2.coreApps) === null || _window2 === void 0 ? void 0 : _window2.indexOf(app)) !== -1;\n let link = getRootUrl();\n if (file.substring(file.length - 3) === 'php' && !isCore) {\n link += '/index.php/apps/' + app;\n if (file !== 'index.php') {\n link += '/';\n if (type) {\n link += encodeURI(type + '/');\n }\n link += file;\n }\n } else if (file.substring(file.length - 3) !== 'php' && !isCore) {\n link = getAppRootUrl(app);\n if (type) {\n link += '/' + type + '/';\n }\n if (link.substring(link.length - 1) !== '/') {\n link += '/';\n }\n link += file;\n } else {\n if ((app === 'settings' || app === 'core' || app === 'search') && type === 'ajax') {\n link += '/index.php/';\n } else {\n link += '/';\n }\n if (!isCore) {\n link += 'apps/';\n }\n if (app !== '') {\n app += '/';\n link += app;\n }\n if (type) {\n link += type + '/';\n }\n link += file;\n }\n return link;\n};\n\n/**\n * Return the web root path where this Nextcloud instance\n * is accessible, with a leading slash.\n * For example \"/nextcloud\".\n *\n * @return {string} web root path\n */\nexports.generateFilePath = generateFilePath;\nfunction getRootUrl() {\n let webroot = window._oc_webroot;\n if (typeof webroot === 'undefined') {\n webroot = location.pathname;\n const pos = webroot.indexOf('/index.php/');\n if (pos !== -1) {\n webroot = webroot.substr(0, pos);\n } else {\n webroot = webroot.substr(0, webroot.lastIndexOf('/'));\n }\n }\n return webroot;\n}\n\n/**\n * Return the web root path for a given app\n * @param {string} app The ID of the app\n */\nfunction getAppRootUrl(app) {\n var _window$_oc_appswebro, _webroots$app;\n const webroots = (_window$_oc_appswebro = window._oc_appswebroots) !== null && _window$_oc_appswebro !== void 0 ? _window$_oc_appswebro : {};\n return (_webroots$app = webroots[app]) !== null && _webroots$app !== void 0 ? _webroots$app : '';\n}\n//# sourceMappingURL=index.js.map","/**!\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\"},[_c('ul',[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName}})]},proxy:true}],null,false,3197855346)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e()],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},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(),_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}}),_vm._v(\" \"),(_vm.projectsEnabled && _vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":`${_vm.fileInfo.id}`,\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showSharingDetailsView),expression:\"!showSharingDetailsView\"}],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.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()],2)\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-Au1Gr_G6.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../css-loader/dist/cjs.js!./index-Au1Gr_G6.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-Au1Gr_G6.css';\nimport w from \"@nextcloud/vue/dist/Components/NcAvatar.js\";\nimport O from \"@nextcloud/vue/dist/Components/NcSelect.js\";\nimport T from \"lodash-es/debounce.js\";\nimport S from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport k from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport A, { set as f } from \"vue\";\nimport $ from \"@nextcloud/axios\";\nimport { generateOcsUrl as d } from \"@nextcloud/router\";\n/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass D {\n constructor() {\n this.http = $;\n }\n listCollection(e) {\n return this.http.get(d(\"collaboration/resources/collections/{collectionId}\", { collectionId: e }));\n }\n renameCollection(e, o) {\n return this.http.put(d(\"collaboration/resources/collections/{collectionId}\", { collectionId: e }), {\n collectionName: o\n }).then((n) => n.data.ocs.data);\n }\n getCollectionsByResource(e, o) {\n return this.http.get(d(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType: e, resourceId: o })).then((n) => n.data.ocs.data);\n }\n createCollection(e, o, n) {\n return this.http.post(d(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType: e, resourceId: o }), {\n name: n\n }).then((r) => r.data.ocs.data);\n }\n addResource(e, o, n) {\n return n = \"\" + n, this.http.post(d(\"collaboration/resources/collections/{collectionId}\", { collectionId: e }), {\n resourceType: o,\n resourceId: n\n }).then((r) => r.data.ocs.data);\n }\n removeResource(e, o, n) {\n return this.http.delete(d(\"collaboration/resources/collections/{collectionId}\", { collectionId: e }), { params: { resourceType: o, resourceId: n } }).then((r) => r.data.ocs.data);\n }\n search(e) {\n return this.http.get(d(\"collaboration/resources/collections/search/{query}\", { query: e })).then((o) => o.data.ocs.data);\n }\n}\nconst p = new D();\n/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst u = A.observable({\n collections: []\n}), h = {\n addCollections(s) {\n f(u, \"collections\", s);\n },\n addCollection(s) {\n u.collections.push(s);\n },\n removeCollection(s) {\n f(u, \"collections\", u.collections.filter((e) => e.id !== s));\n },\n updateCollection(s) {\n const e = u.collections.findIndex((o) => o.id === s.id);\n e !== -1 ? f(u.collections, e, s) : u.collections.push(s);\n }\n}, l = {\n fetchCollectionsByResource({ resourceType: s, resourceId: e }) {\n return p.getCollectionsByResource(s, e).then((o) => (h.addCollections(o), o));\n },\n createCollection({ baseResourceType: s, baseResourceId: e, resourceType: o, resourceId: n, name: r }) {\n return p.createCollection(s, e, r).then((m) => {\n h.addCollection(m), l.addResourceToCollection({\n collectionId: m.id,\n resourceType: o,\n resourceId: n\n });\n });\n },\n renameCollection({ collectionId: s, name: e }) {\n return p.renameCollection(s, e).then((o) => (h.updateCollection(o), o));\n },\n addResourceToCollection({ collectionId: s, resourceType: e, resourceId: o }) {\n return p.addResource(s, e, o).then((n) => (h.updateCollection(n), n));\n },\n removeResource({ collectionId: s, resourceType: e, resourceId: o }) {\n return p.removeResource(s, e, o).then((n) => {\n n.resources.length > 0 ? h.updateCollection(n) : h.removeCollection(n);\n });\n },\n search(s) {\n return p.search(s);\n }\n};\nfunction R(s, e, o, n, r, m, _, I) {\n var i = typeof s == \"function\" ? s.options : s;\n e && (i.render = e, i.staticRenderFns = o, i._compiled = !0), n && (i.functional = !0), m && (i._scopeId = \"data-v-\" + m);\n var a;\n if (_ ? (a = function(c) {\n c = c || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, !c && typeof __VUE_SSR_CONTEXT__ < \"u\" && (c = __VUE_SSR_CONTEXT__), r && r.call(this, c), c && c._registeredComponents && c._registeredComponents.add(_);\n }, i._ssrRegister = a) : r && (a = I ? function() {\n r.call(\n this,\n (i.functional ? this.parent : this).$root.$options.shadowRoot\n );\n } : r), a)\n if (i.functional) {\n i._injectStyles = a;\n var b = i.render;\n i.render = function(N, v) {\n return a.call(v), b(N, v);\n };\n } else {\n var C = i.beforeCreate;\n i.beforeCreate = C ? [].concat(C, a) : [a];\n }\n return {\n exports: s,\n options: i\n };\n}\nconst B = {\n name: \"CollectionListItem\",\n components: {\n NcAvatar: w,\n NcActions: S,\n NcActionButton: k\n },\n props: {\n collection: {\n type: Object,\n default: null\n }\n },\n data() {\n return {\n detailsOpen: !1,\n newName: null,\n error: {}\n };\n },\n computed: {\n getIcon() {\n return (s) => [s.iconClass];\n },\n typeClass() {\n return (s) => \"resource-type-\" + s.type;\n },\n limitedResources() {\n return (s) => s.resources ? s.resources.slice(0, 2) : [];\n },\n iconUrl() {\n return (s) => s.mimetype ? OC.MimeType.getIconUrl(s.mimetype) : s.iconUrl ? s.iconUrl : \"\";\n }\n },\n methods: {\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = !0;\n },\n hideDetails() {\n this.detailsOpen = !1;\n },\n removeResource(s, e) {\n l.removeResource({\n collectionId: s.id,\n resourceType: e.type,\n resourceId: e.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 l.renameCollection({\n collectionId: this.collection.id,\n name: this.newName\n }).then((s) => {\n this.newName = null;\n }).catch((s) => {\n this.$set(this.error, \"rename\", t(\"core\", \"Failed to rename the project\")), console.error(s), setTimeout(() => {\n f(this.error, \"rename\", null);\n }, 3e3);\n });\n }\n }\n};\nvar E = function() {\n var e = this, o = e._self._c;\n return o(\"li\", { staticClass: \"collection-list-item\" }, [o(\"NcAvatar\", { staticClass: \"collection-avatar\", attrs: { \"display-name\": e.collection.name, \"allow-placeholder\": \"\" } }), e.newName === null ? o(\"span\", { staticClass: \"collection-item-name\", attrs: { title: \"\" }, on: { click: e.showDetails } }, [e._v(e._s(e.collection.name))]) : o(\"form\", { class: { shouldshake: e.error.rename }, on: { submit: function(n) {\n return n.preventDefault(), e.renameCollection.apply(null, arguments);\n } } }, [o(\"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(n) {\n n.target.composing || (e.newName = n.target.value);\n } } }), o(\"input\", { staticClass: \"icon-confirm\", attrs: { type: \"submit\", value: \"\" } })]), !e.detailsOpen && e.newName === null ? o(\"div\", { staticClass: \"linked-icons\" }, e._l(e.limitedResources(e.collection), function(n) {\n return o(\"a\", { key: n.type + \"|\" + n.id, class: e.typeClass(n), attrs: { title: n.name, href: n.link } }, [o(\"img\", { attrs: { src: e.iconUrl(n) } })]);\n }), 0) : e._e(), e.newName === null ? o(\"span\", { staticClass: \"sharingOptionsGroup\" }, [o(\"NcActions\", [o(\"NcActionButton\", { attrs: { icon: \"icon-info\" }, on: { click: function(n) {\n return n.preventDefault(), e.toggleDetails.apply(null, arguments);\n } } }, [e._v(\" \" + e._s(e.detailsOpen ? e.t(\"core\", \"Hide details\") : e.t(\"core\", \"Show details\")) + \" \")]), o(\"NcActionButton\", { attrs: { icon: \"icon-rename\" }, on: { click: function(n) {\n return n.preventDefault(), e.openRename.apply(null, arguments);\n } } }, [e._v(\" \" + e._s(e.t(\"core\", \"Rename project\")) + \" \")])], 1)], 1) : e._e(), o(\"transition\", { attrs: { name: \"fade\" } }, [e.error.rename ? o(\"div\", { staticClass: \"error\" }, [e._v(\" \" + e._s(e.error.rename) + \" \")]) : e._e()]), o(\"transition\", { attrs: { name: \"fade\" } }, [e.detailsOpen ? o(\"ul\", { staticClass: \"resource-list-details\" }, e._l(e.collection.resources, function(n) {\n return o(\"li\", { key: n.type + \"|\" + n.id, class: e.typeClass(n) }, [o(\"a\", { attrs: { href: n.link } }, [o(\"img\", { attrs: { src: e.iconUrl(n) } }), o(\"span\", { staticClass: \"resource-name\" }, [e._v(e._s(n.name || \"\"))])]), o(\"span\", { staticClass: \"icon-close\", on: { click: function(r) {\n return e.removeResource(e.collection, n);\n } } })]);\n }), 0) : e._e()])], 1);\n}, L = [], U = /* @__PURE__ */ R(\n B,\n E,\n L,\n !1,\n null,\n \"8e58e0a5\",\n null,\n null\n);\nconst j = U.exports, y = 0, g = 1, F = T(\n function(s, e) {\n s !== \"\" && (e(!0), l.search(s).then((o) => {\n this.searchCollections = o;\n }).catch((o) => {\n console.error(\"Failed to search for collections\", o);\n }).finally(() => {\n e(!1);\n }));\n },\n 500,\n {}\n), P = {\n name: \"CollectionList\",\n components: {\n CollectionListItem: j,\n NcAvatar: w,\n NcSelect: O\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: !0\n }\n },\n data() {\n return {\n selectIsOpen: !1,\n generatingCodes: !1,\n codes: void 0,\n value: null,\n model: {},\n searchCollections: [],\n error: null,\n state: u,\n isSelectOpen: !1\n };\n },\n computed: {\n collections() {\n return this.state.collections.filter((s) => typeof s.resources.find((e) => e && e.id === \"\" + this.id && e.type === this.type) < \"u\");\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 s = [];\n window.OCP.Collaboration.getTypes().sort().forEach((e) => {\n s.push({\n method: y,\n type: e,\n title: window.OCP.Collaboration.getLabel(e),\n class: window.OCP.Collaboration.getIcon(e),\n action: () => window.OCP.Collaboration.trigger(e)\n });\n });\n for (const e in this.searchCollections)\n this.collections.findIndex((o) => o.id === this.searchCollections[e].id) === -1 && s.push({\n method: g,\n title: this.searchCollections[e].name,\n collectionId: this.searchCollections[e].id\n });\n return s;\n }\n },\n watch: {\n type() {\n this.isActive && l.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n },\n id() {\n this.isActive && l.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n },\n isActive(s) {\n s && l.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n }\n },\n mounted() {\n l.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n },\n methods: {\n select(s, e) {\n s.method === y && s.action().then((o) => {\n l.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: s.type,\n resourceId: o,\n name: this.name\n }).catch((n) => {\n this.setError(t(\"core\", \"Failed to create a project\"), n);\n });\n }).catch((o) => {\n console.error(\"No resource selected\", o);\n }), s.method === g && l.addResourceToCollection({\n collectionId: s.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((o) => {\n this.setError(t(\"core\", \"Failed to add the item to the project\"), o);\n });\n },\n search(s, e) {\n F.bind(this)(s, e);\n },\n showSelect() {\n this.selectIsOpen = !0, this.$refs.select.$el.focus();\n },\n hideSelect() {\n this.selectIsOpen = !1;\n },\n isVueComponent(s) {\n return s._isVue;\n },\n setError(s, e) {\n console.error(s, e), this.error = s, setTimeout(() => {\n this.error = null;\n }, 5e3);\n }\n }\n};\nvar V = function() {\n var e = this, o = e._self._c;\n return e.collections && e.type && e.id ? o(\"ul\", { staticClass: \"collection-list\", attrs: { id: \"collection-list\" } }, [o(\"li\", { on: { click: e.showSelect } }, [e._m(0), o(\"div\", { attrs: { id: \"collection-select-container\" } }, [o(\"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(n) {\n e.isSelectOpen = !1;\n }, open: function(n) {\n e.isSelectOpen = !0;\n }, \"option:selected\": e.select, search: e.search }, scopedSlots: e._u([{ key: \"selected-option\", fn: function(n) {\n return [o(\"span\", { staticClass: \"option__desc\" }, [o(\"span\", { staticClass: \"option__title\" }, [e._v(e._s(n.title))])])];\n } }, { key: \"option\", fn: function(n) {\n return [o(\"span\", { staticClass: \"option__wrapper\" }, [n.class ? o(\"span\", { staticClass: \"avatar\", class: n.class }) : n.method !== 2 ? o(\"NcAvatar\", { attrs: { \"allow-placeholder\": \"\", \"display-name\": n.title } }) : e._e(), o(\"span\", { staticClass: \"option__title\" }, [e._v(e._s(n.title))])], 1)];\n } }], null, !1, 2397208459), model: { value: e.value, callback: function(n) {\n e.value = n;\n }, expression: \"value\" } }, [o(\"p\", { staticClass: \"hint\" }, [e._v(\" \" + e._s(e.t(\"core\", \"Connect items to a project to make them easier to find\")) + \" \")])])], 1)]), o(\"transition\", { attrs: { name: \"fade\" } }, [e.error ? o(\"li\", { staticClass: \"error\" }, [e._v(\" \" + e._s(e.error) + \" \")]) : e._e()]), e._l(e.collections, function(n) {\n return o(\"CollectionListItem\", { key: n.id, attrs: { collection: n } });\n })], 2) : e._e();\n}, x = [function() {\n var s = this, e = s._self._c;\n return e(\"div\", { staticClass: \"avatar\" }, [e(\"span\", { staticClass: \"icon-projects\" })]);\n}], H = /* @__PURE__ */ R(\n P,\n V,\n x,\n !1,\n null,\n \"75a4370b\",\n null,\n null\n);\nconst Q = H.exports;\nexport {\n Q as CollectionList,\n j as CollectionListItem\n};\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getCapabilities } from '@nextcloud/capabilities'\n\nexport default class Config {\n\n\tconstructor() {\n\t\tthis._capabilities = getCapabilities()\n\t}\n\n\t/**\n\t * Get default share permissions, if any\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\t get defaultPermissions() {\n\t\treturn this._capabilities.files_sharing?.default_permissions\n\t}\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn this._capabilities.files_sharing?.public.upload\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDate() {\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default internal expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDate() {\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default remote expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new remote shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\t// eslint-disable-next-line camelcase\n\t\treturn this._capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& this._capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (this._capabilities.files_sharing.sharebymail === undefined) ? false : this._capabilities.files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (this._capabilities.files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\treturn this._capabilities.password_policy ? this._capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\tif (ocsData.attributes && typeof ocsData.attributes === 'string') {\n\t\t\ttry {\n\t\t\t\tocsData.attributes = JSON.parse(ocsData.attributes)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Could not parse share attributes returned by server', ocsData.attributes)\n\t\t\t}\n\t\t}\n\t\tocsData.attributes = ocsData.attributes ?? []\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Get the share attributes\n\t *\n\t * @return {Array}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget attributes() {\n\t\treturn this._share.attributes\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date\n\t *\n\t * @return {string} date with YYYY-MM-DD format\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date\n\t *\n\t * @param {string} date the share expiration date with YYYY-MM-DD format\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label ?? ''\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password expiration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t/**\n\t * Does this share have download permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDownloadPermission() {\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\treturn attr.enabled\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tset hasDownloadPermission(enabled) {\n\t\tthis.setAttribute('permissions', 'download', !!enabled)\n\t}\n\n\tsetAttribute(scope, key, enabled) {\n\t\tconst attrUpdate = {\n\t\t\tscope,\n\t\t\tkey,\n\t\t\tenabled,\n\t\t}\n\n\t\t// try and replace existing\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n\t\t\t\tthis._share.attributes.splice(i, 1, attrUpdate)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis._share.attributes.push(attrUpdate)\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","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 }","<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 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\"","import { render, staticRenderFns } from \"./CheckBold.vue?vue&type=template&id=d4239c4a\"\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 }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ClipboardFlow.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ClipboardFlow.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 clipboard-flow-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,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M15,19L11,15H14V8H16V15H19L15,19M10,16H8V9H5L9,5L13,9H10V16\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ClipboardFlowIcon\",\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 \"./ClipboardFlow.vue?vue&type=template&id=692acad9\"\nimport script from \"./ClipboardFlow.vue?vue&type=script&lang=js\"\nexport * from \"./ClipboardFlow.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 clipboard-flow-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,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M15,19L11,15H14V8H16V15H19L15,19M10,16H8V9H5L9,5L13,9H10V16\"}},[(_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!./SharingEntrySimple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<NcActions 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/dist/Components/NcActions.js'\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-left: 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-left: auto !important;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=1852ea78&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=1852ea78&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=1852ea78&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=1852ea78&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 \"1852ea78\",\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 }","<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/dist/Components/NcActionButton.js'\n\nimport CheckIcon from 'vue-material-design-icons/CheckBold.vue'\nimport ClipboardIcon from 'vue-material-design-icons/ClipboardFlow.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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=e40cd936&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=e40cd936&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=e40cd936&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=e40cd936&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 \"e40cd936\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharing-search\"},[_c('label',{attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Search for share recipients')))]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",staticClass:\"sharing-search__input\",attrs:{\"input-id\":\"sharing-search-input\",\"disabled\":!_vm.canReshare,\"loading\":_vm.loading,\"filterable\":false,\"placeholder\":_vm.inputPlaceholder,\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options},on:{\"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.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService.js'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\n\nconst config = new Config()\n// note: some chars removed on purpose to make them human friendly when read out\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\tshowSuccess(t('files_sharing', 'Password created successfully'))\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t\tshowError(t('files_sharing', 'Error generating password from password policy'))\n\t\t}\n\t}\n\n\tconst array = new Uint8Array(10)\n\tconst ratio = passwordSet.length / 255\n\tself.crypto.getRandomValues(array)\n\tlet password = ''\n\tfor (let i = 0; i < array.length; i++) {\n\t\tpassword += passwordSet.charAt(array[i] * ratio)\n\t}\n\treturn password\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share.js'\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 shareautomatically 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 data.note\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","import Share from '../models/Share.js'\nimport Config from '../services/ConfigService.js'\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\tenabled: 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\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","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"sharing-search\">\n\t\t<label for=\"sharing-search-input\">{{ t('files_sharing', 'Search for share recipients') }}</label>\n\t\t<NcSelect ref=\"select\"\n\t\t\tv-model=\"value\"\n\t\t\tinput-id=\"sharing-search-input\"\n\t\t\tclass=\"sharing-search__input\"\n\t\t\t:disabled=\"!canReshare\"\n\t\t\t:loading=\"loading\"\n\t\t\t:filterable=\"false\"\n\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:user-select=\"true\"\n\t\t\t:options=\"options\"\n\t\t\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 : t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport Config from '../services/ConfigService.js'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tmixins: [ShareTypes, 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},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t\tvalue: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\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\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH,\n\t\t\t]\n\n\t\t\tif (getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurrences of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differentiate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Guest'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-group',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Group'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Email'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-teams',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Team'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-room',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Talk conversation'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-deck',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Deck board'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-sciencemesh',\n\t\t\t\t\ticonTitle: t('files_sharing', '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 === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubname = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubname = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\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 !== this.SHARE_TYPES.SHARE_TYPE_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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=19527463&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=19527463&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=19527463\"\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=19527463&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon,\"aria-label\":_vm.toggleTooltip,\"title\":_vm.toggleTooltip},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}})],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share},on:{\"remove:share\":_vm.removeShare}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { davGetClient, davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files';\nexport const client = davGetClient();\nexport const fetchNode = async (node) => {\n const propfindPayload = davGetDefaultPropfind();\n const result = await client.stat(`${davRootPath}${node.path}`, {\n details: true,\n data: propfindPayload,\n });\n return davResultToNode(result.data);\n};\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n\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","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { fetchNode } from '../services/WebdavClient.ts'\n\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share.js'\nimport SharesRequests from './ShareRequests.js'\nimport ShareTypes from './ShareTypes.js'\nimport Config from '../services/ConfigService.js'\nimport logger from '../services/logger.ts'\n\nimport {\n\tBUNDLED_PERMISSIONS,\n} from '../lib/SharePermissionsToolBox.js'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { },\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tnode: null,\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\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 [this.SHARE_TYPES.SHARE_TYPE_LINK, this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(shareType)\n\t\t},\n\t\tisRemoteShare() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP || this.share.type === this.SHARE_TYPES.SHARE_TYPE_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 return 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)\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: debounce(function(date) {\n\t\t\tthis.share.expireDate = this.formatDateToString(new Date(date))\n\t\t}, 500),\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t},\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 ((typeof this.share[name]) === 'object') {\n\t\t\t\t\t\tproperties[name] = JSON.stringify(this.share[name])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties[name] = this.share[name].toString()\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\t\t\t\t\t\tshowSuccess(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\treturn\n\t\t\t}\n\n\t\t\t// This share does not exists on the server yet\n\t\t\tconsole.debug('Updated local share', this.share)\n\t\t},\n\n\t\t/**\n\t\t * @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 expire 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 - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<NcAvatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t</template>\n\t\t<NcActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</NcActionText>\n\t\t<NcActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</NcActionLink>\n\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</NcActionButton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\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-left: 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-left: auto;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=283ca89e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=283ca89e&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=283ca89e&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=283ca89e&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 \"283ca89e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('NcActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\"\n\t\t\t:aria-expanded=\"showInheritedShares\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<NcActionButton :icon=\"showInheritedSharesIcon\"\n\t\t\t\t:aria-label=\"toggleTooltip\"\n\t\t\t\t:title=\"toggleTooltip\"\n\t\t\t\t@click.prevent.stop=\"toggleInheritedShares\" />\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share.js'\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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=50f9af8c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=50f9af8c&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=50f9af8c&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=50f9af8c&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 \"50f9af8c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"index\":_vm.shares.length > 1 ? index + 1 : null,\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare(...arguments)}],\"add:share\":function($event){return _vm.addShare(...arguments)},\"remove:share\":_vm.removeShare,\"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=44530562\"\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=0bf2dcbd\"\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=cc96c380\"\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=33754429\"\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=0e338773\"\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 }","<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=0610cec6\"\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=30219a41\"\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=437aa472\"\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 }","<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\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 DropdownIcon from 'vue-material-design-icons/TriangleSmallDown.vue'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\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, ShareTypes],\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 drop')\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 [this.SHARE_TYPES.SHARE_TYPE_LINK, this.SHARE_TYPES.SHARE_TYPE_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\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=6e5dd9f1&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=6e5dd9f1&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=6e5dd9f1&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=6e5dd9f1&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 \"6e5dd9f1\",\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\",\"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 }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share.js'\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=0f0e27d0\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{ 'sharing-entry--share': share }\"\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<!-- clipboard -->\n\t\t\t<NcActions v-if=\"share && !isEmailShareType && share.token\" ref=\"copyButton\" class=\"sharing-entry__copy\">\n\t\t\t\t<NcActionButton\t:title=\"copyLinkTooltip\"\n\t\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t\t@click.prevent=\"copyLink\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<CheckIcon v-if=\"copied && copySuccess\"\n\t\t\t\t\t\t\t:size=\"20\"\n\t\t\t\t\t\t\tclass=\"icon-checkmark-color\" />\n\t\t\t\t\t\t<ClipboardIcon v-else :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t</div>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && (pendingPassword || pendingEnforcedPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"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\">\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<!-- expiration date -->\n\t\t\t<NcActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:label=\"t('files_sharing', 'Expiration date (enforced)')\"\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@input=\"onExpirationChange /* let's not submit when picked, the user might want to still edit or copy the password */\">\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\">\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 }, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</NcActionLink>\n\n\t\t\t\t<NcActionButton v-if=\"!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 } from '@nextcloud/router'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\nimport VueQrcode from '@chenfengyuan/vue-qrcode'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\nimport NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcDialog from '@nextcloud/vue/dist/Components/NcDialog.js'\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/ClipboardFlow.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'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\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},\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\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\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.index > 1) {\n\t\t\t\treturn t('files_sharing', 'Share link ({index})', { index: this.index })\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enableLinkPasswordByDefault && this.share && !this.share.id\n\t\t},\n\t\tpendingEnforcedPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\tsharePolicyHasRequiredProperties() {\n\t\t\treturn this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced\n\t\t},\n\n\t\trequiredPropertiesMissing() {\n\t\t\t// Ensure share exist and the share policy has required properties\n\t\t\tif (!this.sharePolicyHasRequiredProperties) {\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 window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for actions button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tactionsTooltip() {\n\t\t\treturn t('files_sharing', 'Actions for \"{title}\"', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for copy button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy public link of \"{title}\" to clipboard', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\tconst filterValidAction = (action) => (action.shareType.includes(ShareTypes.SHARE_TYPE_LINK) || action.shareType.includes(ShareTypes.SHARE_TYPE_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.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\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: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.formatDateToString(this.config.defaultExpirationDate)\n\t\t\t}\n\n\t\t\tthis.logger.debug('Missing required properties?', this.requiredPropertiesMissing)\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.sharePolicyHasRequiredProperties && this.requiredPropertiesMissing) {\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 mandated properties (password)...')\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()\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: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t}\n\n\t\t\t\tconsole.debug('Creating link share with options', options)\n\t\t\t\tconst newShare = await this.createShare(options)\n\n\t\t\t\tthis.open = false\n\t\t\t\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 * 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-left: 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&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary-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-left: 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-left: 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=4ec6c807&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=4ec6c807&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=4ec6c807&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=4ec6c807&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 \"4ec6c807\",\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 - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:index=\"shares.length > 1 ? index + 1 : null\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\"\n\t\t\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\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharingEntryLink from '../components/SharingEntryLink.vue'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes, 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 === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.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(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionButton',{attrs:{\"title\":_vm.copyLinkTooltip,\"aria-label\":_vm.copyLinkTooltip},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),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingEnforcedPassword || _vm.pendingExpirationDate))?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.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\":_vm.onNewLinkShare},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('LockIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2056568168)}):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"label\":_vm.t('files_sharing', 'Expiration date (enforced)'),\"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:{\"input\":function($event){_vm.onExpirationChange /* let's not submit when picked, the user might want to still edit or copy the password */}},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.apply(null, arguments)}},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 },index){return _c('NcActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(!_vm.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=5e313274\"\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\"},_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 }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon dots-horizontal-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=\"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"DotsHorizontalIcon\",\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!./DotsHorizontal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./DotsHorizontal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DotsHorizontal.vue?vue&type=template&id=a4d4ab3e\"\nimport script from \"./DotsHorizontal.vue?vue&type=script&lang=js\"\nexport * from \"./DotsHorizontal.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 dots-horizontal-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\":\"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\"}},[(_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!./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 - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<NcAvatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\n\t\t<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<NcButton class=\"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 NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\n\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\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 === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\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-left: 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","\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=79edc2ff&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=79edc2ff&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=79edc2ff&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=79edc2ff&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 \"79edc2ff\",\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 - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@open-sharing-details=\"openSharingDetails(share)\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport SharingEntry from '../components/SharingEntry.vue'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes, 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\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n}\n</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.SHARE_TYPES.SHARE_TYPE_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(\" \"),_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}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=445a39ed\"\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.SHARE_TYPES.SHARE_TYPE_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 drop'))+\"\\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',{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.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\":true,\"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\")]):_vm._e(),_vm._v(\" \"),(!_vm.isPublicShare)?_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'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_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('label',{attrs:{\"for\":\"share-note-textarea\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a note for the share recipient'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('textarea',{attrs:{\"id\":\"share-note-textarea\"},domProps:{\"value\":_vm.share.note},on:{\"input\":function($event){_vm.share.note = $event.target.value}}})]:_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.config.isResharingAllowed && _vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_LINK)?_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\":function($event){return _vm.$emit('close-sharing-details')}}},[_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=33494a74\"\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=ec4501a4\"\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=c22eb9fe\"\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=59b2bccc\"\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=363a0196\"\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\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 !== SHARE_TYPES.SHARE_TYPE_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 drop') }}\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\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<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\t:hide-label=\"true\"\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-if=\"!isPublicShare\"\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') }}\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<label for=\"share-note-textarea\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Enter a note for the share recipient') }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<textarea id=\"share-note-textarea\" :value=\"share.note\" @input=\"share.note = $event.target.value\" />\n\t\t\t\t\t</template>\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=\"config.isResharingAllowed && share.type !== SHARE_TYPES.SHARE_TYPE_LINK\"\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=\"$emit('close-sharing-details')\">\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 { Type as ShareType } from '@nextcloud/sharing'\n\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcInputField from '@nextcloud/vue/dist/Components/NcInputField.js'\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcDateTimePickerNative from '@nextcloud/vue/dist/Components/NcDateTimePickerNative.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\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'\n\nimport ExternalShareAction from '../components/ExternalShareAction.vue'\n\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\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\tNcInputField,\n\t\tNcPasswordField,\n\t\tNcDateTimePickerNative,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcLoadingIcon,\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},\n\tmixins: [ShareTypes, 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\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 this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn t('files_sharing', 'Share with {userName}', { userName: this.share.shareWithDisplayName })\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t return t('files_sharing', 'Share with email {email}', { email: this.share.shareWith })\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_LINK:\n\t\t\t\treturn t('files_sharing', 'Share link')\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn t('files_sharing', 'Share with group')\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn t('files_sharing', 'Share in conversation')\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_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 this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\t\treturn t('files_sharing', 'Share with remote group')\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\treturn t('files_sharing', 'Share with guest')\n\t\t\tdefault: {\n\t\t\t if (this.share.id) {\n\t\t\t\t\t // Share already exists\n\t\t\t\t\t return t('files_sharing', 'Update share')\n\t\t\t\t } else {\n\t\t\t\t\t return 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\t\t/**\n\t\t * Can the sharee download files or only view them ?\n\t\t */\n\t\tcanDownload: {\n\t\t\tget() {\n\t\t\t\treturn this.share.attributes.find(attr => attr.key === 'download')?.enabled || false\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\t// Find the 'download' attribute and update its value\n\t\t\t\tconst downloadAttr = this.share.attributes.find(attr => attr.key === 'download')\n\t\t\t\tif (downloadAttr) {\n\t\t\t\t\tdownloadAttr.enabled = checked\n\t\t\t\t}\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 drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t\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()\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 === this.SHARE_TYPES.SHARE_TYPE_USER\n\t\t},\n\t\tisGroupShare() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP\n\t\t},\n\t\tisNewShare() {\n\t\t\treturn !this.share.id\n\t\t},\n\t\tallowsFileDrop() {\n\t\t\tif (this.isFolder && this.config.isPublicUploadEnabled) {\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || this.share.type === this.SHARE_TYPES.SHARE_TYPE_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\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 === this.SHARE_TYPES.SHARE_TYPE_LINK\n\t\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_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 === this.SHARE_TYPES.SHARE_TYPE_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.enabled === 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, 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 can't 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.SHARE_TYPE_LINK) || action.shareType.includes(ShareType.SHARE_TYPE_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\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())\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},\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.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\tthis.creating = false\n\t\t\t\tthis.share = share\n\t\t\t\tthis.$emit('add:share', this.share)\n\t\t\t} else {\n\t\t\t\tthis.$emit('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 this.SHARE_TYPES.SHARE_TYPE_LINK:\n\t\t\t\treturn LinkIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\treturn UserIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn GroupIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn EmailIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn CircleIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn ShareIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn ShareIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_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-left: 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-right: 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::v-deep label {\n\n\t\t\t\t\tspan {\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t}\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: left;\n\t\tpadding-left: 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 The following style is applied out of the component's scope\n to remove padding from the label.checkbox-radio-switch__label,\n which is used to group radio checkbox items. The use of ::v-deep\n ensures that the padding is modified without being affected by\n the component's scoping.\n Without this achieving left alignment for the checkboxes would not\n be possible.\n */\n\t\t\tspan {\n\t\t\t\t::v-deep label {\n\t\t\t\t\tpadding-left: 0 !important;\n\t\t\t\t\tbackground-color: initial !important;\n\t\t\t\t\tborder: none !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsection.custom-permissions-group {\n\t\t\t\tpadding-left: 1.5em;\n\t\t\t}\n\t\t}\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-left: 16px;\n\n\t\t\t\t&:first-child {\n\t\t\t\t\tmargin-left: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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 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=dc079594&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=style&index=0&id=dc079594&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=dc079594&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=dc079594&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 \"dc079594\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"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>\n\t\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" 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<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\"\n\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"projectsEnabled && fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\t\t</div>\n\n\t\t<!-- additional entries, use it with cautious -->\n\t\t<div v-for=\"(section, index) in sections\"\n\t\t\tv-show=\"!showSharingDetailsView\"\n\t\t\t:ref=\"'section-' + index\"\n\t\t\t:key=\"index\"\n\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t</div>\n\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 { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Config from '../services/ConfigService.js'\nimport { shareWithTitle } from '../utils/SharedWithMe.js'\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\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\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t\tSharingDetailsTab,\n\t},\n\n\tmixins: [ShareTypes],\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\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: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false },\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => { }) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\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 === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t\t|| share.type === this.SHARE_TYPES.SHARE_TYPE_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 === this.SHARE_TYPES.SHARE_TYPE_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\t}\n\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false },\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false },\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=a65c443a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=a65c443a&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=a65c443a&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=a65c443a&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 \"a65c443a\",\n null\n \n)\n\nexport default component.exports"],"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___","params","assign","ocsVersion","window","location","protocol","host","getRootUrl","_generateUrlPath","allOptions","escape","charAt","vars","webroot","_oc_webroot","pathname","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","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","global","freeSelf","Date","now","reWhitespace","reTrimStart","objectProto","nativeObjectToString","symToStringTag","isOwn","unmasked","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","isBinary","nativeMax","nativeMin","http","listCollection","collectionId","renameCollection","collectionName","ocs","getCollectionsByResource","resourceType","resourceId","createCollection","post","addResource","removeResource","delete","observable","collections","h","addCollections","addCollection","removeCollection","filter","updateCollection","findIndex","fetchCollectionsByResource","baseResourceType","baseResourceId","addResourceToCollection","resources","R","I","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","N","C","beforeCreate","components","NcAvatar","NcActions","NcActionButton","collection","detailsOpen","newName","computed","getIcon","iconClass","typeClass","limitedResources","iconUrl","mimetype","OC","MimeType","getIconUrl","toggleDetails","showDetails","hideDetails","openRename","catch","$set","setTimeout","_self","_c","staticClass","attrs","title","on","click","_v","_s","class","shouldshake","rename","submit","preventDefault","directives","rawName","expression","autocomplete","autocapitalize","domProps","input","composing","_e","_l","href","link","icon","F","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","searchCollections","finally","CollectionListItem","NcSelect","isActive","Boolean","selectIsOpen","generatingCodes","codes","model","state","isSelectOpen","find","placeholder","OCP","Collaboration","getTypes","method","getLabel","action","trigger","select","setError","showSelect","$refs","focus","hideSelect","isVueComponent","_isVue","_m","ref","label","close","scopedSlots","_u","Config","_capabilities","getCapabilities","defaultPermissions","_this$_capabilities$f","files_sharing","default_permissions","isPublicUploadEnabled","_this$_capabilities$f2","public","upload","isShareWithLinkAllowed","getElementById","federatedShareDocLink","appConfig","core","federatedCloudShareDoc","defaultExpirationDate","isDefaultExpireDateEnabled","setDate","getDate","defaultExpireDate","defaultInternalExpirationDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","defaultRemoteExpirationDateString","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","defaultExpireDateEnabled","isDefaultInternalExpireDateEnforced","defaultInternalExpireDateEnforced","isDefaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","defaultRemoteExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isMailShareAllowed","_this$_capabilities","_this$_capabilities2","sharebymail","enabled","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","password","enforced","shouldAlwaysShowUnique","_this$_capabilities$f3","sharee","always_show_unique","allowGroupSharing","maxAutocompleteResults","config","minSearchStringLength","passwordPolicy","password_policy","Share","ocsData","_ocsData$attributes","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","_this$_share$label","mailSend","hideDownload","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","attr","scope","setAttribute","attrUpdate","splice","canEdit","can_edit","canDelete","can_delete","viaFileid","via_fileid","viaPath","via_path","storageId","storage_id","storage","itemSource","item_source","status","SHARE_TYPES","ShareTypes","emits","fillColor","_vm","_b","$event","$emit","$attrs","required","subtitle","isUnique","ariaExpanded","ariaExpandedValue","_t","SharingEntrySimple","CheckIcon","ClipboardIcon","fileInfo","copied","copySuccess","internalLink","generateUrl","copyLinkTooltip","internalLinkSubtitle","copyLink","navigator","clipboard","writeText","showSuccess","shareEntrySimple","actionsComponent","proxy","async","api","request","axios","info","showError","crypto","getRandomValues","passwordSet","shareUrl","generateOcsUrl","createShare","_ref","shareType","publicUpload","_request$data","share","emit","_error$response","errorMessage","response","meta","message","Notification","showTemporary","deleteShare","_request$data2","_error$response2","updateShare","properties","_request$data3","_error$response3","openSharingDetails","shareRequestObject","handlerInput","suggestions","externalShareRequestObject","mapShareRequestToShareObject","shareDetails","openShareDetailsForCustomSettings","setCustomPermissions","_shareRequestObject$p","is_no_user","isNoUser","user","displayName","mixins","ShareRequests","ShareDetails","shares","linkShares","reshare","canReshare","loading","recommendations","ShareSearch","OCA","Sharing","externalResults","results","inputPlaceholder","allowRemoteSharing","isValidQuery","noResultText","getRecommendations","onSelected","option","asyncFind","debounceGetSuggestions","getSuggestions","query_lookup_default","SHARE_TYPE_USER","SHARE_TYPE_GROUP","SHARE_TYPE_REMOTE","SHARE_TYPE_REMOTE_GROUP","SHARE_TYPE_CIRCLE","SHARE_TYPE_ROOM","SHARE_TYPE_GUEST","SHARE_TYPE_DECK","SHARE_TYPE_SCIENCEMESH","SHARE_TYPE_EMAIL","format","perPage","exact","rawExactSuggestions","elem","rawSuggestions","exactSuggestions","filterOutExistingShares","formatForMultiselect","lookupEntry","lookupEnabled","condition","allSuggestions","nameCounts","desc","debounce","rawRecommendations","getCurrentUser","uid","sharesObj","shareTypeToIcon","iconTitle","subname","_result$shareWithDisp","server","_result$shareWithDesc","shareWithDescription","uuid","clear-search-on-blur","$$v","client","davGetClient","getLoggerBuilder","setApp","detectUser","build","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","ALL_FILE","SharesRequests","_this$share","errors","saving","updateQueue","PQueue","concurrency","reactiveState","hasNote","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isFolder","isPublicShare","_this$share$shareType","SHARE_TYPE_LINK","isRemoteShare","isShareOwner","isExpiryDateEnforced","hasCustomPermissions","maxExpirationDateEnforced","getNode","propfindPayload","davGetDefaultPropfind","stat","davRootPath","details","davResultToNode","fetchNode","logger","checkShare","expirationDate","formatDateToString","UTC","getFullYear","getMonth","toISOString","onExpirationChange","onExpirationDisable","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","DropdownIcon","selectedOption","ariaLabel","canViewText","canEditText","fileDropText","customPermissionsText","preSelectedOption","IconEyeOutline","IconPencil","supportsFileDrop","IconFileUpload","IconTune","_this$share$type","dropDownPermissionValue","created","selectOption","optionLabel","quickShareActions","menuButton","is","_g","handlers","ExternalShareAction","NcActionCheckbox","NcActionInput","NcActionSeparator","NcDialog","VueQrcode","Tune","IconCalendarBlank","IconQr","ErrorIcon","LockIcon","CloseIcon","PlusIcon","SharingEntryQuickShareSelect","shareCreationComplete","pending","ExternalLegacyLinkActions","ExternalLinkActions","ExternalShareActions","showQRCode","isEmailShareType","isPasswordProtected","Vue","GeneratePassword","expirationTime","moment","diff","fromNow","isTalkEnabled","appswebroots","spreed","isPasswordProtectedByTalkAvailable","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","hasUnsavedPassword","pendingPassword","pendingEnforcedPassword","pendingExpirationDate","sharePolicyHasRequiredProperties","requiredPropertiesMissing","isPasswordMissing","isExpireDateMissing","newPassword","shareLink","actionsTooltip","externalLegacyLinkActions","actions","externalLinkActions","advanced","isPasswordPolicyEnabled","canChangeHideDownload","shareAttributes","some","shareAttribute","onNewLinkShare","shareDefaults","component","pushNewLinkShare","update","newShare","_data$response","copyButton","onPasswordChange","onPasswordDisable","onPasswordSubmit","onPasswordProtectedByTalkChange","onMenuClose","onCancel","SharingEntryLink","minLength","canLinkShare","hasLinkShares","hasShares","addShare","awaitForShare","$nextTick","$children","NcButton","DotsHorizontalIcon","tooltip","hasStatus","SharingEntry","NcInputField","NcPasswordField","NcDateTimePickerNative","NcCheckboxRadioSwitch","NcLoadingIcon","CircleIcon","EditIcon","LinkIcon","GroupIcon","ShareIcon","UserIcon","UploadIcon","ViewIcon","MenuDownIcon","MenuUpIcon","shareRequestValue","writeNoteToRecipientIsChecked","sharingPermission","revertSharingPermission","passwordError","advancedSectionAccordionExpanded","bundledPermissions","isFirstComponentLoad","creating","userName","email","updateAtomicPermissions","isEditChecked","canCreate","isCreateChecked","isDeleteChecked","isReshareChecked","canDownload","_this$share$attribute","downloadAttr","hasRead","isReadChecked","hasExpirationDate","isValidShareAttribute","defaultExpiryDate","isSetDownloadButtonVisible","isPasswordEnforced","isGroupShare","isUserShare","isNewShare","allowsFileDrop","hasFileDropPermissions","shareButtonText","canSetEdit","sharePermissions","canSetCreate","canSetDelete","canSetReshare","canSetDownload","canRemoveReadPermission","customPermissionsList","translatedPermissions","permission","hasPermissions","initialPermissionSet","permissionsToCheck","toLocaleLowerCase","getLanguage","advancedControlExpandedValue","errorPasswordLabel","passwordHint","ShareType","isChecked","beforeMount","initializePermissions","initializeAttributes","_this$$refs$quickPerm","quickPermissions","expandCustomPermissions","toggleCustomPermissions","selectedPermission","isCustomPermissions","toDateString","handleShareType","handleDefaultPermissions","handleCustomPermissions","saveShare","_this$$refs$externalL","permissionsAndAttributes","sharePermissionsSet","incomingShare","allSettled","_action$$children$at","_action$$children$at2","_action$$children$at3","at","onSave","getShareTypeIcon","EmailIcon","_vm$share$expireDate","refInFor","CollectionList","SharingEntryInternal","SharingInherited","SharingInput","SharingLinkList","SharingList","SharingDetailsTab","deleteEvent","expirationInterval","sharedWithMe","sections","ShareTabSections","getSections","projectsEnabled","loadState","showSharingDetailsView","shareDetailsData","returnFocusElement","isSharedWithMe","getShares","fetchShares","reshares","fetchSharedWithMe","shared_with_me","all","processSharedWithMe","processShares","_error$response$data","clearInterval","updateExpirationSubtitle","unix","relativetime","Util","relativeModifiedDate","_ref2","circle","conversation","shareWithTitle","setInterval","shareOwnerId","currentUser","shareOwner","unshift","shareList","listComponent","linkShareList","toggleShareDetailsView","eventData","activeElement","classList","className","startsWith","_document$activeEleme","menuId","_this$returnFocusElem","emptyContentWithSections","section"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/2773-2773.js.map b/dist/2773-2773.js.map deleted file mode 100644 index 84fb2e60304..00000000000 --- a/dist/2773-2773.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"2773-2773.js?v=883944effbd72c3fcc3c","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-Au1Gr_G6.css","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=79edc2ff&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=283ca89e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=e40cd936&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=4ec6c807&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=6e5dd9f1&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=1852ea78&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&id=19527463&prod&lang=scss","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=style&index=0&id=6ee48c7b&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=50f9af8c&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=a65c443a&prod&scoped=true&lang=scss","webpack:///nextcloud/node_modules/nextcloud-vue-collections/node_modules/@nextcloud/router/dist/index.js","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-Au1Gr_G6.css?fdca","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.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?6c02","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckBold.vue","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?7500","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckBold.vue?vue&type=template&id=d4239c4a","webpack:///nextcloud/node_modules/vue-material-design-icons/ClipboardFlow.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/ClipboardFlow.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ClipboardFlow.vue?07b2","webpack:///nextcloud/node_modules/vue-material-design-icons/ClipboardFlow.vue?vue&type=template&id=692acad9","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?9588","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?0c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?60fa","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/utils/GeneratePassword.js","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","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?9b5c","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/services/WebdavClient.ts","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","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?c7aa","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?77d5","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?6882","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=44530562","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=0bf2dcbd","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=cc96c380","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=33754429","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=0e338773","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=0610cec6","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=30219a41","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=437aa472","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?30ef","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/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/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?cf0e","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/node_modules/vue-material-design-icons/DotsHorizontal.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/DotsHorizontal.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/DotsHorizontal.vue?c5a1","webpack:///nextcloud/node_modules/vue-material-design-icons/DotsHorizontal.vue?vue&type=template&id=a4d4ab3e","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?d549","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=33494a74","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=ec4501a4","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=c22eb9fe","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=59b2bccc","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=363a0196","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?595e","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?a79d","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997"],"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-8e58e0a5],\n.fade-leave-active[data-v-8e58e0a5] {\n transition: opacity .3s ease;\n}\n.fade-enter[data-v-8e58e0a5],\n.fade-leave-to[data-v-8e58e0a5] {\n opacity: 0;\n}\n.linked-icons[data-v-8e58e0a5] {\n display: flex;\n}\n.linked-icons img[data-v-8e58e0a5] {\n padding: 12px;\n height: 44px;\n display: block;\n background-repeat: no-repeat;\n background-position: center;\n opacity: .7;\n}\n.linked-icons img[data-v-8e58e0a5]:hover {\n opacity: 1;\n}\n.popovermenu[data-v-8e58e0a5] {\n display: none;\n}\n.popovermenu.open[data-v-8e58e0a5] {\n display: block;\n}\nli.collection-list-item[data-v-8e58e0a5] {\n flex-wrap: wrap;\n height: auto;\n cursor: pointer;\n margin-bottom: 0 !important;\n}\nli.collection-list-item .collection-avatar[data-v-8e58e0a5] {\n margin-top: 6px;\n}\nli.collection-list-item form[data-v-8e58e0a5],\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n flex-basis: 10%;\n flex-grow: 1;\n display: flex;\n}\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\n padding: 12px 9px;\n}\nli.collection-list-item input[data-v-8e58e0a5] {\n margin-top: 4px;\n border-color: var(--color-border-maxcontrast);\n}\nli.collection-list-item input[type=text][data-v-8e58e0a5] {\n flex-grow: 1;\n}\nli.collection-list-item .error[data-v-8e58e0a5],\nli.collection-list-item .resource-list-details[data-v-8e58e0a5] {\n flex-basis: 100%;\n width: 100%;\n}\nli.collection-list-item .resource-list-details li[data-v-8e58e0a5] {\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-8e58e0a5]:hover {\n background-color: var(--color-background-dark);\n}\nli.collection-list-item .resource-list-details li a[data-v-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\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-8e58e0a5] {\n width: 24px;\n height: 24px;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5] {\n opacity: .7;\n}\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:hover,\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:focus {\n opacity: 1;\n}\n.shouldshake[data-v-8e58e0a5] {\n animation: shake-8e58e0a5 .6s 1 linear;\n}\n@keyframes shake-8e58e0a5 {\n 0% {\n transform: translate(15px);\n }\n 20% {\n transform: translate(-15px);\n }\n 40% {\n transform: translate(7px);\n }\n 60% {\n transform: translate(-7px);\n }\n 80% {\n transform: translate(3px);\n }\n to {\n transform: translate(0);\n }\n}\n.collection-list *[data-v-75a4370b] {\n box-sizing: border-box;\n}\n.collection-list > li[data-v-75a4370b] {\n display: flex;\n align-items: start;\n gap: 12px;\n}\n.collection-list > li > .avatar[data-v-75a4370b] {\n margin-top: auto;\n}\n#collection-select-container[data-v-75a4370b] {\n display: flex;\n flex-direction: column;\n}\n.v-select span.avatar[data-v-75a4370b] {\n display: block;\n padding: 16px;\n opacity: .7;\n background-repeat: no-repeat;\n background-position: center;\n}\n.v-select span.avatar[data-v-75a4370b]:hover {\n opacity: 1;\n}\np.hint[data-v-75a4370b] {\n z-index: 1;\n margin-top: -16px;\n padding: 8px;\n color: var(--color-text-maxcontrast);\n line-height: normal;\n}\ndiv.avatar[data-v-75a4370b] {\n width: 32px;\n height: 32px;\n margin: 30px 0 0;\n padding: 8px;\n background-color: var(--color-background-dark);\n}\n.icon-projects[data-v-75a4370b] {\n display: block;\n padding: 8px;\n background-repeat: no-repeat;\n background-position: center;\n}\n.option__wrapper[data-v-75a4370b] {\n display: flex;\n}\n.option__wrapper .avatar[data-v-75a4370b] {\n display: block;\n background-color: var(--color-background-darker) !important;\n}\n.option__wrapper .option__title[data-v-75a4370b] {\n padding: 4px;\n}\n.fade-enter-active[data-v-75a4370b],\n.fade-leave-active[data-v-75a4370b] {\n transition: opacity .5s;\n}\n.fade-enter[data-v-75a4370b],\n.fade-leave-to[data-v-75a4370b] {\n opacity: 0;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/nextcloud-vue-collections/dist/assets/index-Au1Gr_G6.css\"],\"names\":[],\"mappings\":\"AAAA;;EAEE,4BAA4B;AAC9B;AACA;;EAEE,UAAU;AACZ;AACA;EACE,aAAa;AACf;AACA;EACE,aAAa;EACb,YAAY;EACZ,cAAc;EACd,4BAA4B;EAC5B,2BAA2B;EAC3B,WAAW;AACb;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;;EAEE,eAAe;EACf,YAAY;EACZ,aAAa;AACf;AACA;EACE,iBAAiB;AACnB;AACA;EACE,eAAe;EACf,6CAA6C;AAC/C;AACA;EACE,YAAY;AACd;AACA;;EAEE,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,WAAW;AACb;AACA;;EAEE,UAAU;AACZ;AACA;EACE,sCAAsC;AACxC;AACA;EACE;IACE,0BAA0B;EAC5B;EACA;IACE,2BAA2B;EAC7B;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,0BAA0B;EAC5B;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,uBAAuB;EACzB;AACF;AACA;EACE,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,WAAW;EACX,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,UAAU;AACZ;AACA;EACE,UAAU;EACV,iBAAiB;EACjB,YAAY;EACZ,oCAAoC;EACpC,mBAAmB;AACrB;AACA;EACE,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,YAAY;EACZ,8CAA8C;AAChD;AACA;EACE,cAAc;EACd,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;AAC7B;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,2DAA2D;AAC7D;AACA;EACE,YAAY;AACd;AACA;;EAEE,uBAAuB;AACzB;AACA;;EAEE,UAAU;AACZ\",\"sourcesContent\":[\".fade-enter-active[data-v-8e58e0a5],\\n.fade-leave-active[data-v-8e58e0a5] {\\n transition: opacity .3s ease;\\n}\\n.fade-enter[data-v-8e58e0a5],\\n.fade-leave-to[data-v-8e58e0a5] {\\n opacity: 0;\\n}\\n.linked-icons[data-v-8e58e0a5] {\\n display: flex;\\n}\\n.linked-icons img[data-v-8e58e0a5] {\\n padding: 12px;\\n height: 44px;\\n display: block;\\n background-repeat: no-repeat;\\n background-position: center;\\n opacity: .7;\\n}\\n.linked-icons img[data-v-8e58e0a5]:hover {\\n opacity: 1;\\n}\\n.popovermenu[data-v-8e58e0a5] {\\n display: none;\\n}\\n.popovermenu.open[data-v-8e58e0a5] {\\n display: block;\\n}\\nli.collection-list-item[data-v-8e58e0a5] {\\n flex-wrap: wrap;\\n height: auto;\\n cursor: pointer;\\n margin-bottom: 0 !important;\\n}\\nli.collection-list-item .collection-avatar[data-v-8e58e0a5] {\\n margin-top: 6px;\\n}\\nli.collection-list-item form[data-v-8e58e0a5],\\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\\n flex-basis: 10%;\\n flex-grow: 1;\\n display: flex;\\n}\\nli.collection-list-item .collection-item-name[data-v-8e58e0a5] {\\n padding: 12px 9px;\\n}\\nli.collection-list-item input[data-v-8e58e0a5] {\\n margin-top: 4px;\\n border-color: var(--color-border-maxcontrast);\\n}\\nli.collection-list-item input[type=text][data-v-8e58e0a5] {\\n flex-grow: 1;\\n}\\nli.collection-list-item .error[data-v-8e58e0a5],\\nli.collection-list-item .resource-list-details[data-v-8e58e0a5] {\\n flex-basis: 100%;\\n width: 100%;\\n}\\nli.collection-list-item .resource-list-details li[data-v-8e58e0a5] {\\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-8e58e0a5]:hover {\\n background-color: var(--color-background-dark);\\n}\\nli.collection-list-item .resource-list-details li a[data-v-8e58e0a5] {\\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-8e58e0a5] {\\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-8e58e0a5] {\\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-8e58e0a5] {\\n width: 24px;\\n height: 24px;\\n}\\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5] {\\n opacity: .7;\\n}\\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:hover,\\nli.collection-list-item .resource-list-details .icon-close[data-v-8e58e0a5]:focus {\\n opacity: 1;\\n}\\n.shouldshake[data-v-8e58e0a5] {\\n animation: shake-8e58e0a5 .6s 1 linear;\\n}\\n@keyframes shake-8e58e0a5 {\\n 0% {\\n transform: translate(15px);\\n }\\n 20% {\\n transform: translate(-15px);\\n }\\n 40% {\\n transform: translate(7px);\\n }\\n 60% {\\n transform: translate(-7px);\\n }\\n 80% {\\n transform: translate(3px);\\n }\\n to {\\n transform: translate(0);\\n }\\n}\\n.collection-list *[data-v-75a4370b] {\\n box-sizing: border-box;\\n}\\n.collection-list > li[data-v-75a4370b] {\\n display: flex;\\n align-items: start;\\n gap: 12px;\\n}\\n.collection-list > li > .avatar[data-v-75a4370b] {\\n margin-top: auto;\\n}\\n#collection-select-container[data-v-75a4370b] {\\n display: flex;\\n flex-direction: column;\\n}\\n.v-select span.avatar[data-v-75a4370b] {\\n display: block;\\n padding: 16px;\\n opacity: .7;\\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n.v-select span.avatar[data-v-75a4370b]:hover {\\n opacity: 1;\\n}\\np.hint[data-v-75a4370b] {\\n z-index: 1;\\n margin-top: -16px;\\n padding: 8px;\\n color: var(--color-text-maxcontrast);\\n line-height: normal;\\n}\\ndiv.avatar[data-v-75a4370b] {\\n width: 32px;\\n height: 32px;\\n margin: 30px 0 0;\\n padding: 8px;\\n background-color: var(--color-background-dark);\\n}\\n.icon-projects[data-v-75a4370b] {\\n display: block;\\n padding: 8px;\\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n.option__wrapper[data-v-75a4370b] {\\n display: flex;\\n}\\n.option__wrapper .avatar[data-v-75a4370b] {\\n display: block;\\n background-color: var(--color-background-darker) !important;\\n}\\n.option__wrapper .option__title[data-v-75a4370b] {\\n padding: 4px;\\n}\\n.fade-enter-active[data-v-75a4370b],\\n.fade-leave-active[data-v-75a4370b] {\\n transition: opacity .5s;\\n}\\n.fade-enter[data-v-75a4370b],\\n.fade-leave-to[data-v-75a4370b] {\\n opacity: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing-entry[data-v-79edc2ff]{display:flex;align-items:center;height:44px}.sharing-entry__summary[data-v-79edc2ff]{padding:8px;padding-left: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-79edc2ff]{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-79edc2ff],.sharing-entry__summary__desc small[data-v-79edc2ff]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-79edc2ff]{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,iBAAA,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\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__summary {\\n\\t\\tpadding: 8px;\\n\\t\\tpadding-left: 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\"],\"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-283ca89e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-283ca89e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;padding-left:10px;line-height:1.2em}.sharing-entry__desc p[data-v-283ca89e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-283ca89e]{margin-left:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tpadding-left: 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-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing-entry__internal .avatar-external[data-v-e40cd936]{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-e40cd936]{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\",\"sourcesContent\":[\"\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t\\tcolor: var(--color-success);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing-entry[data-v-4ec6c807]{display:flex;align-items:center;min-height:44px}.sharing-entry__summary[data-v-4ec6c807]{padding:8px;padding-left:10px;display:flex;justify-content:space-between;flex:1 0;min-width:0}.sharing-entry__desc[data-v-4ec6c807]{display:flex;flex-direction:column;line-height:1.2em}.sharing-entry__desc p[data-v-4ec6c807]{color:var(--color-text-maxcontrast)}.sharing-entry__desc__title[data-v-4ec6c807]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-4ec6c807]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-4ec6c807] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-4ec6c807]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-4ec6c807]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item~.action-item[data-v-4ec6c807],.sharing-entry .action-item~.sharing-entry__loading[data-v-4ec6c807]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-4ec6c807]{opacity:1;color:var(--color-success)}.qr-code-dialog[data-v-4ec6c807]{display:flex;width:100%;justify-content:center}.qr-code-dialog__img[data-v-4ec6c807]{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,iBAAA,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,CAKF,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAOA,+HAEC,aAAA,CAIF,sDACC,SAAA,CACA,0BAAA,CAKF,iCACC,YAAA,CACA,UAAA,CACA,sBAAA,CAEA,sCACC,UAAA,CACA,WAAA\",\"sourcesContent\":[\"\\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-left: 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&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary-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-left: 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-left: 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\"],\"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-6e5dd9f1]{display:block}.share-select[data-v-6e5dd9f1] .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-6e5dd9f1] .action-item__menutoggle .button-vue__text{font-weight:normal !important}.share-select[data-v-6e5dd9f1] .action-item__menutoggle .button-vue__icon{height:24px !important;min-height:24px !important;width:24px !important;min-width:24px !important}.share-select[data-v-6e5dd9f1] .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\",\"sourcesContent\":[\"\\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\"],\"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-1852ea78]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1852ea78]{padding:8px;padding-left:10px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-1852ea78]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-1852ea78]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-1852ea78]{margin-left:auto !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tpadding-left: 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-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv .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\",\"sourcesContent\":[\"\\n.sharing-search {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 4px;\\n\\n\\tlabel[for=\\\"sharing-search-input\\\"] {\\n\\t\\tmargin-bottom: 2px;\\n\\t}\\n\\n\\t&__input {\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 10px 0;\\n\\t}\\n}\\n\\n.vs__dropdown-menu {\\n\\t// properly style the lookup entry\\n\\tspan[lookup] {\\n\\t\\t.avatardiv {\\n\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t.avatardiv__initials-wrapper {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharingTabDetailsView[data-v-6ee48c7b]{display:flex;flex-direction:column;width:100%;margin:0 auto;position:relative;height:100%;overflow:hidden}.sharingTabDetailsView__header[data-v-6ee48c7b]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-6ee48c7b]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-6ee48c7b]{font-size:15px;padding-left:.3em}.sharingTabDetailsView__wrapper[data-v-6ee48c7b]{position:relative;overflow:scroll;flex-shrink:1;padding:4px;padding-right:12px}.sharingTabDetailsView__quick-permissions[data-v-6ee48c7b]{display:flex;justify-content:center;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-6ee48c7b]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-6ee48c7b]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-6ee48c7b]:nth-child(1){align-items:center;justify-content:center;padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-6ee48c7b] label span{display:flex;flex-direction:column}.sharingTabDetailsView__quick-permissions div span[data-v-6ee48c7b] span.checkbox-content__text.checkbox-radio-switch__text{flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-6ee48c7b] span.checkbox-content__text.checkbox-radio-switch__text .subline{display:block;flex-basis:100%}.sharingTabDetailsView__advanced-control[data-v-6ee48c7b]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-6ee48c7b]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-6ee48c7b]{width:100%;margin-bottom:.5em;text-align:left;padding-left:0}.sharingTabDetailsView__advanced section textarea[data-v-6ee48c7b],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-6ee48c7b]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-6ee48c7b]{height:80px;margin:0}.sharingTabDetailsView__advanced section span[data-v-6ee48c7b] label{padding-left:0 !important;background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-6ee48c7b]{padding-left:1.5em}.sharingTabDetailsView__delete>button[data-v-6ee48c7b]:first-child{color:#df0707}.sharingTabDetailsView__footer[data-v-6ee48c7b]{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-6ee48c7b]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-6ee48c7b]{margin-left:16px}.sharingTabDetailsView__footer .button-group button[data-v-6ee48c7b]:first-child{margin-left: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,iBAAA,CAMH,iDACC,iBAAA,CACA,eAAA,CACA,aAAA,CACA,WAAA,CACA,kBAAA,CAGD,2DACC,YAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,YAAA,CAKA,+EACC,YAAA,CACA,qBAAA,CAKF,4HACC,cAAA,CAEA,qIACC,aAAA,CACA,eAAA,CAQL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,eAAA,CACA,cAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CACA,QAAA,CAaA,qEACC,yBAAA,CACA,mCAAA,CACA,sBAAA,CAIF,2FACC,kBAAA,CAMF,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,gBAAA,CAEA,iFACC,aAAA\",\"sourcesContent\":[\"\\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-left: 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-right: 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::v-deep label {\\n\\n\\t\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\t\\t\\tflex-direction: column;\\n\\t\\t\\t\\t\\t}\\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: left;\\n\\t\\tpadding-left: 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 The following style is applied out of the component's scope\\n to remove padding from the label.checkbox-radio-switch__label,\\n which is used to group radio checkbox items. The use of ::v-deep\\n ensures that the padding is modified without being affected by\\n the component's scoping.\\n Without this achieving left alignment for the checkboxes would not\\n be possible.\\n */\\n\\t\\t\\tspan {\\n\\t\\t\\t\\t::v-deep label {\\n\\t\\t\\t\\t\\tpadding-left: 0 !important;\\n\\t\\t\\t\\t\\tbackground-color: initial !important;\\n\\t\\t\\t\\t\\tborder: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tsection.custom-permissions-group {\\n\\t\\t\\t\\tpadding-left: 1.5em;\\n\\t\\t\\t}\\n\\t\\t}\\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-left: 16px;\\n\\n\\t\\t\\t\\t&:first-child {\\n\\t\\t\\t\\t\\tmargin-left: 0;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing-entry__inherited .avatar-shared[data-v-50f9af8c]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.emptyContentWithSections[data-v-a65c443a]{margin:1rem auto}.sharingTab[data-v-a65c443a]{position:relative;height:100%}.sharingTab__content[data-v-a65c443a]{padding:0 6px}.sharingTab__additionalContent[data-v-a65c443a]{margin:44px 0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,gBAAA,CAGD,6BACC,iBAAA,CACA,WAAA,CAEA,sCACC,aAAA,CAGD,gDACC,aAAA\",\"sourcesContent\":[\"\\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\\t}\\n\\n\\t&__additionalContent {\\n\\t\\tmargin: 44px 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generateUrl = exports.generateRemoteUrl = exports.generateOcsUrl = exports.generateFilePath = void 0;\nexports.getAppRootUrl = getAppRootUrl;\nexports.getRootUrl = getRootUrl;\nexports.linkTo = exports.imagePath = void 0;\nrequire(\"core-js/modules/es.string.replace.js\");\n/**\n * Get an url with webroot to a file in an app\n *\n * @param {string} app the id of the app the file belongs to\n * @param {string} file the file path relative to the app folder\n * @return {string} URL with webroot to a file\n */\nconst linkTo = (app, file) => generateFilePath(app, '', file);\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexports.linkTo = linkTo;\nconst linkToRemoteBase = service => getRootUrl() + '/remote.php/' + service;\n\n/**\n * @brief Creates an absolute url for remote use\n * @param {string} service id\n * @return {string} the url\n */\nconst generateRemoteUrl = service => window.location.protocol + '//' + window.location.host + linkToRemoteBase(service);\n\n/**\n * Get the base path for the given OCS API service\n *\n * @param {string} url OCS API service url\n * @param {object} params parameters to be replaced into the service url\n * @param {UrlOptions} options options for the parameter replacement\n * @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true)\n * @param {Number} options.ocsVersion OCS version to use (defaults to 2)\n * @return {string} Absolute path for the OCS URL\n */\nexports.generateRemoteUrl = generateRemoteUrl;\nconst generateOcsUrl = (url, params, options) => {\n const allOptions = Object.assign({\n ocsVersion: 2\n }, options || {});\n const version = allOptions.ocsVersion === 1 ? 1 : 2;\n return window.location.protocol + '//' + window.location.host + getRootUrl() + '/ocs/v' + version + '.php' + _generateUrlPath(url, params, options);\n};\nexports.generateOcsUrl = generateOcsUrl;\n/**\n * Generate a url path, which can contain parameters\n *\n * Parameters will be URL encoded automatically\n *\n * @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token\n * @param {object} params parameters to be replaced into the address\n * @param {UrlOptions} options options for the parameter replacement\n * @return {string} Path part for the given URL\n */\nconst _generateUrlPath = (url, params, options) => {\n const allOptions = Object.assign({\n escape: true\n }, options || {});\n const _build = function (text, vars) {\n vars = vars || {};\n return text.replace(/{([^{}]*)}/g, function (a, b) {\n var r = vars[b];\n if (allOptions.escape) {\n return typeof r === 'string' || typeof r === 'number' ? encodeURIComponent(r.toString()) : encodeURIComponent(a);\n } else {\n return typeof r === 'string' || typeof r === 'number' ? r.toString() : a;\n }\n });\n };\n if (url.charAt(0) !== '/') {\n url = '/' + url;\n }\n return _build(url, params || {});\n};\n\n/**\n * Generate the url with webroot for the given relative url, which can contain parameters\n *\n * Parameters will be URL encoded automatically\n *\n * @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token\n * @param {object} params parameters to be replaced into the url\n * @param {UrlOptions} options options for the parameter replacement\n * @param {boolean} options.noRewrite True if you want to force index.php being added\n * @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true)\n * @return {string} URL with webroot for the given relative URL\n */\nconst generateUrl = (url, params, options) => {\n var _window;\n const allOptions = Object.assign({\n noRewrite: false\n }, options || {});\n if (((_window = window) === null || _window === void 0 || (_window = _window.OC) === null || _window === void 0 || (_window = _window.config) === null || _window === void 0 ? void 0 : _window.modRewriteWorking) === true && !allOptions.noRewrite) {\n return getRootUrl() + _generateUrlPath(url, params, options);\n }\n return getRootUrl() + '/index.php' + _generateUrlPath(url, params, options);\n};\n\n/**\n * Get the path with webroot to an image file\n * if no extension is given for the image, it will automatically decide\n * between .png and .svg based on what the browser supports\n *\n * @param {string} app the app id to which the image belongs\n * @param {string} file the name of the image file\n * @return {string}\n */\nexports.generateUrl = generateUrl;\nconst imagePath = (app, file) => {\n if (file.indexOf('.') === -1) {\n //if no extension is given, use svg\n return generateFilePath(app, 'img', file + '.svg');\n }\n return generateFilePath(app, 'img', file);\n};\n\n/**\n * Get the url with webroot for a file in an app\n *\n * @param {string} app the id of the app\n * @param {string} type the type of the file to link to (e.g. css,img,ajax.template)\n * @param {string} file the filename\n * @return {string} URL with webroot for a file in an app\n */\nexports.imagePath = imagePath;\nconst generateFilePath = (app, type, file) => {\n var _window2;\n const isCore = ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.OC) === null || _window2 === void 0 || (_window2 = _window2.coreApps) === null || _window2 === void 0 ? void 0 : _window2.indexOf(app)) !== -1;\n let link = getRootUrl();\n if (file.substring(file.length - 3) === 'php' && !isCore) {\n link += '/index.php/apps/' + app;\n if (file !== 'index.php') {\n link += '/';\n if (type) {\n link += encodeURI(type + '/');\n }\n link += file;\n }\n } else if (file.substring(file.length - 3) !== 'php' && !isCore) {\n link = getAppRootUrl(app);\n if (type) {\n link += '/' + type + '/';\n }\n if (link.substring(link.length - 1) !== '/') {\n link += '/';\n }\n link += file;\n } else {\n if ((app === 'settings' || app === 'core' || app === 'search') && type === 'ajax') {\n link += '/index.php/';\n } else {\n link += '/';\n }\n if (!isCore) {\n link += 'apps/';\n }\n if (app !== '') {\n app += '/';\n link += app;\n }\n if (type) {\n link += type + '/';\n }\n link += file;\n }\n return link;\n};\n\n/**\n * Return the web root path where this Nextcloud instance\n * is accessible, with a leading slash.\n * For example \"/nextcloud\".\n *\n * @return {string} web root path\n */\nexports.generateFilePath = generateFilePath;\nfunction getRootUrl() {\n let webroot = window._oc_webroot;\n if (typeof webroot === 'undefined') {\n webroot = location.pathname;\n const pos = webroot.indexOf('/index.php/');\n if (pos !== -1) {\n webroot = webroot.substr(0, pos);\n } else {\n webroot = webroot.substr(0, webroot.lastIndexOf('/'));\n }\n }\n return webroot;\n}\n\n/**\n * Return the web root path for a given app\n * @param {string} app The ID of the app\n */\nfunction getAppRootUrl(app) {\n var _window$_oc_appswebro, _webroots$app;\n const webroots = (_window$_oc_appswebro = window._oc_appswebroots) !== null && _window$_oc_appswebro !== void 0 ? _window$_oc_appswebro : {};\n return (_webroots$app = webroots[app]) !== null && _webroots$app !== void 0 ? _webroots$app : '';\n}\n//# sourceMappingURL=index.js.map","/**!\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\"},[_c('ul',[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName}})]},proxy:true}],null,false,3197855346)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e()],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},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(),_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}}),_vm._v(\" \"),(_vm.projectsEnabled && _vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":`${_vm.fileInfo.id}`,\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showSharingDetailsView),expression:\"!showSharingDetailsView\"}],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.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()],2)\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-Au1Gr_G6.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../css-loader/dist/cjs.js!./index-Au1Gr_G6.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-Au1Gr_G6.css';\nimport w from \"@nextcloud/vue/dist/Components/NcAvatar.js\";\nimport O from \"@nextcloud/vue/dist/Components/NcSelect.js\";\nimport T from \"lodash-es/debounce.js\";\nimport S from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport k from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport A, { set as f } from \"vue\";\nimport $ from \"@nextcloud/axios\";\nimport { generateOcsUrl as d } from \"@nextcloud/router\";\n/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass D {\n constructor() {\n this.http = $;\n }\n listCollection(e) {\n return this.http.get(d(\"collaboration/resources/collections/{collectionId}\", { collectionId: e }));\n }\n renameCollection(e, o) {\n return this.http.put(d(\"collaboration/resources/collections/{collectionId}\", { collectionId: e }), {\n collectionName: o\n }).then((n) => n.data.ocs.data);\n }\n getCollectionsByResource(e, o) {\n return this.http.get(d(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType: e, resourceId: o })).then((n) => n.data.ocs.data);\n }\n createCollection(e, o, n) {\n return this.http.post(d(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType: e, resourceId: o }), {\n name: n\n }).then((r) => r.data.ocs.data);\n }\n addResource(e, o, n) {\n return n = \"\" + n, this.http.post(d(\"collaboration/resources/collections/{collectionId}\", { collectionId: e }), {\n resourceType: o,\n resourceId: n\n }).then((r) => r.data.ocs.data);\n }\n removeResource(e, o, n) {\n return this.http.delete(d(\"collaboration/resources/collections/{collectionId}\", { collectionId: e }), { params: { resourceType: o, resourceId: n } }).then((r) => r.data.ocs.data);\n }\n search(e) {\n return this.http.get(d(\"collaboration/resources/collections/search/{query}\", { query: e })).then((o) => o.data.ocs.data);\n }\n}\nconst p = new D();\n/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst u = A.observable({\n collections: []\n}), h = {\n addCollections(s) {\n f(u, \"collections\", s);\n },\n addCollection(s) {\n u.collections.push(s);\n },\n removeCollection(s) {\n f(u, \"collections\", u.collections.filter((e) => e.id !== s));\n },\n updateCollection(s) {\n const e = u.collections.findIndex((o) => o.id === s.id);\n e !== -1 ? f(u.collections, e, s) : u.collections.push(s);\n }\n}, l = {\n fetchCollectionsByResource({ resourceType: s, resourceId: e }) {\n return p.getCollectionsByResource(s, e).then((o) => (h.addCollections(o), o));\n },\n createCollection({ baseResourceType: s, baseResourceId: e, resourceType: o, resourceId: n, name: r }) {\n return p.createCollection(s, e, r).then((m) => {\n h.addCollection(m), l.addResourceToCollection({\n collectionId: m.id,\n resourceType: o,\n resourceId: n\n });\n });\n },\n renameCollection({ collectionId: s, name: e }) {\n return p.renameCollection(s, e).then((o) => (h.updateCollection(o), o));\n },\n addResourceToCollection({ collectionId: s, resourceType: e, resourceId: o }) {\n return p.addResource(s, e, o).then((n) => (h.updateCollection(n), n));\n },\n removeResource({ collectionId: s, resourceType: e, resourceId: o }) {\n return p.removeResource(s, e, o).then((n) => {\n n.resources.length > 0 ? h.updateCollection(n) : h.removeCollection(n);\n });\n },\n search(s) {\n return p.search(s);\n }\n};\nfunction R(s, e, o, n, r, m, _, I) {\n var i = typeof s == \"function\" ? s.options : s;\n e && (i.render = e, i.staticRenderFns = o, i._compiled = !0), n && (i.functional = !0), m && (i._scopeId = \"data-v-\" + m);\n var a;\n if (_ ? (a = function(c) {\n c = c || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, !c && typeof __VUE_SSR_CONTEXT__ < \"u\" && (c = __VUE_SSR_CONTEXT__), r && r.call(this, c), c && c._registeredComponents && c._registeredComponents.add(_);\n }, i._ssrRegister = a) : r && (a = I ? function() {\n r.call(\n this,\n (i.functional ? this.parent : this).$root.$options.shadowRoot\n );\n } : r), a)\n if (i.functional) {\n i._injectStyles = a;\n var b = i.render;\n i.render = function(N, v) {\n return a.call(v), b(N, v);\n };\n } else {\n var C = i.beforeCreate;\n i.beforeCreate = C ? [].concat(C, a) : [a];\n }\n return {\n exports: s,\n options: i\n };\n}\nconst B = {\n name: \"CollectionListItem\",\n components: {\n NcAvatar: w,\n NcActions: S,\n NcActionButton: k\n },\n props: {\n collection: {\n type: Object,\n default: null\n }\n },\n data() {\n return {\n detailsOpen: !1,\n newName: null,\n error: {}\n };\n },\n computed: {\n getIcon() {\n return (s) => [s.iconClass];\n },\n typeClass() {\n return (s) => \"resource-type-\" + s.type;\n },\n limitedResources() {\n return (s) => s.resources ? s.resources.slice(0, 2) : [];\n },\n iconUrl() {\n return (s) => s.mimetype ? OC.MimeType.getIconUrl(s.mimetype) : s.iconUrl ? s.iconUrl : \"\";\n }\n },\n methods: {\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = !0;\n },\n hideDetails() {\n this.detailsOpen = !1;\n },\n removeResource(s, e) {\n l.removeResource({\n collectionId: s.id,\n resourceType: e.type,\n resourceId: e.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 l.renameCollection({\n collectionId: this.collection.id,\n name: this.newName\n }).then((s) => {\n this.newName = null;\n }).catch((s) => {\n this.$set(this.error, \"rename\", t(\"core\", \"Failed to rename the project\")), console.error(s), setTimeout(() => {\n f(this.error, \"rename\", null);\n }, 3e3);\n });\n }\n }\n};\nvar E = function() {\n var e = this, o = e._self._c;\n return o(\"li\", { staticClass: \"collection-list-item\" }, [o(\"NcAvatar\", { staticClass: \"collection-avatar\", attrs: { \"display-name\": e.collection.name, \"allow-placeholder\": \"\" } }), e.newName === null ? o(\"span\", { staticClass: \"collection-item-name\", attrs: { title: \"\" }, on: { click: e.showDetails } }, [e._v(e._s(e.collection.name))]) : o(\"form\", { class: { shouldshake: e.error.rename }, on: { submit: function(n) {\n return n.preventDefault(), e.renameCollection.apply(null, arguments);\n } } }, [o(\"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(n) {\n n.target.composing || (e.newName = n.target.value);\n } } }), o(\"input\", { staticClass: \"icon-confirm\", attrs: { type: \"submit\", value: \"\" } })]), !e.detailsOpen && e.newName === null ? o(\"div\", { staticClass: \"linked-icons\" }, e._l(e.limitedResources(e.collection), function(n) {\n return o(\"a\", { key: n.type + \"|\" + n.id, class: e.typeClass(n), attrs: { title: n.name, href: n.link } }, [o(\"img\", { attrs: { src: e.iconUrl(n) } })]);\n }), 0) : e._e(), e.newName === null ? o(\"span\", { staticClass: \"sharingOptionsGroup\" }, [o(\"NcActions\", [o(\"NcActionButton\", { attrs: { icon: \"icon-info\" }, on: { click: function(n) {\n return n.preventDefault(), e.toggleDetails.apply(null, arguments);\n } } }, [e._v(\" \" + e._s(e.detailsOpen ? e.t(\"core\", \"Hide details\") : e.t(\"core\", \"Show details\")) + \" \")]), o(\"NcActionButton\", { attrs: { icon: \"icon-rename\" }, on: { click: function(n) {\n return n.preventDefault(), e.openRename.apply(null, arguments);\n } } }, [e._v(\" \" + e._s(e.t(\"core\", \"Rename project\")) + \" \")])], 1)], 1) : e._e(), o(\"transition\", { attrs: { name: \"fade\" } }, [e.error.rename ? o(\"div\", { staticClass: \"error\" }, [e._v(\" \" + e._s(e.error.rename) + \" \")]) : e._e()]), o(\"transition\", { attrs: { name: \"fade\" } }, [e.detailsOpen ? o(\"ul\", { staticClass: \"resource-list-details\" }, e._l(e.collection.resources, function(n) {\n return o(\"li\", { key: n.type + \"|\" + n.id, class: e.typeClass(n) }, [o(\"a\", { attrs: { href: n.link } }, [o(\"img\", { attrs: { src: e.iconUrl(n) } }), o(\"span\", { staticClass: \"resource-name\" }, [e._v(e._s(n.name || \"\"))])]), o(\"span\", { staticClass: \"icon-close\", on: { click: function(r) {\n return e.removeResource(e.collection, n);\n } } })]);\n }), 0) : e._e()])], 1);\n}, L = [], U = /* @__PURE__ */ R(\n B,\n E,\n L,\n !1,\n null,\n \"8e58e0a5\",\n null,\n null\n);\nconst j = U.exports, y = 0, g = 1, F = T(\n function(s, e) {\n s !== \"\" && (e(!0), l.search(s).then((o) => {\n this.searchCollections = o;\n }).catch((o) => {\n console.error(\"Failed to search for collections\", o);\n }).finally(() => {\n e(!1);\n }));\n },\n 500,\n {}\n), P = {\n name: \"CollectionList\",\n components: {\n CollectionListItem: j,\n NcAvatar: w,\n NcSelect: O\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: !0\n }\n },\n data() {\n return {\n selectIsOpen: !1,\n generatingCodes: !1,\n codes: void 0,\n value: null,\n model: {},\n searchCollections: [],\n error: null,\n state: u,\n isSelectOpen: !1\n };\n },\n computed: {\n collections() {\n return this.state.collections.filter((s) => typeof s.resources.find((e) => e && e.id === \"\" + this.id && e.type === this.type) < \"u\");\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 s = [];\n window.OCP.Collaboration.getTypes().sort().forEach((e) => {\n s.push({\n method: y,\n type: e,\n title: window.OCP.Collaboration.getLabel(e),\n class: window.OCP.Collaboration.getIcon(e),\n action: () => window.OCP.Collaboration.trigger(e)\n });\n });\n for (const e in this.searchCollections)\n this.collections.findIndex((o) => o.id === this.searchCollections[e].id) === -1 && s.push({\n method: g,\n title: this.searchCollections[e].name,\n collectionId: this.searchCollections[e].id\n });\n return s;\n }\n },\n watch: {\n type() {\n this.isActive && l.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n },\n id() {\n this.isActive && l.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n },\n isActive(s) {\n s && l.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n }\n },\n mounted() {\n l.fetchCollectionsByResource({\n resourceType: this.type,\n resourceId: this.id\n });\n },\n methods: {\n select(s, e) {\n s.method === y && s.action().then((o) => {\n l.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: s.type,\n resourceId: o,\n name: this.name\n }).catch((n) => {\n this.setError(t(\"core\", \"Failed to create a project\"), n);\n });\n }).catch((o) => {\n console.error(\"No resource selected\", o);\n }), s.method === g && l.addResourceToCollection({\n collectionId: s.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((o) => {\n this.setError(t(\"core\", \"Failed to add the item to the project\"), o);\n });\n },\n search(s, e) {\n F.bind(this)(s, e);\n },\n showSelect() {\n this.selectIsOpen = !0, this.$refs.select.$el.focus();\n },\n hideSelect() {\n this.selectIsOpen = !1;\n },\n isVueComponent(s) {\n return s._isVue;\n },\n setError(s, e) {\n console.error(s, e), this.error = s, setTimeout(() => {\n this.error = null;\n }, 5e3);\n }\n }\n};\nvar V = function() {\n var e = this, o = e._self._c;\n return e.collections && e.type && e.id ? o(\"ul\", { staticClass: \"collection-list\", attrs: { id: \"collection-list\" } }, [o(\"li\", { on: { click: e.showSelect } }, [e._m(0), o(\"div\", { attrs: { id: \"collection-select-container\" } }, [o(\"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(n) {\n e.isSelectOpen = !1;\n }, open: function(n) {\n e.isSelectOpen = !0;\n }, \"option:selected\": e.select, search: e.search }, scopedSlots: e._u([{ key: \"selected-option\", fn: function(n) {\n return [o(\"span\", { staticClass: \"option__desc\" }, [o(\"span\", { staticClass: \"option__title\" }, [e._v(e._s(n.title))])])];\n } }, { key: \"option\", fn: function(n) {\n return [o(\"span\", { staticClass: \"option__wrapper\" }, [n.class ? o(\"span\", { staticClass: \"avatar\", class: n.class }) : n.method !== 2 ? o(\"NcAvatar\", { attrs: { \"allow-placeholder\": \"\", \"display-name\": n.title } }) : e._e(), o(\"span\", { staticClass: \"option__title\" }, [e._v(e._s(n.title))])], 1)];\n } }], null, !1, 2397208459), model: { value: e.value, callback: function(n) {\n e.value = n;\n }, expression: \"value\" } }, [o(\"p\", { staticClass: \"hint\" }, [e._v(\" \" + e._s(e.t(\"core\", \"Connect items to a project to make them easier to find\")) + \" \")])])], 1)]), o(\"transition\", { attrs: { name: \"fade\" } }, [e.error ? o(\"li\", { staticClass: \"error\" }, [e._v(\" \" + e._s(e.error) + \" \")]) : e._e()]), e._l(e.collections, function(n) {\n return o(\"CollectionListItem\", { key: n.id, attrs: { collection: n } });\n })], 2) : e._e();\n}, x = [function() {\n var s = this, e = s._self._c;\n return e(\"div\", { staticClass: \"avatar\" }, [e(\"span\", { staticClass: \"icon-projects\" })]);\n}], H = /* @__PURE__ */ R(\n P,\n V,\n x,\n !1,\n null,\n \"75a4370b\",\n null,\n null\n);\nconst Q = H.exports;\nexport {\n Q as CollectionList,\n j as CollectionListItem\n};\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getCapabilities } from '@nextcloud/capabilities'\n\nexport default class Config {\n\n\tconstructor() {\n\t\tthis._capabilities = getCapabilities()\n\t}\n\n\t/**\n\t * Get default share permissions, if any\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\t get defaultPermissions() {\n\t\treturn this._capabilities.files_sharing?.default_permissions\n\t}\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn this._capabilities.files_sharing?.public.upload\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDate() {\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default internal expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDate() {\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default remote expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new remote shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\t// eslint-disable-next-line camelcase\n\t\treturn this._capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& this._capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (this._capabilities.files_sharing.sharebymail === undefined) ? false : this._capabilities.files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (this._capabilities.files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\treturn this._capabilities.password_policy ? this._capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\tif (ocsData.attributes && typeof ocsData.attributes === 'string') {\n\t\t\ttry {\n\t\t\t\tocsData.attributes = JSON.parse(ocsData.attributes)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Could not parse share attributes returned by server', ocsData.attributes)\n\t\t\t}\n\t\t}\n\t\tocsData.attributes = ocsData.attributes ?? []\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Get the share attributes\n\t *\n\t * @return {Array}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget attributes() {\n\t\treturn this._share.attributes\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date\n\t *\n\t * @return {string} date with YYYY-MM-DD format\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date\n\t *\n\t * @param {string} date the share expiration date with YYYY-MM-DD format\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label ?? ''\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password expiration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t/**\n\t * Does this share have download permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDownloadPermission() {\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\treturn attr.enabled\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tset hasDownloadPermission(enabled) {\n\t\tthis.setAttribute('permissions', 'download', !!enabled)\n\t}\n\n\tsetAttribute(scope, key, enabled) {\n\t\tconst attrUpdate = {\n\t\t\tscope,\n\t\t\tkey,\n\t\t\tenabled,\n\t\t}\n\n\t\t// try and replace existing\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n\t\t\t\tthis._share.attributes.splice(i, 1, attrUpdate)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis._share.attributes.push(attrUpdate)\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","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 }","<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 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\"","import { render, staticRenderFns } from \"./CheckBold.vue?vue&type=template&id=d4239c4a\"\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 }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ClipboardFlow.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ClipboardFlow.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 clipboard-flow-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,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M15,19L11,15H14V8H16V15H19L15,19M10,16H8V9H5L9,5L13,9H10V16\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ClipboardFlowIcon\",\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 \"./ClipboardFlow.vue?vue&type=template&id=692acad9\"\nimport script from \"./ClipboardFlow.vue?vue&type=script&lang=js\"\nexport * from \"./ClipboardFlow.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 clipboard-flow-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,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M15,19L11,15H14V8H16V15H19L15,19M10,16H8V9H5L9,5L13,9H10V16\"}},[(_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!./SharingEntrySimple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<NcActions 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/dist/Components/NcActions.js'\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-left: 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-left: auto !important;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=1852ea78&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=1852ea78&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=1852ea78&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=1852ea78&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 \"1852ea78\",\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 }","<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/dist/Components/NcActionButton.js'\n\nimport CheckIcon from 'vue-material-design-icons/CheckBold.vue'\nimport ClipboardIcon from 'vue-material-design-icons/ClipboardFlow.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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=e40cd936&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=e40cd936&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=e40cd936&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=e40cd936&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 \"e40cd936\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharing-search\"},[_c('label',{attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Search for share recipients')))]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",staticClass:\"sharing-search__input\",attrs:{\"input-id\":\"sharing-search-input\",\"disabled\":!_vm.canReshare,\"loading\":_vm.loading,\"filterable\":false,\"placeholder\":_vm.inputPlaceholder,\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options},on:{\"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.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService.js'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\n\nconst config = new Config()\n// note: some chars removed on purpose to make them human friendly when read out\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\tshowSuccess(t('files_sharing', 'Password created successfully'))\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t\tshowError(t('files_sharing', 'Error generating password from password policy'))\n\t\t}\n\t}\n\n\tconst array = new Uint8Array(10)\n\tconst ratio = passwordSet.length / 255\n\tself.crypto.getRandomValues(array)\n\tlet password = ''\n\tfor (let i = 0; i < array.length; i++) {\n\t\tpassword += passwordSet.charAt(array[i] * ratio)\n\t}\n\treturn password\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share.js'\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 shareautomatically 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 data.note\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","import Share from '../models/Share.js'\nimport Config from '../services/ConfigService.js'\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\tenabled: 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\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","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"sharing-search\">\n\t\t<label for=\"sharing-search-input\">{{ t('files_sharing', 'Search for share recipients') }}</label>\n\t\t<NcSelect ref=\"select\"\n\t\t\tv-model=\"value\"\n\t\t\tinput-id=\"sharing-search-input\"\n\t\t\tclass=\"sharing-search__input\"\n\t\t\t:disabled=\"!canReshare\"\n\t\t\t:loading=\"loading\"\n\t\t\t:filterable=\"false\"\n\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:user-select=\"true\"\n\t\t\t:options=\"options\"\n\t\t\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 : t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport Config from '../services/ConfigService.js'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tmixins: [ShareTypes, 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},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t\tvalue: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\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\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH,\n\t\t\t]\n\n\t\t\tif (getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurrences of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differentiate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Guest'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-group',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Group'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Email'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-teams',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Team'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-room',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Talk conversation'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-deck',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Deck board'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-sciencemesh',\n\t\t\t\t\ticonTitle: t('files_sharing', '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 === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubname = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubname = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\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 !== this.SHARE_TYPES.SHARE_TYPE_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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=19527463&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=19527463&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=19527463\"\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=19527463&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon,\"aria-label\":_vm.toggleTooltip,\"title\":_vm.toggleTooltip},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}})],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share},on:{\"remove:share\":_vm.removeShare}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { davGetClient, davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files';\nexport const client = davGetClient();\nexport const fetchNode = async (node) => {\n const propfindPayload = davGetDefaultPropfind();\n const result = await client.stat(`${davRootPath}${node.path}`, {\n details: true,\n data: propfindPayload,\n });\n return davResultToNode(result.data);\n};\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n\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","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { fetchNode } from '../services/WebdavClient.ts'\n\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share.js'\nimport SharesRequests from './ShareRequests.js'\nimport ShareTypes from './ShareTypes.js'\nimport Config from '../services/ConfigService.js'\nimport logger from '../services/logger.ts'\n\nimport {\n\tBUNDLED_PERMISSIONS,\n} from '../lib/SharePermissionsToolBox.js'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { },\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tnode: null,\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\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 [this.SHARE_TYPES.SHARE_TYPE_LINK, this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(shareType)\n\t\t},\n\t\tisRemoteShare() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP || this.share.type === this.SHARE_TYPES.SHARE_TYPE_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 return 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)\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: debounce(function(date) {\n\t\t\tthis.share.expireDate = this.formatDateToString(new Date(date))\n\t\t}, 500),\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t},\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 ((typeof this.share[name]) === 'object') {\n\t\t\t\t\t\tproperties[name] = JSON.stringify(this.share[name])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties[name] = this.share[name].toString()\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\t\t\t\t\t\tshowSuccess(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\treturn\n\t\t\t}\n\n\t\t\t// This share does not exists on the server yet\n\t\t\tconsole.debug('Updated local share', this.share)\n\t\t},\n\n\t\t/**\n\t\t * @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 expire 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 - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<NcAvatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t</template>\n\t\t<NcActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</NcActionText>\n\t\t<NcActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</NcActionLink>\n\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</NcActionButton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\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-left: 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-left: auto;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=283ca89e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=283ca89e&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=283ca89e&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=283ca89e&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 \"283ca89e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('NcActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\"\n\t\t\t:aria-expanded=\"showInheritedShares\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<NcActionButton :icon=\"showInheritedSharesIcon\"\n\t\t\t\t:aria-label=\"toggleTooltip\"\n\t\t\t\t:title=\"toggleTooltip\"\n\t\t\t\t@click.prevent.stop=\"toggleInheritedShares\" />\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share.js'\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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=50f9af8c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=50f9af8c&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=50f9af8c&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=50f9af8c&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 \"50f9af8c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"index\":_vm.shares.length > 1 ? index + 1 : null,\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare(...arguments)}],\"add:share\":function($event){return _vm.addShare(...arguments)},\"remove:share\":_vm.removeShare,\"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=44530562\"\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=0bf2dcbd\"\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=cc96c380\"\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=33754429\"\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=0e338773\"\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 }","<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=0610cec6\"\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=30219a41\"\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=437aa472\"\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 }","<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\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 DropdownIcon from 'vue-material-design-icons/TriangleSmallDown.vue'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\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, ShareTypes],\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 drop')\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 [this.SHARE_TYPES.SHARE_TYPE_LINK, this.SHARE_TYPES.SHARE_TYPE_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\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=6e5dd9f1&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=6e5dd9f1&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=6e5dd9f1&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=6e5dd9f1&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 \"6e5dd9f1\",\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\",\"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 }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share.js'\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=0f0e27d0\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{ 'sharing-entry--share': share }\"\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<!-- clipboard -->\n\t\t\t<NcActions v-if=\"share && !isEmailShareType && share.token\" ref=\"copyButton\" class=\"sharing-entry__copy\">\n\t\t\t\t<NcActionButton\t:title=\"copyLinkTooltip\"\n\t\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t\t@click.prevent=\"copyLink\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<CheckIcon v-if=\"copied && copySuccess\"\n\t\t\t\t\t\t\t:size=\"20\"\n\t\t\t\t\t\t\tclass=\"icon-checkmark-color\" />\n\t\t\t\t\t\t<ClipboardIcon v-else :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t</div>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && (pendingPassword || pendingEnforcedPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"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\">\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<!-- expiration date -->\n\t\t\t<NcActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:label=\"t('files_sharing', 'Expiration date (enforced)')\"\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@input=\"onExpirationChange /* let's not submit when picked, the user might want to still edit or copy the password */\">\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\">\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 }, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</NcActionLink>\n\n\t\t\t\t<NcActionButton v-if=\"!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 } from '@nextcloud/router'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\nimport VueQrcode from '@chenfengyuan/vue-qrcode'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\nimport NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcDialog from '@nextcloud/vue/dist/Components/NcDialog.js'\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/ClipboardFlow.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'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\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},\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\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\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.index > 1) {\n\t\t\t\treturn t('files_sharing', 'Share link ({index})', { index: this.index })\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enableLinkPasswordByDefault && this.share && !this.share.id\n\t\t},\n\t\tpendingEnforcedPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\tsharePolicyHasRequiredProperties() {\n\t\t\treturn this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced\n\t\t},\n\n\t\trequiredPropertiesMissing() {\n\t\t\t// Ensure share exist and the share policy has required properties\n\t\t\tif (!this.sharePolicyHasRequiredProperties) {\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 window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for actions button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tactionsTooltip() {\n\t\t\treturn t('files_sharing', 'Actions for \"{title}\"', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for copy button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy public link of \"{title}\" to clipboard', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\tconst filterValidAction = (action) => (action.shareType.includes(ShareTypes.SHARE_TYPE_LINK) || action.shareType.includes(ShareTypes.SHARE_TYPE_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.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\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: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.formatDateToString(this.config.defaultExpirationDate)\n\t\t\t}\n\n\t\t\tthis.logger.debug('Missing required properties?', this.requiredPropertiesMissing)\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.sharePolicyHasRequiredProperties && this.requiredPropertiesMissing) {\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 mandated properties (password)...')\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()\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: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t}\n\n\t\t\t\tconsole.debug('Creating link share with options', options)\n\t\t\t\tconst newShare = await this.createShare(options)\n\n\t\t\t\tthis.open = false\n\t\t\t\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 * 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-left: 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&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary-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-left: 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-left: 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=4ec6c807&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=4ec6c807&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=4ec6c807&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=4ec6c807&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 \"4ec6c807\",\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 - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:index=\"shares.length > 1 ? index + 1 : null\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\"\n\t\t\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\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharingEntryLink from '../components/SharingEntryLink.vue'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes, 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 === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","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(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionButton',{attrs:{\"title\":_vm.copyLinkTooltip,\"aria-label\":_vm.copyLinkTooltip},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),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingEnforcedPassword || _vm.pendingExpirationDate))?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.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\":_vm.onNewLinkShare},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('LockIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2056568168)}):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"label\":_vm.t('files_sharing', 'Expiration date (enforced)'),\"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:{\"input\":function($event){_vm.onExpirationChange /* let's not submit when picked, the user might want to still edit or copy the password */}},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.apply(null, arguments)}},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 },index){return _c('NcActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(!_vm.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=291d4fee\"\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\"},_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 }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon dots-horizontal-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=\"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"DotsHorizontalIcon\",\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!./DotsHorizontal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./DotsHorizontal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DotsHorizontal.vue?vue&type=template&id=a4d4ab3e\"\nimport script from \"./DotsHorizontal.vue?vue&type=script&lang=js\"\nexport * from \"./DotsHorizontal.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 dots-horizontal-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\":\"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\"}},[(_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!./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 - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<NcAvatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\n\t\t<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<NcButton class=\"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 NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\n\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\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 === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\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-left: 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","\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=79edc2ff&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=79edc2ff&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=79edc2ff&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=79edc2ff&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 \"79edc2ff\",\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 - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@open-sharing-details=\"openSharingDetails(share)\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport SharingEntry from '../components/SharingEntry.vue'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes, 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\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n}\n</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.SHARE_TYPES.SHARE_TYPE_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(\" \"),_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}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=445a39ed\"\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.SHARE_TYPES.SHARE_TYPE_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 drop'))+\"\\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',{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.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,\"required\":_vm.isPasswordEnforced,\"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\":true,\"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\")]):_vm._e(),_vm._v(\" \"),(!_vm.isPublicShare)?_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'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_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('label',{attrs:{\"for\":\"share-note-textarea\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a note for the share recipient'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('textarea',{attrs:{\"id\":\"share-note-textarea\"},domProps:{\"value\":_vm.share.note},on:{\"input\":function($event){_vm.share.note = $event.target.value}}})]:_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.config.isResharingAllowed && _vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_LINK)?_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\":function($event){return _vm.$emit('close-sharing-details')}}},[_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=33494a74\"\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=ec4501a4\"\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=c22eb9fe\"\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=59b2bccc\"\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=363a0196\"\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\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 !== SHARE_TYPES.SHARE_TYPE_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 drop') }}\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\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<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\"\n\t\t\t\t\t\t\t:required=\"isPasswordEnforced\"\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\t:hide-label=\"true\"\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-if=\"!isPublicShare\"\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') }}\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<label for=\"share-note-textarea\">\n\t\t\t\t\t\t\t{{ t('files_sharing', 'Enter a note for the share recipient') }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<textarea id=\"share-note-textarea\" :value=\"share.note\" @input=\"share.note = $event.target.value\" />\n\t\t\t\t\t</template>\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=\"config.isResharingAllowed && share.type !== SHARE_TYPES.SHARE_TYPE_LINK\"\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=\"$emit('close-sharing-details')\">\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 { Type as ShareType } from '@nextcloud/sharing'\n\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcInputField from '@nextcloud/vue/dist/Components/NcInputField.js'\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcDateTimePickerNative from '@nextcloud/vue/dist/Components/NcDateTimePickerNative.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\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'\n\nimport ExternalShareAction from '../components/ExternalShareAction.vue'\n\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\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\tNcInputField,\n\t\tNcPasswordField,\n\t\tNcDateTimePickerNative,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcLoadingIcon,\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},\n\tmixins: [ShareTypes, 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\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 this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn t('files_sharing', 'Share with {userName}', { userName: this.share.shareWithDisplayName })\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t return t('files_sharing', 'Share with email {email}', { email: this.share.shareWith })\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_LINK:\n\t\t\t\treturn t('files_sharing', 'Share link')\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn t('files_sharing', 'Share with group')\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn t('files_sharing', 'Share in conversation')\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_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 this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\t\treturn t('files_sharing', 'Share with remote group')\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\treturn t('files_sharing', 'Share with guest')\n\t\t\tdefault: {\n\t\t\t if (this.share.id) {\n\t\t\t\t\t // Share already exists\n\t\t\t\t\t return t('files_sharing', 'Update share')\n\t\t\t\t } else {\n\t\t\t\t\t return 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\t\t/**\n\t\t * Can the sharee download files or only view them ?\n\t\t */\n\t\tcanDownload: {\n\t\t\tget() {\n\t\t\t\treturn this.share.attributes.find(attr => attr.key === 'download')?.enabled || false\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\t// Find the 'download' attribute and update its value\n\t\t\t\tconst downloadAttr = this.share.attributes.find(attr => attr.key === 'download')\n\t\t\t\tif (downloadAttr) {\n\t\t\t\t\tdownloadAttr.enabled = checked\n\t\t\t\t}\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 drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t\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()\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 === this.SHARE_TYPES.SHARE_TYPE_USER\n\t\t},\n\t\tisGroupShare() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP\n\t\t},\n\t\tisNewShare() {\n\t\t\treturn !this.share.id\n\t\t},\n\t\tallowsFileDrop() {\n\t\t\tif (this.isFolder && this.config.isPublicUploadEnabled) {\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || this.share.type === this.SHARE_TYPES.SHARE_TYPE_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\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 === this.SHARE_TYPES.SHARE_TYPE_LINK\n\t\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_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 === this.SHARE_TYPES.SHARE_TYPE_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.enabled === 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, 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 can't be empty\")\n\t\t\t}\n\t\t\treturn undefined\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.SHARE_TYPE_LINK) || action.shareType.includes(ShareType.SHARE_TYPE_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\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())\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},\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.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.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\tthis.creating = false\n\t\t\t\tthis.share = share\n\t\t\t\tthis.$emit('add:share', this.share)\n\t\t\t} else {\n\t\t\t\tthis.$emit('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\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 this.SHARE_TYPES.SHARE_TYPE_LINK:\n\t\t\t\treturn LinkIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\treturn UserIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn GroupIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn EmailIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn CircleIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn ShareIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn ShareIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_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-left: 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-right: 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::v-deep label {\n\n\t\t\t\t\tspan {\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t}\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: left;\n\t\tpadding-left: 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 The following style is applied out of the component's scope\n to remove padding from the label.checkbox-radio-switch__label,\n which is used to group radio checkbox items. The use of ::v-deep\n ensures that the padding is modified without being affected by\n the component's scoping.\n Without this achieving left alignment for the checkboxes would not\n be possible.\n */\n\t\t\tspan {\n\t\t\t\t::v-deep label {\n\t\t\t\t\tpadding-left: 0 !important;\n\t\t\t\t\tbackground-color: initial !important;\n\t\t\t\t\tborder: none !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsection.custom-permissions-group {\n\t\t\t\tpadding-left: 1.5em;\n\t\t\t}\n\t\t}\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-left: 16px;\n\n\t\t\t\t&:first-child {\n\t\t\t\t\tmargin-left: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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 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=6ee48c7b&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=style&index=0&id=6ee48c7b&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=6ee48c7b&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=6ee48c7b&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 \"6ee48c7b\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"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>\n\t\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" 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<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\"\n\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"projectsEnabled && fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\t\t</div>\n\n\t\t<!-- additional entries, use it with cautious -->\n\t\t<div v-for=\"(section, index) in sections\"\n\t\t\tv-show=\"!showSharingDetailsView\"\n\t\t\t:ref=\"'section-' + index\"\n\t\t\t:key=\"index\"\n\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t</div>\n\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 { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Config from '../services/ConfigService.js'\nimport { shareWithTitle } from '../utils/SharedWithMe.js'\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\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\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t\tSharingDetailsTab,\n\t},\n\n\tmixins: [ShareTypes],\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\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: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false },\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => { }) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\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 === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t\t|| share.type === this.SHARE_TYPES.SHARE_TYPE_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 === this.SHARE_TYPES.SHARE_TYPE_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\t}\n\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false },\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false },\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=a65c443a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=a65c443a&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=a65c443a&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=a65c443a&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 \"a65c443a\",\n null\n \n)\n\nexport default component.exports"],"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___","params","assign","ocsVersion","window","location","protocol","host","getRootUrl","_generateUrlPath","allOptions","escape","charAt","vars","webroot","_oc_webroot","pathname","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","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","global","freeSelf","Date","now","reWhitespace","reTrimStart","objectProto","nativeObjectToString","symToStringTag","isOwn","unmasked","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","isBinary","nativeMax","nativeMin","http","listCollection","collectionId","renameCollection","collectionName","ocs","getCollectionsByResource","resourceType","resourceId","createCollection","post","addResource","removeResource","delete","observable","collections","h","addCollections","addCollection","removeCollection","filter","updateCollection","findIndex","fetchCollectionsByResource","baseResourceType","baseResourceId","addResourceToCollection","resources","R","I","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","N","C","beforeCreate","components","NcAvatar","NcActions","NcActionButton","collection","detailsOpen","newName","computed","getIcon","iconClass","typeClass","limitedResources","iconUrl","mimetype","OC","MimeType","getIconUrl","toggleDetails","showDetails","hideDetails","openRename","catch","$set","setTimeout","_self","_c","staticClass","attrs","title","on","click","_v","_s","class","shouldshake","rename","submit","preventDefault","directives","rawName","expression","autocomplete","autocapitalize","domProps","input","composing","_e","_l","href","link","icon","F","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","searchCollections","finally","CollectionListItem","NcSelect","isActive","Boolean","selectIsOpen","generatingCodes","codes","model","state","isSelectOpen","find","placeholder","OCP","Collaboration","getTypes","method","getLabel","action","trigger","select","setError","showSelect","$refs","focus","hideSelect","isVueComponent","_isVue","_m","ref","label","close","scopedSlots","_u","Config","_capabilities","getCapabilities","defaultPermissions","_this$_capabilities$f","files_sharing","default_permissions","isPublicUploadEnabled","_this$_capabilities$f2","public","upload","isShareWithLinkAllowed","getElementById","federatedShareDocLink","appConfig","core","federatedCloudShareDoc","defaultExpirationDate","isDefaultExpireDateEnabled","setDate","getDate","defaultExpireDate","defaultInternalExpirationDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","defaultRemoteExpirationDateString","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","defaultExpireDateEnabled","isDefaultInternalExpireDateEnforced","defaultInternalExpireDateEnforced","isDefaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","defaultRemoteExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isMailShareAllowed","_this$_capabilities","_this$_capabilities2","sharebymail","enabled","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","password","enforced","shouldAlwaysShowUnique","_this$_capabilities$f3","sharee","always_show_unique","allowGroupSharing","maxAutocompleteResults","config","minSearchStringLength","passwordPolicy","password_policy","Share","ocsData","_ocsData$attributes","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","_this$_share$label","mailSend","hideDownload","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","attr","scope","setAttribute","attrUpdate","splice","canEdit","can_edit","canDelete","can_delete","viaFileid","via_fileid","viaPath","via_path","storageId","storage_id","storage","itemSource","item_source","status","SHARE_TYPES","ShareTypes","emits","fillColor","_vm","_b","$event","$emit","$attrs","required","subtitle","isUnique","ariaExpanded","ariaExpandedValue","_t","SharingEntrySimple","CheckIcon","ClipboardIcon","fileInfo","copied","copySuccess","internalLink","generateUrl","copyLinkTooltip","internalLinkSubtitle","copyLink","navigator","clipboard","writeText","showSuccess","shareEntrySimple","actionsComponent","proxy","async","api","request","axios","info","showError","crypto","getRandomValues","passwordSet","shareUrl","generateOcsUrl","createShare","_ref","shareType","publicUpload","_request$data","share","emit","_error$response","errorMessage","response","meta","message","Notification","showTemporary","deleteShare","_request$data2","_error$response2","updateShare","properties","_request$data3","_error$response3","openSharingDetails","shareRequestObject","handlerInput","suggestions","externalShareRequestObject","mapShareRequestToShareObject","shareDetails","openShareDetailsForCustomSettings","setCustomPermissions","_shareRequestObject$p","is_no_user","isNoUser","user","displayName","mixins","ShareRequests","ShareDetails","shares","linkShares","reshare","canReshare","loading","recommendations","ShareSearch","OCA","Sharing","externalResults","results","inputPlaceholder","allowRemoteSharing","isValidQuery","noResultText","getRecommendations","onSelected","option","asyncFind","debounceGetSuggestions","getSuggestions","query_lookup_default","SHARE_TYPE_USER","SHARE_TYPE_GROUP","SHARE_TYPE_REMOTE","SHARE_TYPE_REMOTE_GROUP","SHARE_TYPE_CIRCLE","SHARE_TYPE_ROOM","SHARE_TYPE_GUEST","SHARE_TYPE_DECK","SHARE_TYPE_SCIENCEMESH","SHARE_TYPE_EMAIL","format","perPage","exact","rawExactSuggestions","elem","rawSuggestions","exactSuggestions","filterOutExistingShares","formatForMultiselect","lookupEntry","lookupEnabled","condition","allSuggestions","nameCounts","desc","debounce","rawRecommendations","getCurrentUser","uid","sharesObj","shareTypeToIcon","iconTitle","subname","_result$shareWithDisp","server","_result$shareWithDesc","shareWithDescription","uuid","clear-search-on-blur","$$v","client","davGetClient","getLoggerBuilder","setApp","detectUser","build","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","ALL_FILE","SharesRequests","_this$share","errors","saving","updateQueue","PQueue","concurrency","reactiveState","hasNote","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isFolder","isPublicShare","_this$share$shareType","SHARE_TYPE_LINK","isRemoteShare","isShareOwner","isExpiryDateEnforced","hasCustomPermissions","maxExpirationDateEnforced","getNode","propfindPayload","davGetDefaultPropfind","stat","davRootPath","details","davResultToNode","fetchNode","logger","checkShare","expirationDate","formatDateToString","UTC","getFullYear","getMonth","toISOString","onExpirationChange","onExpirationDisable","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","DropdownIcon","selectedOption","ariaLabel","canViewText","canEditText","fileDropText","customPermissionsText","preSelectedOption","IconEyeOutline","IconPencil","supportsFileDrop","IconFileUpload","IconTune","_this$share$type","dropDownPermissionValue","created","selectOption","optionLabel","quickShareActions","menuButton","is","_g","handlers","ExternalShareAction","NcActionCheckbox","NcActionInput","NcActionSeparator","NcDialog","VueQrcode","Tune","IconCalendarBlank","IconQr","ErrorIcon","LockIcon","CloseIcon","PlusIcon","SharingEntryQuickShareSelect","shareCreationComplete","pending","ExternalLegacyLinkActions","ExternalLinkActions","ExternalShareActions","showQRCode","isEmailShareType","isPasswordProtected","Vue","GeneratePassword","expirationTime","moment","diff","fromNow","isTalkEnabled","appswebroots","spreed","isPasswordProtectedByTalkAvailable","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","hasUnsavedPassword","pendingPassword","pendingEnforcedPassword","pendingExpirationDate","sharePolicyHasRequiredProperties","requiredPropertiesMissing","isPasswordMissing","isExpireDateMissing","newPassword","shareLink","actionsTooltip","externalLegacyLinkActions","actions","externalLinkActions","advanced","isPasswordPolicyEnabled","canChangeHideDownload","shareAttributes","some","shareAttribute","onNewLinkShare","shareDefaults","component","pushNewLinkShare","update","newShare","_data$response","copyButton","onPasswordChange","onPasswordDisable","onPasswordSubmit","onPasswordProtectedByTalkChange","onMenuClose","onCancel","SharingEntryLink","minLength","canLinkShare","hasLinkShares","hasShares","addShare","unshift","awaitForShare","$nextTick","$children","NcButton","DotsHorizontalIcon","tooltip","hasStatus","SharingEntry","NcInputField","NcPasswordField","NcDateTimePickerNative","NcCheckboxRadioSwitch","NcLoadingIcon","CircleIcon","EditIcon","LinkIcon","GroupIcon","ShareIcon","UserIcon","UploadIcon","ViewIcon","MenuDownIcon","MenuUpIcon","shareRequestValue","writeNoteToRecipientIsChecked","sharingPermission","revertSharingPermission","passwordError","advancedSectionAccordionExpanded","bundledPermissions","isFirstComponentLoad","creating","userName","email","updateAtomicPermissions","isEditChecked","canCreate","isCreateChecked","isDeleteChecked","isReshareChecked","canDownload","_this$share$attribute","downloadAttr","hasRead","isReadChecked","hasExpirationDate","isValidShareAttribute","defaultExpiryDate","isSetDownloadButtonVisible","isPasswordEnforced","isGroupShare","isUserShare","isNewShare","allowsFileDrop","hasFileDropPermissions","shareButtonText","canSetEdit","sharePermissions","canSetCreate","canSetDelete","canSetReshare","canSetDownload","canRemoveReadPermission","customPermissionsList","translatedPermissions","permission","hasPermissions","initialPermissionSet","permissionsToCheck","toLocaleLowerCase","getLanguage","advancedControlExpandedValue","errorPasswordLabel","ShareType","isChecked","beforeMount","initializePermissions","initializeAttributes","_this$$refs$quickPerm","quickPermissions","expandCustomPermissions","toggleCustomPermissions","selectedPermission","isCustomPermissions","toDateString","handleShareType","handleDefaultPermissions","handleCustomPermissions","saveShare","_this$$refs$externalL","permissionsAndAttributes","sharePermissionsSet","incomingShare","allSettled","_action$$children$at","_action$$children$at2","_action$$children$at3","at","onSave","getShareTypeIcon","EmailIcon","_vm$share$expireDate","refInFor","CollectionList","SharingEntryInternal","SharingInherited","SharingInput","SharingLinkList","SharingList","SharingDetailsTab","deleteEvent","expirationInterval","sharedWithMe","sections","ShareTabSections","getSections","projectsEnabled","loadState","showSharingDetailsView","shareDetailsData","returnFocusElement","isSharedWithMe","getShares","fetchShares","reshares","fetchSharedWithMe","shared_with_me","all","processSharedWithMe","processShares","_error$response$data","clearInterval","updateExpirationSubtitle","unix","relativetime","Util","relativeModifiedDate","_ref2","circle","conversation","shareWithTitle","setInterval","shareOwnerId","currentUser","shareOwner","shareList","listComponent","linkShareList","toggleShareDetailsView","eventData","activeElement","classList","className","startsWith","_document$activeEleme","menuId","_this$returnFocusElem","emptyContentWithSections","section"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/files_sharing-files_sharing_tab.js b/dist/files_sharing-files_sharing_tab.js index d52f26eff34..e4a35224aa8 100644 --- a/dist/files_sharing-files_sharing_tab.js +++ b/dist/files_sharing-files_sharing_tab.js @@ -1,3 +1,3 @@ /*! For license information please see files_sharing-files_sharing_tab.js.LICENSE.txt */ -(()=>{"use strict";var e,t,r,i={69196:(e,t,r)=>{var i=r(85471),n=r(53334),a=r(21777),o=r(96763);var s=r(96763);var l=r(96763);r.nc=btoa((0,a.do)()),window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new class{constructor(){var e,t,r,i;e=this,r=void 0,(t="symbol"==typeof(i=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t="_state"))?i:String(i))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.results=[],o.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):(o.error("Invalid search result provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new class{constructor(){var e,t,r,i;e=this,r=void 0,(t="symbol"==typeof(i=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t="_state"))?i:String(i))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.actions=[],s.debug("OCA.Sharing.ExternalLinkActions initialized")}get state(){return this._state}registerAction(e){return OC.debug&&s.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):(s.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new class{constructor(){var e,t,r,i;e=this,r=void 0,(t="symbol"==typeof(i=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t="_state"))?i:String(i))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.actions=[],l.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?(l.error("An action with the same id ".concat(e.id," already exists"),e),!1):(this._state.actions.push(e),!0):(l.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ShareTabSections:new class{constructor(){var e,t,r,i;e=this,r=void 0,(t="symbol"==typeof(i=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t="_sections"))?i:String(i))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=n.Tl,i.Ay.prototype.n=n.zw;let c=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,n.Tl)("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 a=(await Promise.all([r.e(4208),r.e(2773)]).then(r.bind(r,22555))).default,o=i.Ay.extend(a);c&&c.$destroy(),c=new o({parent:n}),await c.update(t),c.$mount(e)},update(e){c.update(e)},destroy(){c&&(c.$destroy(),c=null)}}))}))}},n={};function a(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,a),r.loaded=!0,r.exports}a.m=i,e=[],a.O=(t,r,i,n)=>{if(!r){var o=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,l=0;l<r.length;l++)(!1&n||o>=n)&&Object.keys(a.O).every((e=>a.O[e](r[l])))?r.splice(l--,1):(s=!1,n<o&&(o=n));if(s){e.splice(u--,1);var c=i();void 0!==c&&(t=c)}}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]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>e+"-"+e+".js?v="+{2773:"883944effbd72c3fcc3c",4254:"5c2324570f66dff0c8a1",9480:"dfe0a962e5665010f53b"}[e],a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="nextcloud:",a.l=(e,i,n,o)=>{if(t[e])t[e].push(i);else{var s,l;if(void 0!==n)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==r+n){s=d;break}}s||(l=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,a.nc&&s.setAttribute("nonce",a.nc),s.setAttribute("data-webpack",r+n),s.src=e),t[e]=[i];var p=(r,i)=>{s.onerror=s.onload=null,clearTimeout(f);var n=t[e];if(delete t[e],s.parentNode&&s.parentNode.removeChild(s),n&&n.forEach((e=>e(i))),r)return r(i)},f=setTimeout(p.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=p.bind(null,s.onerror),s.onload=p.bind(null,s.onload),l&&document.head.appendChild(s)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.j=4958,(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.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(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=document.baseURI||self.location.href;var e={4958:0};a.f.j=(t,r)=>{var i=a.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 o=a.p+a.u(t),s=new Error;a.l(o,(r=>{if(a.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var n=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+n+": "+o+")",s.name="ChunkLoadError",s.type=n,s.request=o,i[1](s)}}),"chunk-"+t,t)}},a.O.j=t=>0===e[t];var t=(t,r)=>{var i,n,o=r[0],s=r[1],l=r[2],c=0;if(o.some((t=>0!==e[t]))){for(i in s)a.o(s,i)&&(a.m[i]=s[i]);if(l)var u=l(a)}for(t&&t(r);c<o.length;c++)n=o[c],a.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return a.O(u)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),a.nc=void 0;var o=a.O(void 0,[4208],(()=>a(69196)));o=a.O(o)})(); -//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=6c5df19ba8b496d187c5
\ No newline at end of file +(()=>{"use strict";var e,t,r,i={69196:(e,t,r)=>{var i=r(85471),n=r(53334),a=r(21777),o=r(96763);var s=r(96763);var c=r(96763);r.nc=btoa((0,a.do)()),window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new class{constructor(){var e,t,r,i;e=this,r=void 0,(t="symbol"==typeof(i=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t="_state"))?i:String(i))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.results=[],o.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):(o.error("Invalid search result provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new class{constructor(){var e,t,r,i;e=this,r=void 0,(t="symbol"==typeof(i=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t="_state"))?i:String(i))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.actions=[],s.debug("OCA.Sharing.ExternalLinkActions initialized")}get state(){return this._state}registerAction(e){return OC.debug&&s.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):(s.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new class{constructor(){var e,t,r,i;e=this,r=void 0,(t="symbol"==typeof(i=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t="_state"))?i:String(i))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,this._state={},this._state.actions=[],c.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?(c.error("An action with the same id ".concat(e.id," already exists"),e),!1):(this._state.actions.push(e),!0):(c.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ShareTabSections:new class{constructor(){var e,t,r,i;e=this,r=void 0,(t="symbol"==typeof(i=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t="_sections"))?i:String(i))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=n.Tl,i.Ay.prototype.n=n.zw;let l=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,n.Tl)("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 a=(await Promise.all([r.e(4208),r.e(1356)]).then(r.bind(r,86642))).default,o=i.Ay.extend(a);l&&l.$destroy(),l=new o({parent:n}),await l.update(t),l.$mount(e)},update(e){l.update(e)},destroy(){l&&(l.$destroy(),l=null)}}))}))}},n={};function a(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,a),r.loaded=!0,r.exports}a.m=i,e=[],a.O=(t,r,i,n)=>{if(!r){var o=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||o>=n)&&Object.keys(a.O).every((e=>a.O[e](r[c])))?r.splice(c--,1):(s=!1,n<o&&(o=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]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>e+"-"+e+".js?v="+{1356:"0872d426bc0607fd82d7",4254:"5c2324570f66dff0c8a1",9480:"dfe0a962e5665010f53b"}[e],a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="nextcloud:",a.l=(e,i,n,o)=>{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,a.nc&&s.setAttribute("nonce",a.nc),s.setAttribute("data-webpack",r+n),s.src=e),t[e]=[i];var p=(r,i)=>{s.onerror=s.onload=null,clearTimeout(f);var n=t[e];if(delete t[e],s.parentNode&&s.parentNode.removeChild(s),n&&n.forEach((e=>e(i))),r)return r(i)},f=setTimeout(p.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=p.bind(null,s.onerror),s.onload=p.bind(null,s.onload),c&&document.head.appendChild(s)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.j=4958,(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.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(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=document.baseURI||self.location.href;var e={4958:0};a.f.j=(t,r)=>{var i=a.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 o=a.p+a.u(t),s=new Error;a.l(o,(r=>{if(a.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var n=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+n+": "+o+")",s.name="ChunkLoadError",s.type=n,s.request=o,i[1](s)}}),"chunk-"+t,t)}},a.O.j=t=>0===e[t];var t=(t,r)=>{var i,n,o=r[0],s=r[1],c=r[2],l=0;if(o.some((t=>0!==e[t]))){for(i in s)a.o(s,i)&&(a.m[i]=s[i]);if(c)var u=c(a)}for(t&&t(r);l<o.length;l++)n=o[l],a.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return a.O(u)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),a.nc=void 0;var o=a.O(void 0,[4208],(()=>a(69196)));o=a.O(o)})(); +//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=11880a90300b3c2e91a3
\ 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 6b362d5a486..d10082a0d94 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=6c5df19ba8b496d187c5","mappings":";uBAAIA,ECAAC,EACAC,mGCmCJC,EAAAA,GAAoBC,MAAKC,EAAAA,EAAAA,OAGpBC,OAAOC,IAAIC,UACfF,OAAOC,IAAIC,QAAU,CAAC,GAEvBC,OAAOC,OAAOJ,OAAOC,IAAIC,QAAS,CAAEG,YAAa,ICpBlC,MAIdC,WAAAA,iBAAc,kYAEbC,KAAKC,OAAS,CAAC,EAGfD,KAAKC,OAAOC,QAAU,GACtBC,EAAQC,MAAM,sCACf,CASA,SAAIC,GACH,OAAOL,KAAKC,MACb,CAgBAK,YAAAA,CAAaC,GACZ,MAAkC,KAA9BA,EAAOC,YAAYC,QACO,mBAAnBF,EAAOG,SACjBV,KAAKC,OAAOC,QAAQS,KAAKJ,IAClB,IAERJ,EAAQS,MAAM,iCAAkCL,IACzC,EACR,KDzBDX,OAAOC,OAAOJ,OAAOC,IAAIC,QAAS,CAAEkB,oBAAqB,IErB1C,MAIdd,WAAAA,iBAAc,kYAEbC,KAAKC,OAAS,CAAC,EAGfD,KAAKC,OAAOa,QAAU,GACtBX,EAAQC,MAAM,8CACf,CASA,SAAIC,GACH,OAAOL,KAAKC,MACb,CASAc,cAAAA,CAAeC,GAGd,OAFAC,GAAGb,OAASD,EAAQe,KAAK,8FAEH,iBAAXF,GAAuBA,EAAOG,MAAQH,EAAOI,MAAQJ,EAAOK,KACtErB,KAAKC,OAAOa,QAAQH,KAAKK,IAClB,IAERb,EAAQS,MAAM,0BAA2BI,IAClC,EACR,KFlBDpB,OAAOC,OAAOJ,OAAOC,IAAIC,QAAS,CAAE2B,qBAAsB,IGtB3C,MAIdvB,WAAAA,iBAAc,kYAEbC,KAAKC,OAAS,CAAC,EAGfD,KAAKC,OAAOa,QAAU,GACtBX,EAAQC,MAAM,+CACf,CASA,SAAIC,GACH,OAAOL,KAAKC,MACb,CAkBAc,cAAAA,CAAeC,GAEd,MAAsB,iBAAXA,GACc,iBAAdA,EAAOO,IACS,mBAAhBP,EAAOQ,MACbC,MAAMC,QAAQV,EAAOW,YACK,iBAApBX,EAAOY,UACbhC,OAAOiC,OAAOb,EAAOY,UAAUE,OAAMpB,GAA8B,mBAAZA,IAMvCV,KAAKC,OAAOa,QAAQiB,WAAUC,GAASA,EAAMT,KAAOP,EAAOO,MAAO,GAEtFpB,EAAQS,MAAM,8BAADqB,OAA+BjB,EAAOO,GAAE,mBAAmBP,IACjE,IAGRhB,KAAKC,OAAOa,QAAQH,KAAKK,IAClB,IAZNb,EAAQS,MAAM,0BAA2BI,IAClC,EAYT,KHtCDpB,OAAOC,OAAOJ,OAAOC,IAAIC,QAAS,CAAEuC,iBAAkB,IIvBvC,MAIdnC,WAAAA,iBAAc,qYACbC,KAAKmC,UAAY,EAClB,CAKAC,eAAAA,CAAgBC,GACfrC,KAAKmC,UAAUxB,KAAK0B,EACrB,CAEAC,WAAAA,GACC,OAAOtC,KAAKmC,SACb,KJQDI,EAAAA,GAAIC,UAAUC,EAAIA,EAAAA,GAClBF,EAAAA,GAAIC,UAAUE,EAAIA,EAAAA,GAGlB,IAAIC,EAAc,KAElBlD,OAAOmD,iBAAiB,oBAAoB,WACvClD,IAAImD,OAASnD,IAAImD,MAAMC,SAC1BpD,IAAImD,MAAMC,QAAQC,YAAY,IAAIrD,IAAImD,MAAMC,QAAQE,IAAI,CACvDzB,GAAI,UACJH,MAAMqB,EAAAA,EAAAA,IAAE,gBAAiB,WACzBQ,2iBAEA,WAAMC,CAAMC,EAAIC,EAAUC,GACzB,MAAMC,SAAoB,0DAAkCC,QACtDC,EAAOjB,EAAAA,GAAIkB,OAAOH,GAEpBX,GACHA,EAAYe,WAEbf,EAAc,IAAIa,EAAK,CAEtBG,OAAQN,UAGHV,EAAYiB,OAAOR,GACzBT,EAAYkB,OAAOV,EACpB,EAEAS,MAAAA,CAAOR,GACNT,EAAYiB,OAAOR,EACpB,EAEAU,OAAAA,GACKnB,IACHA,EAAYe,WACZf,EAAc,KAEhB,IAGH,MKvFIoB,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CACjD1C,GAAI0C,EACJK,QAAQ,EACRF,QAAS,CAAC,GAUX,OANAG,EAAoBN,GAAUO,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAG3EK,EAAOC,QAAS,EAGTD,EAAOD,OACf,CAGAJ,EAAoBS,EAAIF,EP5BpBpF,EAAW,GACf6E,EAAoBU,EAAI,CAACnE,EAAQoE,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAI7F,EAAS8F,OAAQD,IAAK,CACrCL,EAAWxF,EAAS6F,GAAG,GACvBJ,EAAKzF,EAAS6F,GAAG,GACjBH,EAAW1F,EAAS6F,GAAG,GAE3B,IAJA,IAGIE,GAAY,EACPC,EAAI,EAAGA,EAAIR,EAASM,OAAQE,MACpB,EAAXN,GAAsBC,GAAgBD,IAAajF,OAAOwF,KAAKpB,EAAoBU,GAAG5C,OAAOuD,GAASrB,EAAoBU,EAAEW,GAAKV,EAASQ,MAC9IR,EAASW,OAAOH,IAAK,IAErBD,GAAY,EACTL,EAAWC,IAAcA,EAAeD,IAG7C,GAAGK,EAAW,CACb/F,EAASmG,OAAON,IAAK,GACrB,IAAIO,EAAIX,SACET,IAANoB,IAAiBhF,EAASgF,EAC/B,CACD,CACA,OAAOhF,CArBP,CAJCsE,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI7F,EAAS8F,OAAQD,EAAI,GAAK7F,EAAS6F,EAAI,GAAG,GAAKH,EAAUG,IAAK7F,EAAS6F,GAAK7F,EAAS6F,EAAI,GACrG7F,EAAS6F,GAAK,CAACL,EAAUC,EAAIC,EAuBjB,EQ3Bdb,EAAoBtB,EAAK2B,IACxB,IAAImB,EAASnB,GAAUA,EAAOoB,WAC7B,IAAOpB,EAAiB,QACxB,IAAM,EAEP,OADAL,EAAoB0B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CAAM,ECLdxB,EAAoB0B,EAAI,CAACtB,EAASwB,KACjC,IAAI,IAAIP,KAAOO,EACX5B,EAAoB6B,EAAED,EAAYP,KAASrB,EAAoB6B,EAAEzB,EAASiB,IAC5EzF,OAAOkG,eAAe1B,EAASiB,EAAK,CAAEU,YAAY,EAAMC,IAAKJ,EAAWP,IAE1E,ECNDrB,EAAoBiC,EAAI,CAAC,EAGzBjC,EAAoBkC,EAAKC,GACjBC,QAAQC,IAAIzG,OAAOwF,KAAKpB,EAAoBiC,GAAGK,QAAO,CAACC,EAAUlB,KACvErB,EAAoBiC,EAAEZ,GAAKc,EAASI,GAC7BA,IACL,KCNJvC,EAAoBwC,EAAKL,GAEZA,EAAU,IAAMA,EAAU,SAAW,CAAC,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,wBAAwBA,GCH9InC,EAAoByC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAO1G,MAAQ,IAAI2G,SAAS,cAAb,EAChB,CAAE,MAAOT,GACR,GAAsB,iBAAXzG,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBuE,EAAoB6B,EAAI,CAACe,EAAKC,IAAUjH,OAAO4C,UAAUsE,eAAetC,KAAKoC,EAAKC,GZA9EzH,EAAa,CAAC,EACdC,EAAoB,aAExB2E,EAAoB+C,EAAI,CAAC1F,EAAK2F,EAAM3B,EAAKc,KACxC,GAAG/G,EAAWiC,GAAQjC,EAAWiC,GAAKV,KAAKqG,OAA3C,CACA,IAAIC,EAAQC,EACZ,QAAW/C,IAARkB,EAEF,IADA,IAAI8B,EAAUC,SAASC,qBAAqB,UACpCrC,EAAI,EAAGA,EAAImC,EAAQlC,OAAQD,IAAK,CACvC,IAAIsC,EAAIH,EAAQnC,GAChB,GAAGsC,EAAEC,aAAa,QAAUlG,GAAOiG,EAAEC,aAAa,iBAAmBlI,EAAoBgG,EAAK,CAAE4B,EAASK,EAAG,KAAO,CACpH,CAEGL,IACHC,GAAa,GACbD,EAASG,SAASI,cAAc,WAEzBC,QAAU,QACjBR,EAAOS,QAAU,IACb1D,EAAoB2D,IACvBV,EAAOW,aAAa,QAAS5D,EAAoB2D,IAElDV,EAAOW,aAAa,eAAgBvI,EAAoBgG,GAExD4B,EAAOY,IAAMxG,GAEdjC,EAAWiC,GAAO,CAAC2F,GACnB,IAAIc,EAAmB,CAACC,EAAMC,KAE7Bf,EAAOgB,QAAUhB,EAAOiB,OAAS,KACjCC,aAAaT,GACb,IAAIU,EAAUhJ,EAAWiC,GAIzB,UAHOjC,EAAWiC,GAClB4F,EAAOoB,YAAcpB,EAAOoB,WAAWC,YAAYrB,GACnDmB,GAAWA,EAAQG,SAAS3D,GAAQA,EAAGoD,KACpCD,EAAM,OAAOA,EAAKC,EAAM,EAExBN,EAAUc,WAAWV,EAAiBW,KAAK,UAAMtE,EAAW,CAAEuE,KAAM,UAAWC,OAAQ1B,IAAW,MACtGA,EAAOgB,QAAUH,EAAiBW,KAAK,KAAMxB,EAAOgB,SACpDhB,EAAOiB,OAASJ,EAAiBW,KAAK,KAAMxB,EAAOiB,QACnDhB,GAAcE,SAASwB,KAAKC,YAAY5B,EApCkB,CAoCX,EavChDjD,EAAoBuB,EAAKnB,IACH,oBAAX0E,QAA0BA,OAAOC,aAC1CnJ,OAAOkG,eAAe1B,EAAS0E,OAAOC,YAAa,CAAEC,MAAO,WAE7DpJ,OAAOkG,eAAe1B,EAAS,aAAc,CAAE4E,OAAO,GAAO,ECL9DhF,EAAoBiF,IAAO5E,IAC1BA,EAAO6E,MAAQ,GACV7E,EAAO8E,WAAU9E,EAAO8E,SAAW,IACjC9E,GCHRL,EAAoBmB,EAAI,WCAxB,IAAIiE,EACApF,EAAoByC,EAAE4C,gBAAeD,EAAYpF,EAAoByC,EAAE6C,SAAW,IACtF,IAAIlC,EAAWpD,EAAoByC,EAAEW,SACrC,IAAKgC,GAAahC,IACbA,EAASmC,eAAkE,WAAjDnC,EAASmC,cAAcC,QAAQC,gBAC5DL,EAAYhC,EAASmC,cAAc1B,MAC/BuB,GAAW,CACf,IAAIjC,EAAUC,EAASC,qBAAqB,UAC5C,GAAGF,EAAQlC,OAEV,IADA,IAAID,EAAImC,EAAQlC,OAAS,EAClBD,GAAK,KAAOoE,IAAc,aAAaM,KAAKN,KAAaA,EAAYjC,EAAQnC,KAAK6C,GAE3F,CAID,IAAKuB,EAAW,MAAM,IAAIO,MAAM,yDAChCP,EAAYA,EAAUQ,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KACpF5F,EAAoB6F,EAAIT,YClBxBpF,EAAoB8F,EAAI1C,SAAS2C,SAAWC,KAAKV,SAASW,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAGPlG,EAAoBiC,EAAEd,EAAI,CAACgB,EAASI,KAElC,IAAI4D,EAAqBnG,EAAoB6B,EAAEqE,EAAiB/D,GAAW+D,EAAgB/D,QAAWhC,EACtG,GAA0B,IAAvBgG,EAGF,GAAGA,EACF5D,EAAS5F,KAAKwJ,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAIhE,SAAQ,CAACiE,EAASC,IAAYH,EAAqBD,EAAgB/D,GAAW,CAACkE,EAASC,KAC1G/D,EAAS5F,KAAKwJ,EAAmB,GAAKC,GAGtC,IAAI/I,EAAM2C,EAAoB6F,EAAI7F,EAAoBwC,EAAEL,GAEpDvF,EAAQ,IAAI+I,MAgBhB3F,EAAoB+C,EAAE1F,GAfF2G,IACnB,GAAGhE,EAAoB6B,EAAEqE,EAAiB/D,KAEf,KAD1BgE,EAAqBD,EAAgB/D,MACR+D,EAAgB/D,QAAWhC,GACrDgG,GAAoB,CACtB,IAAII,EAAYvC,IAAyB,SAAfA,EAAMU,KAAkB,UAAYV,EAAMU,MAChE8B,EAAUxC,GAASA,EAAMW,QAAUX,EAAMW,OAAOd,IACpDjH,EAAM6J,QAAU,iBAAmBtE,EAAU,cAAgBoE,EAAY,KAAOC,EAAU,IAC1F5J,EAAMQ,KAAO,iBACbR,EAAM8H,KAAO6B,EACb3J,EAAM8J,QAAUF,EAChBL,EAAmB,GAAGvJ,EACvB,CACD,GAEwC,SAAWuF,EAASA,EAE/D,CACD,EAWFnC,EAAoBU,EAAES,EAAKgB,GAA0C,IAA7B+D,EAAgB/D,GAGxD,IAAIwE,EAAuB,CAACC,EAA4BpJ,KACvD,IAKIyC,EAAUkC,EALVxB,EAAWnD,EAAK,GAChBqJ,EAAcrJ,EAAK,GACnBsJ,EAAUtJ,EAAK,GAGIwD,EAAI,EAC3B,GAAGL,EAASoG,MAAMxJ,GAAgC,IAAxB2I,EAAgB3I,KAAa,CACtD,IAAI0C,KAAY4G,EACZ7G,EAAoB6B,EAAEgF,EAAa5G,KACrCD,EAAoBS,EAAER,GAAY4G,EAAY5G,IAGhD,GAAG6G,EAAS,IAAIvK,EAASuK,EAAQ9G,EAClC,CAEA,IADG4G,GAA4BA,EAA2BpJ,GACrDwD,EAAIL,EAASM,OAAQD,IACzBmB,EAAUxB,EAASK,GAChBhB,EAAoB6B,EAAEqE,EAAiB/D,IAAY+D,EAAgB/D,IACrE+D,EAAgB/D,GAAS,KAE1B+D,EAAgB/D,GAAW,EAE5B,OAAOnC,EAAoBU,EAAEnE,EAAO,EAGjCyK,EAAqBhB,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FgB,EAAmBzC,QAAQoC,EAAqBlC,KAAK,KAAM,IAC3DuC,EAAmBrK,KAAOgK,EAAqBlC,KAAK,KAAMuC,EAAmBrK,KAAK8H,KAAKuC,QCvFvFhH,EAAoB2D,QAAKxD,ECGzB,IAAI8G,EAAsBjH,EAAoBU,OAAEP,EAAW,CAAC,OAAO,IAAOH,EAAoB,SAC9FiH,EAAsBjH,EAAoBU,EAAEuG","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 * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport { getRequestToken } from '@nextcloud/auth'\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__ = btoa(getRequestToken())\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 * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\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 * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * @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.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","// 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=\" + {\"2773\":\"883944effbd72c3fcc3c\",\"4254\":\"5c2324570f66dff0c8a1\",\"9480\":\"dfe0a962e5665010f53b\"}[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__","btoa","getRequestToken","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","concat","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=11880a90300b3c2e91a3","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 * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport { getRequestToken } from '@nextcloud/auth'\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__ = btoa(getRequestToken())\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 * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\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 * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * @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.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","// 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=\" + {\"1356\":\"0872d426bc0607fd82d7\",\"4254\":\"5c2324570f66dff0c8a1\",\"9480\":\"dfe0a962e5665010f53b\"}[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__","btoa","getRequestToken","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","concat","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/l10n/ro.js b/lib/l10n/ro.js index 0b5283df7ea..8ab53097242 100644 --- a/lib/l10n/ro.js +++ b/lib/l10n/ro.js @@ -92,6 +92,7 @@ OC.L10N.register( "Administration settings" : "Setări de administrare", "Settings" : "Setări", "Log out" : "Ieșire", + "Accounts" : "Conturi", "Email" : "E-mail", "View %s on the fediverse" : "Vedeți %s pe fediverse", "Phone" : "Telefon", diff --git a/lib/l10n/ro.json b/lib/l10n/ro.json index 59cd4bb8864..d3163a26c3b 100644 --- a/lib/l10n/ro.json +++ b/lib/l10n/ro.json @@ -90,6 +90,7 @@ "Administration settings" : "Setări de administrare", "Settings" : "Setări", "Log out" : "Ieșire", + "Accounts" : "Conturi", "Email" : "E-mail", "View %s on the fediverse" : "Vedeți %s pe fediverse", "Phone" : "Telefon", diff --git a/lib/private/Files/ObjectStore/ObjectStoreStorage.php b/lib/private/Files/ObjectStore/ObjectStoreStorage.php index 9624c0db6d4..5a2aaa4dc50 100644 --- a/lib/private/Files/ObjectStore/ObjectStoreStorage.php +++ b/lib/private/Files/ObjectStore/ObjectStoreStorage.php @@ -60,6 +60,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil private bool $handleCopiesAsOwned; protected bool $validateWrites = true; + private bool $preserveCacheItemsOnDelete = false; /** * @param array $params @@ -196,7 +197,9 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil } } - $this->getCache()->remove($entry->getPath()); + if (!$this->preserveCacheItemsOnDelete) { + $this->getCache()->remove($entry->getPath()); + } return true; } @@ -231,7 +234,9 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil } //removing from cache is ok as it does not exist in the objectstore anyway } - $this->getCache()->remove($entry->getPath()); + if (!$this->preserveCacheItemsOnDelete) { + $this->getCache()->remove($entry->getPath()); + } return true; } @@ -628,31 +633,71 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil if (!$sourceCacheEntry) { $sourceCacheEntry = $sourceCache->get($sourceInternalPath); } - if ($sourceCacheEntry->getMimeType() === FileInfo::MIMETYPE_FOLDER) { - $this->mkdir($targetInternalPath); - foreach ($sourceCache->getFolderContents($sourceInternalPath) as $child) { - $this->moveFromStorage($sourceStorage, $child->getPath(), $targetInternalPath . '/' . $child->getName()); - } + if (!$sourceCacheEntry) { + return false; + } + + $this->copyObjects($sourceStorage, $sourceCache, $sourceCacheEntry); + if ($sourceStorage->instanceOfStorage(ObjectStoreStorage::class)) { + /** @var ObjectStoreStorage $sourceStorage */ + $sourceStorage->setPreserveCacheOnDelete(true); + } + if ($sourceCacheEntry->getMimeType() === ICacheEntry::DIRECTORY_MIMETYPE) { $sourceStorage->rmdir($sourceInternalPath); } else { - $sourceStream = $sourceStorage->fopen($sourceInternalPath, 'r'); - if (!$sourceStream) { - return false; - } - // move the cache entry before the contents so that we have the correct fileid/urn for the target - $this->getCache()->moveFromCache($sourceCache, $sourceInternalPath, $targetInternalPath); - try { - $this->writeStream($targetInternalPath, $sourceStream, $sourceCacheEntry->getSize()); - } catch (\Exception $e) { - // restore the cache entry - $sourceCache->moveFromCache($this->getCache(), $targetInternalPath, $sourceInternalPath); - throw $e; - } $sourceStorage->unlink($sourceInternalPath); } + if ($sourceStorage->instanceOfStorage(ObjectStoreStorage::class)) { + /** @var ObjectStoreStorage $sourceStorage */ + $sourceStorage->setPreserveCacheOnDelete(false); + } + $this->getCache()->moveFromCache($sourceCache, $sourceInternalPath, $targetInternalPath); + return true; } + /** + * Copy the object(s) of a file or folder into this storage, without touching the cache + */ + private function copyObjects(IStorage $sourceStorage, ICache $sourceCache, ICacheEntry $sourceCacheEntry) { + $copiedFiles = []; + try { + foreach ($this->getAllChildObjects($sourceCache, $sourceCacheEntry) as $file) { + $sourceStream = $sourceStorage->fopen($file->getPath(), 'r'); + if (!$sourceStream) { + throw new \Exception("Failed to open source file {$file->getPath()} ({$file->getId()})"); + } + $this->objectStore->writeObject($this->getURN($file->getId()), $sourceStream, $file->getMimeType()); + if (is_resource($sourceStream)) { + fclose($sourceStream); + } + $copiedFiles[] = $file->getId(); + } + } catch (\Exception $e) { + foreach ($copiedFiles as $fileId) { + try { + $this->objectStore->deleteObject($this->getURN($fileId)); + } catch (\Exception $e) { + // ignore + } + } + throw $e; + } + } + + /** + * @return \Iterator<ICacheEntry> + */ + private function getAllChildObjects(ICache $cache, ICacheEntry $entry): \Iterator { + if ($entry->getMimeType() === FileInfo::MIMETYPE_FOLDER) { + foreach ($cache->getFolderContentsById($entry->getId()) as $child) { + yield from $this->getAllChildObjects($cache, $child); + } + } else { + yield $entry; + } + } + public function copy($source, $target) { $source = $this->normalizePath($source); $target = $this->normalizePath($target); @@ -787,4 +832,8 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil $urn = $this->getURN($cacheEntry->getId()); $this->objectStore->abortMultipartUpload($urn, $writeToken); } + + public function setPreserveCacheOnDelete(bool $preserve) { + $this->preserveCacheItemsOnDelete = $preserve; + } } diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php index fb4aa0a7c3c..ab9cd5c3326 100644 --- a/lib/private/Files/Storage/Common.php +++ b/lib/private/Files/Storage/Common.php @@ -49,6 +49,7 @@ use OC\Files\Cache\Scanner; use OC\Files\Cache\Updater; use OC\Files\Cache\Watcher; use OC\Files\Filesystem; +use OC\Files\ObjectStore\ObjectStoreStorage; use OC\Files\Storage\Wrapper\Jail; use OC\Files\Storage\Wrapper\Wrapper; use OCP\Files\EmptyFileNameException; @@ -704,10 +705,21 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage { $result = $this->copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath, true); if ($result) { - if ($sourceStorage->is_dir($sourceInternalPath)) { - $result = $sourceStorage->rmdir($sourceInternalPath); - } else { - $result = $sourceStorage->unlink($sourceInternalPath); + if ($sourceStorage->instanceOfStorage(ObjectStoreStorage::class)) { + /** @var ObjectStoreStorage $sourceStorage */ + $sourceStorage->setPreserveCacheOnDelete(true); + } + try { + if ($sourceStorage->is_dir($sourceInternalPath)) { + $result = $sourceStorage->rmdir($sourceInternalPath); + } else { + $result = $sourceStorage->unlink($sourceInternalPath); + } + } finally { + if ($sourceStorage->instanceOfStorage(ObjectStoreStorage::class)) { + /** @var ObjectStoreStorage $sourceStorage */ + $sourceStorage->setPreserveCacheOnDelete(false); + } } } return $result; diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index d17189a3bd0..3f6521a8e37 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -56,11 +56,14 @@ use OCP\IInitialStateService; use OCP\INavigationManager; use OCP\IURLGenerator; use OCP\IUserSession; +use OCP\L10N\IFactory; use OCP\Support\Subscription\IRegistry; use OCP\Util; class TemplateLayout extends \OC_Template { private static $versionHash = ''; + /** @var string[] */ + private static $cacheBusterCache = []; /** @var CSSResourceLocator|null */ public static $cssLocator = null; @@ -68,38 +71,29 @@ class TemplateLayout extends \OC_Template { /** @var JSResourceLocator|null */ public static $jsLocator = null; - /** @var IConfig */ - private $config; - - /** @var IInitialStateService */ - private $initialState; - - /** @var INavigationManager */ - private $navigationManager; + private IConfig $config; + private IAppManager $appManager; + private InitialStateService $initialState; + private INavigationManager $navigationManager; /** * @param string $renderAs * @param string $appId application id */ public function __construct($renderAs, $appId = '') { - /** @var IConfig */ - $this->config = \OC::$server->get(IConfig::class); - - /** @var IInitialStateService */ - $this->initialState = \OC::$server->get(IInitialStateService::class); + $this->config = \OCP\Server::get(IConfig::class); + $this->appManager = \OCP\Server::get(IAppManager::class); + $this->initialState = \OCP\Server::get(InitialStateService::class); + $this->navigationManager = \OCP\Server::get(INavigationManager::class); - // Add fallback theming variables if theming is disabled - if ($renderAs !== TemplateResponse::RENDER_AS_USER - || !\OC::$server->getAppManager()->isEnabledForUser('theming')) { + // Add fallback theming variables if not rendered as user + if ($renderAs !== TemplateResponse::RENDER_AS_USER) { // TODO cache generated default theme if enabled for fallback if server is erroring ? Util::addStyle('theming', 'default'); } // Decide which page we show if ($renderAs === TemplateResponse::RENDER_AS_USER) { - /** @var INavigationManager */ - $this->navigationManager = \OC::$server->get(INavigationManager::class); - parent::__construct('core', 'layout.user'); if (in_array(\OC_App::getCurrentApp(), ['settings','admin', 'help']) !== false) { $this->assign('bodyid', 'body-settings'); @@ -120,7 +114,7 @@ class TemplateLayout extends \OC_Template { } // Set body data-theme $this->assign('enabledThemes', []); - if (\OC::$server->getAppManager()->isEnabledForUser('theming') && class_exists('\OCA\Theming\Service\ThemesService')) { + if ($this->appManager->isEnabledForUser('theming') && class_exists('\OCA\Theming\Service\ThemesService')) { /** @var \OCA\Theming\Service\ThemesService */ $themesService = \OC::$server->get(\OCA\Theming\Service\ThemesService::class); $this->assign('enabledThemes', $themesService->getEnabledThemes()); @@ -131,9 +125,9 @@ class TemplateLayout extends \OC_Template { $this->assign('logoUrl', $logoUrl); // Set default app name - $defaultApp = \OC::$server->getAppManager()->getDefaultAppForUser(); - $defaultAppInfo = \OC::$server->getAppManager()->getAppInfo($defaultApp); - $l10n = \OC::$server->getL10NFactory()->get($defaultApp); + $defaultApp = $this->appManager->getDefaultAppForUser(); + $defaultAppInfo = $this->appManager->getAppInfo($defaultApp); + $l10n = \OC::$server->get(IFactory::class)->get($defaultApp); $this->assign('defaultAppName', $l10n->t($defaultAppInfo['name'])); // Add navigation entry @@ -213,8 +207,7 @@ class TemplateLayout extends \OC_Template { $showSimpleSignup = true; } - $appManager = \OCP\Server::get(IAppManager::class); - if ($appManager->isEnabledForUser('registration')) { + if ($this->appManager->isEnabledForUser('registration')) { $urlGenerator = \OCP\Server::get(IURLGenerator::class); $signUpLink = $urlGenerator->getAbsoluteURL('/index.php/apps/registration/'); } @@ -232,7 +225,7 @@ class TemplateLayout extends \OC_Template { $this->assign('language', $lang); $this->assign('locale', $locale); - if (\OC::$server->getSystemConfig()->getValue('installed', false)) { + if ($this->config->getSystemValueBool('installed', false)) { if (empty(self::$versionHash)) { $v = \OC_App::getAppVersions(); $v['core'] = implode('.', \OCP\Util::getVersion()); @@ -252,7 +245,7 @@ class TemplateLayout extends \OC_Template { $jsConfigHelper = new JSConfigHelper( \OCP\Util::getL10N('lib'), \OCP\Server::get(Defaults::class), - \OC::$server->getAppManager(), + $this->appManager, \OC::$server->getSession(), \OC::$server->getUserSession()->getUser(), $this->config, @@ -287,6 +280,7 @@ class TemplateLayout extends \OC_Template { if (\OC::$server->getSystemConfig()->getValue('installed', false) && !\OCP\Util::needUpgrade() && $pathInfo !== '' + && $pathInfo !== false && !preg_match('/^\/login/', $pathInfo) && $renderAs !== TemplateResponse::RENDER_AS_ERROR ) { @@ -295,7 +289,7 @@ class TemplateLayout extends \OC_Template { // If we ignore the scss compiler, // we need to load the guest css fallback \OC_Util::addStyle('guest'); - $cssFiles = self::findStylesheetFiles(\OC_Util::$styles, false); + $cssFiles = self::findStylesheetFiles(\OC_Util::$styles); } $this->assign('cssfiles', []); @@ -324,51 +318,64 @@ class TemplateLayout extends \OC_Template { $this->assign('id-app-navigation', $renderAs === TemplateResponse::RENDER_AS_USER ? '#app-navigation' : null); } - /** - * @param string $path - * @param string $file - * @return string - */ - protected function getVersionHashSuffix($path = false, $file = false) { + protected function getVersionHashSuffix(string $path = '', string $file = ''): string { if ($this->config->getSystemValueBool('debug', false)) { // allows chrome workspace mapping in debug mode return ""; } - $themingSuffix = ''; - $v = []; - if ($this->config->getSystemValueBool('installed', false)) { - if (\OC::$server->getAppManager()->isInstalled('theming')) { - $themingSuffix = '-' . $this->config->getAppValue('theming', 'cachebuster', '0'); - } - $v = \OC_App::getAppVersions(); + if ($this->config->getSystemValueBool('installed', false) === false) { + // if not installed just return the version hash + return '?v=' . self::$versionHash; } - // Try the webroot path for a match - if ($path !== false && $path !== '') { - $appName = $this->getAppNamefromPath($path); - if (array_key_exists($appName, $v)) { - $appVersion = $v[$appName]; - return '?v=' . substr(md5($appVersion), 0, 8) . $themingSuffix; - } + $hash = false; + // Try the web-root first + if ($path !== '') { + $hash = $this->getVersionHashByPath($path); + } + // If not found try the file + if ($hash === false && $file !== '') { + $hash = $this->getVersionHashByPath($file); + } + // As a last resort we use the server version hash + if ($hash === false) { + $hash = self::$versionHash; } - // fallback to the file path instead - if ($file !== false && $file !== '') { - $appName = $this->getAppNamefromPath($file); - if (array_key_exists($appName, $v)) { - $appVersion = $v[$appName]; - return '?v=' . substr(md5($appVersion), 0, 8) . $themingSuffix; + + // The theming app is force-enabled thus the cache buster is always available + $themingSuffix = '-' . $this->config->getAppValue('theming', 'cachebuster', '0'); + + return '?v=' . $hash . $themingSuffix; + } + + private function getVersionHashByPath(string $path): string|false { + if (array_key_exists($path, self::$cacheBusterCache) === false) { + // Not yet cached, so lets find the cache buster string + $appId = $this->getAppNamefromPath($path); + if ($appId === false) { + // No app Id could be guessed + return false; } + + $appVersion = $this->appManager->getAppVersion($appId); + // For shipped apps the app version is not a single source of truth, we rather also need to consider the Nextcloud version + if ($this->appManager->isShipped($appId)) { + $appVersion .= '-' . self::$versionHash; + } + + $hash = substr(md5($appVersion), 0, 8); + self::$cacheBusterCache[$path] = $hash; } - return '?v=' . self::$versionHash . $themingSuffix; + return self::$cacheBusterCache[$path]; } /** * @param array $styles * @return array */ - public static function findStylesheetFiles($styles, $compileScss = true) { + public static function findStylesheetFiles($styles) { if (!self::$cssLocator) { self::$cssLocator = \OCP\Server::get(CSSResourceLocator::class); } @@ -377,11 +384,10 @@ class TemplateLayout extends \OC_Template { } /** - * @param string $path - * @return string|boolean + * @return string|false */ - public function getAppNamefromPath($path) { - if ($path !== '' && is_string($path)) { + public function getAppNamefromPath(string $path) { + if ($path !== '') { $pathParts = explode('/', $path); if ($pathParts[0] === 'css') { // This is a scss request diff --git a/tests/preseed-config.php b/tests/preseed-config.php index c62b4471280..8a56e43c7a0 100644 --- a/tests/preseed-config.php +++ b/tests/preseed-config.php @@ -34,6 +34,21 @@ if (getenv('OBJECT_STORE') === 's3') { 'use_path_style' => true ] ]; +} elseif (getenv('OBJECT_STORE') === 's3-multibucket') { + $CONFIG['objectstore_multibucket'] = [ + 'class' => 'OC\\Files\\ObjectStore\\S3', + 'arguments' => [ + 'bucket' => 'nextcloud', + 'autocreate' => true, + 'key' => getenv('OBJECT_STORE_KEY') ?: 'nextcloud', + 'secret' => getenv('OBJECT_STORE_SECRET') ?: 'nextcloud', + 'hostname' => getenv('OBJECT_STORE_HOST') ?: 'localhost', + 'port' => 9000, + 'use_ssl' => false, + // required for some non amazon s3 implementations + 'use_path_style' => true + ] + ]; } elseif (getenv('OBJECT_STORE') === 'azure') { $CONFIG['objectstore'] = [ 'class' => 'OC\\Files\\ObjectStore\\Azure', diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index 1794df5aa8d..8a9c5709aa2 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "amphp/amp", - "version": "v2.6.2", + "version": "v2.6.4", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", "shasum": "" }, "require": { @@ -29,8 +29,8 @@ "ext-json": "*", "jetbrains/phpstorm-stubs": "^2019.3", "phpunit/phpunit": "^7 | ^8 | ^9", - "psalm/phar": "^3.11@dev", - "react/promise": "^2" + "react/promise": "^2", + "vimeo/psalm": "^3.12" }, "type": "library", "extra": { @@ -85,7 +85,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.2" + "source": "https://github.com/amphp/amp/tree/v2.6.4" }, "funding": [ { @@ -93,20 +93,20 @@ "type": "github" } ], - "time": "2022-02-20T17:52:18+00:00" + "time": "2024-03-21T18:52:26+00:00" }, { "name": "amphp/byte-stream", - "version": "v1.8.1", + "version": "v1.8.2", "source": { "type": "git", "url": "https://github.com/amphp/byte-stream.git", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" + "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/4f0e968ba3798a423730f567b1b50d3441c16ddc", + "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc", "shasum": "" }, "require": { @@ -122,11 +122,6 @@ "psalm/phar": "^3.11.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "files": [ "lib/functions.php" @@ -150,7 +145,7 @@ } ], "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "http://amphp.org/byte-stream", + "homepage": "https://amphp.org/byte-stream", "keywords": [ "amp", "amphp", @@ -160,9 +155,8 @@ "stream" ], "support": { - "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" + "source": "https://github.com/amphp/byte-stream/tree/v1.8.2" }, "funding": [ { @@ -170,34 +164,42 @@ "type": "github" } ], - "time": "2021-03-30T17:13:30+00:00" + "time": "2024-04-13T18:00:56+00:00" }, { "name": "composer/pcre", - "version": "3.0.2", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb" + "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb", - "reference": "4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb", + "url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4", + "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, "require-dev": { - "phpstan/phpstan": "^1.3", + "phpstan/phpstan": "^1.11.10", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { "branch-alias": { "dev-main": "3.x-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { @@ -225,7 +227,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.0.2" + "source": "https://github.com/composer/pcre/tree/3.3.1" }, "funding": [ { @@ -241,28 +243,28 @@ "type": "tidelift" } ], - "time": "2022-11-03T20:24:16+00:00" + "time": "2024-08-27T18:44:43+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { @@ -304,9 +306,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.3" }, "funding": [ { @@ -322,20 +324,20 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2024-09-19T14:15:21+00:00" }, { "name": "composer/xdebug-handler", - "version": "3.0.3", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { @@ -346,7 +348,7 @@ "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { @@ -370,9 +372,9 @@ "performance" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { @@ -388,7 +390,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T21:32:43+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -428,6 +430,53 @@ "time": "2019-12-04T15:06:13+00:00" }, { + "name": "doctrine/deprecations", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + }, + "time": "2024-01-30T19:34:25+00:00" + }, + { "name": "felixfbecker/advanced-json-rpc", "version": "v3.2.1", "source": { @@ -474,16 +523,16 @@ }, { "name": "felixfbecker/language-server-protocol", - "version": "v1.5.2", + "version": "v1.5.3", "source": { "type": "git", "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/a9e113dbc7d849e35b8776da39edaf4313b7b6c9", + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9", "shasum": "" }, "require": { @@ -524,22 +573,22 @@ ], "support": { "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.3" }, - "time": "2022-03-02T22:36:06+00:00" + "time": "2024-04-30T00:40:11+00:00" }, { "name": "fidry/cpu-core-counter", - "version": "0.5.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623" + "reference": "8520451a140d3f46ac33042715115e290cf5785f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623", - "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", + "reference": "8520451a140d3f46ac33042715115e290cf5785f", "shasum": "" }, "require": { @@ -547,13 +596,13 @@ }, "require-dev": { "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", "phpstan/extension-installer": "^1.2.0", "phpstan/phpstan": "^1.9.2", "phpstan/phpstan-deprecation-rules": "^1.0.0", "phpstan/phpstan-phpunit": "^1.2.2", "phpstan/phpstan-strict-rules": "^1.4.4", - "phpunit/phpunit": "^9.5.26 || ^8.5.31", - "theofidry/php-cs-fixer-config": "^1.0", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", "webmozarts/strict-phpunit": "^7.5" }, "type": "library", @@ -579,7 +628,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" }, "funding": [ { @@ -587,20 +636,20 @@ "type": "github" } ], - "time": "2022-12-24T12:35:10+00:00" + "time": "2024-08-06T10:04:20+00:00" }, { "name": "netresearch/jsonmapper", - "version": "v4.0.0", + "version": "v4.5.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" + "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8e76efb98ee8b6afc54687045e1b8dba55ac76e5", + "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5", "shasum": "" }, "require": { @@ -611,7 +660,7 @@ "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0", "squizlabs/php_codesniffer": "~3.5" }, "type": "library", @@ -636,31 +685,31 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.5.0" }, - "time": "2020-12-01T19:48:11+00:00" + "time": "2024-09-08T10:13:13+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.1", + "version": "v4.19.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", - "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -692,9 +741,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" }, - "time": "2022-09-04T07:30:47+00:00" + "time": "2024-09-29T15:01:53+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -751,28 +800,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "version": "5.4.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.1", "ext-filter": "*", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7", "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "mockery/mockery": "~1.3.5", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.13" }, "type": "library", "extra": { @@ -796,36 +852,39 @@ }, { "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "email": "opensource@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" }, - "time": "2021-10-19T17:43:47+00:00" + "time": "2024-05-21T05:55:05+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.2", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", @@ -857,9 +916,56 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + }, + "time": "2024-02-23T11:10:43+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.32.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6ca22b154efdd9e3c68c56f5d94670920a1c19a4", + "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4", + "shasum": "" }, - "time": "2022-10-14T12:47:21+00:00" + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.32.0" + }, + "time": "2024-09-26T07:23:32+00:00" }, { "name": "psr/container", @@ -961,16 +1067,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { @@ -1015,7 +1121,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -1023,20 +1129,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "spatie/array-to-xml", - "version": "3.1.5", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/spatie/array-to-xml.git", - "reference": "13f76acef5362d15c71ae1ac6350cc3df5e25e43" + "reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/13f76acef5362d15c71ae1ac6350cc3df5e25e43", - "reference": "13f76acef5362d15c71ae1ac6350cc3df5e25e43", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f56b220fe2db1ade4c88098d83413ebdfc3bf876", + "reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876", "shasum": "" }, "require": { @@ -1049,6 +1155,11 @@ "spatie/pest-plugin-snapshots": "^1.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { "Spatie\\ArrayToXml\\": "src" @@ -1074,7 +1185,7 @@ "xml" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.1.5" + "source": "https://github.com/spatie/array-to-xml/tree/3.3.0" }, "funding": [ { @@ -1086,20 +1197,20 @@ "type": "github" } ], - "time": "2022-12-24T13:43:51+00:00" + "time": "2024-05-01T10:20:27+00:00" }, { "name": "symfony/console", - "version": "v5.4.15", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669" + "reference": "5b5a0aa66e3296e303e22490f90f521551835a83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ea59bb0edfaf9f28d18d8791410ee0355f317669", - "reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669", + "url": "https://api.github.com/repos/symfony/console/zipball/5b5a0aa66e3296e303e22490f90f521551835a83", + "reference": "5b5a0aa66e3296e303e22490f90f521551835a83", "shasum": "" }, "require": { @@ -1164,12 +1275,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.15" + "source": "https://github.com/symfony/console/tree/v5.4.44" }, "funding": [ { @@ -1185,20 +1296,20 @@ "type": "tidelift" } ], - "time": "2022-10-26T21:41:52+00:00" + "time": "2024-09-20T07:56:40+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "80d075412b557d41002320b96a096ca65aa2c98d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/80d075412b557d41002320b96a096ca65aa2c98d", + "reference": "80d075412b557d41002320b96a096ca65aa2c98d", "shasum": "" }, "require": { @@ -1236,7 +1347,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.3" }, "funding": [ { @@ -1252,20 +1363,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-01-24T14:02:46+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.21", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f" + "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", - "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/76c3818964e9d32be3862c9318ae3ba9aa280ddc", + "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc", "shasum": "" }, "require": { @@ -1274,6 +1385,9 @@ "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, + "require-dev": { + "symfony/process": "^5.4|^6.4" + }, "type": "library", "autoload": { "psr-4": { @@ -1300,7 +1414,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.21" + "source": "https://github.com/symfony/filesystem/tree/v5.4.44" }, "funding": [ { @@ -1316,24 +1430,24 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-09-16T14:52:48+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -1343,9 +1457,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1382,7 +1493,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -1398,33 +1509,30 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.26.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "433d05519ce6990bf3530fba6957499d327395c2" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", - "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1463,7 +1571,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -1479,33 +1587,30 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1547,7 +1652,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -1563,24 +1668,24 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -1590,9 +1695,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1630,7 +1732,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -1646,30 +1748,27 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.26.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1709,7 +1808,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0" }, "funding": [ { @@ -1725,30 +1824,27 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1792,7 +1888,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -1808,20 +1904,20 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.2", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a2329596ddc8fd568900e3fc76cba42489ecc7f3", + "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3", "shasum": "" }, "require": { @@ -1875,7 +1971,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.3" }, "funding": [ { @@ -1891,20 +1987,20 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2023-04-21T15:04:16+00:00" }, { "name": "symfony/string", - "version": "v5.4.15", + "version": "v5.4.44", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed" + "reference": "832caa16b6d9aac6bf11747315225f5aba384c24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", - "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", + "url": "https://api.github.com/repos/symfony/string/zipball/832caa16b6d9aac6bf11747315225f5aba384c24", + "reference": "832caa16b6d9aac6bf11747315225f5aba384c24", "shasum": "" }, "require": { @@ -1961,7 +2057,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.15" + "source": "https://github.com/symfony/string/tree/v5.4.44" }, "funding": [ { @@ -1977,20 +2073,20 @@ "type": "tidelift" } ], - "time": "2022-10-05T15:16:54+00:00" + "time": "2024-09-20T07:56:40+00:00" }, { "name": "vimeo/psalm", - "version": "5.9.0", + "version": "5.26.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "8b9ad1eb9e8b7d3101f949291da2b9f7767cd163" + "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/8b9ad1eb9e8b7d3101f949291da2b9f7767cd163", - "reference": "8b9ad1eb9e8b7d3101f949291da2b9f7767cd163", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/d747f6500b38ac4f7dfc5edbcae6e4b637d7add0", + "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0", "shasum": "" }, "require": { @@ -2009,14 +2105,17 @@ "ext-tokenizer": "*", "felixfbecker/advanced-json-rpc": "^3.1", "felixfbecker/language-server-protocol": "^1.5.2", - "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.14", - "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0", - "sebastian/diff": "^4.0 || ^5.0", + "nikic/php-parser": "^4.17", + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", "spatie/array-to-xml": "^2.17.0 || ^3.0", - "symfony/console": "^4.1.6 || ^5.0 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0" + "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0" + }, + "conflict": { + "nikic/php-parser": "4.17.0" }, "provide": { "psalm/psalm": "self.version" @@ -2035,7 +2134,7 @@ "psalm/plugin-phpunit": "^0.18", "slevomat/coding-standard": "^8.4", "squizlabs/php_codesniffer": "^3.6", - "symfony/process": "^4.4 || ^5.0 || ^6.0" + "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0" }, "suggest": { "ext-curl": "In order to send data to shepherd", @@ -2048,7 +2147,7 @@ "psalm-refactor", "psalter" ], - "type": "library", + "type": "project", "extra": { "branch-alias": { "dev-master": "5.x-dev", @@ -2080,10 +2179,11 @@ "static analysis" ], "support": { + "docs": "https://psalm.dev/docs", "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.9.0" + "source": "https://github.com/vimeo/psalm" }, - "time": "2023-03-29T21:38:21+00:00" + "time": "2024-09-08T18:53:08+00:00" }, { "name": "webmozart/assert", @@ -2155,5 +2255,5 @@ "platform-overrides": { "php": "8.0" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } |