diff options
89 files changed, 816 insertions, 244 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0abdafc9fd8..7695f300785 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1,20 @@ +# Fallback owners for code review - ensure all PRs have someone assigned for review. +# (the last match will used so this is only used if there is no more specific code owner below) + +# Backend +# is the first and gets everything to make things easier from matching syntax +* @nextcloud/server-backend + +# Frontend +# this will override the backend code owners if needed +/__mocks__ @nextcloud/server-frontend +/__tests__ @nextcloud/server-frontend +/cypress @nextcloud/server-frontend +**/js @nextcloud/server-frontend +**/src @nextcloud/server-frontend +*.js @nextcloud/server-frontend +*.ts @nextcloud/server-frontend + # App maintainers /apps/admin_audit/appinfo/info.xml @luka-nextcloud @blizzz /apps/cloud_federation_api/appinfo/info.xml @mejo- @@ -34,14 +51,14 @@ /apps/workflowengine/appinfo/info.xml @blizzz @juliusknorr # Frontend expertise -/apps/files/src* @skjnldsv -/apps/files_external/src* @skjnldsv -/apps/files_reminders/src* @skjnldsv -/apps/files_sharing/src/actions* @skjnldsv -/apps/files_trashbin/src* @skjnldsv +/apps/files/src* @skjnldsv @nextcloud/server-frontend +/apps/files_external/src* @skjnldsv @nextcloud/server-frontend +/apps/files_reminders/src* @skjnldsv @nextcloud/server-frontend +/apps/files_sharing/src/actions* @skjnldsv @nextcloud/server-frontend +/apps/files_trashbin/src* @skjnldsv @nextcloud/server-frontend # Security team -/build/psalm-baseline-security.xml @nickvergessen +/build/psalm-baseline-security.xml @nickvergessen @nextcloud/server-backend /resources/codesigning @mgallien @miaulalala @nickvergessen /resources/config/ca-bundle.crt @miaulalala @nickvergessen @@ -53,28 +70,26 @@ # Limit login to IP # Watch login routes for https://github.com/nextcloud/limit_login_to_ip -/core/routes.php @Altahrim +/core/routes.php @Altahrim @nextcloud/server-backend # OpenAPI -openapi*.json @provokateurin -ResponseDefinitions.php @provokateurin +openapi*.json @provokateurin +ResponseDefinitions.php @provokateurin # Talk team -/lib/private/Comments @nickvergessen -/lib/private/Federation @nickvergessen -/lib/private/Talk @nickvergessen -/lib/public/Comments @nickvergessen -/lib/public/Federation @nickvergessen -/lib/public/OCM @nickvergessen -/lib/public/Talk @nickvergessen -/lib/public/UserStatus @nickvergessen +/lib/private/Comments @nickvergessen @nextcloud/talk-backend +/lib/private/Federation @nickvergessen @nextcloud/talk-backend @nextcloud/server-backend +/lib/private/Talk @nickvergessen @nextcloud/talk-backend +/lib/public/Comments @nickvergessen @nextcloud/talk-backend +/lib/public/Federation @nickvergessen @nextcloud/talk-backend @nextcloud/server-backend +/lib/public/OCM @nickvergessen @nextcloud/talk-backend @nextcloud/server-backend +/lib/public/Talk @nickvergessen @nextcloud/talk-backend +/lib/public/UserStatus @nickvergessen @nextcloud/talk-backend # Groupware /build/integration/dav_features/caldav.feature @st3iny @SebastianKrupinski /build/integration/dav_features/carddav.feature @st3iny @SebastianKrupinski # Personal interest -*/Activity/* @nickvergessen -*/Notifications/* @nickvergessen -/lib/private/Profiler @CarlSchwan -/lib/public/Profiler @CarlSchwan +*/Activity/* @nickvergessen @nextcloud/server-backend +*/Notifications/* @nickvergessen @nextcloud/talk-backend diff --git a/.github/workflows/request-reviews.yml b/.github/workflows/request-reviews.yml deleted file mode 100644 index 5834351f7d3..00000000000 --- a/.github/workflows/request-reviews.yml +++ /dev/null @@ -1,78 +0,0 @@ -# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Assign reviews - -on: - pull_request: - types: [opened, reopened, ready_for_review] - -permissions: - contents: read - -jobs: - changes: - runs-on: ubuntu-latest-low - - outputs: - backend: ${{ steps.changes.outputs.backend }} - frontend: ${{ steps.changes.outputs.frontend }} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - backend: - - '3rdparty/**' - - '**/appinfo/**' - - '**/lib/**' - - '**/templates/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'psalm*' - - 'build/psalm*' - - '**.php' - frontend: - - 'apps/*/src/**' - - 'core/src/**' - - 'tsconfig.json' - - '**.js' - - '**.ts' - - '**.vue' - - assign-reviews: - name: Assign reviews - runs-on: ubuntu-latest-low - - needs: changes - # Only if there are not already reviews requested - if: github.event.pull_request.requested_reviewers[1] == null - - permissions: - pull-requests: write - - steps: - - name: Assign backend engineers - if: needs.changes.outputs.backend == 'true' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gh api \ - --method POST \ - -H "Accept: application/vnd.github+json" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - '/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/requested_reviewers' \ - -f "team_reviewers[]=server-backend" - - name: Assign frontend engineers - if: needs.changes.outputs.frontend == 'true' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gh api \ - --method POST \ - -H "Accept: application/vnd.github+json" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - '/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/requested_reviewers' \ - -f "team_reviewers[]=server-frontend" diff --git a/apps/dashboard/l10n/hu.js b/apps/dashboard/l10n/hu.js index fa806423da1..615abab2904 100644 --- a/apps/dashboard/l10n/hu.js +++ b/apps/dashboard/l10n/hu.js @@ -14,6 +14,8 @@ OC.L10N.register( "Good evening, {name}" : "Jó estét, {name}", "Hello" : "Üdv", "Hello, {name}" : "Üdv {name}!", + "Happy birthday 🥳🤩🎂🎉" : "Boldog születésnapot 🥳🤩🎂🎉", + "Happy birthday, {name} 🥳🤩🎂🎉" : "Boldog születésnapot, {name} 🥳🤩🎂🎉", "\"{title} icon\"" : "„{title} ikon”", "Customize" : "Testreszabás", "Edit widgets" : "Modulok szerkesztése", diff --git a/apps/dashboard/l10n/hu.json b/apps/dashboard/l10n/hu.json index 7f416563148..29eb14f730d 100644 --- a/apps/dashboard/l10n/hu.json +++ b/apps/dashboard/l10n/hu.json @@ -12,6 +12,8 @@ "Good evening, {name}" : "Jó estét, {name}", "Hello" : "Üdv", "Hello, {name}" : "Üdv {name}!", + "Happy birthday 🥳🤩🎂🎉" : "Boldog születésnapot 🥳🤩🎂🎉", + "Happy birthday, {name} 🥳🤩🎂🎉" : "Boldog születésnapot, {name} 🥳🤩🎂🎉", "\"{title} icon\"" : "„{title} ikon”", "Customize" : "Testreszabás", "Edit widgets" : "Modulok szerkesztése", diff --git a/apps/dav/l10n/tr.js b/apps/dav/l10n/tr.js index ac0ec3efbe1..337869ce720 100644 --- a/apps/dav/l10n/tr.js +++ b/apps/dav/l10n/tr.js @@ -261,20 +261,20 @@ OC.L10N.register( "Calendars including events, details and attendees" : "Etkinlikler, bilgiler ve katılımcılar ile takvimler", "Contacts and groups" : "Kişiler ve gruplar", "WebDAV" : "WebDAV", - "Absence saved" : "İşe gelmeme kaydedildi", - "Failed to save your absence settings" : "İşe gelmeme ayarlarınız kaydedilemedi", - "Absence cleared" : "İşe gelmeme temizlendi", - "Failed to clear your absence settings" : "İşe gelmeme ayarlarınız temizlenemedi", + "Absence saved" : "Bulunmama kaydedildi", + "Failed to save your absence settings" : "Bulunmama ayarlarınız kaydedilemedi", + "Absence cleared" : "Bulunmama temizlendi", + "Failed to clear your absence settings" : "Bulunmama ayarlarınız temizlenemedi", "First day" : "İlk gün", "Last day (inclusive)" : "Son gün (dahil)", "Out of office replacement (optional)" : "Ofis dışındayken yerine bakacak kişi (isteğe bağlı)", "Name of the replacement" : "Yerine bakacak kişi adı", "No results." : "Herhangi bir sonuç bulunamadı.", "Start typing." : "Yazmaya başlayın.", - "Short absence status" : "Kısa işe gelmeme durumu", - "Long absence Message" : "Uzun işe gelmeme iletisi", + "Short absence status" : "Kısa bulunmama durumu", + "Long absence Message" : "Uzun bulunmama iletisi", "Save" : "Kaydet", - "Disable absence" : "İşe gelmemeyi kapat", + "Disable absence" : "Bulunmamayı kapat", "Failed to load availability" : "Uygunluk yüklenemedi", "Saved availability" : "Uygunluk kaydedildi", "Failed to save availability" : "Uygunluk kaydedilemedi", @@ -289,8 +289,8 @@ OC.L10N.register( "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Tüm bildirimleri sessize almak için, uygunluk durumu dışında kullanıcı durumu otomatik olarak \"Rahatsız etmeyin\" olarak ayarlanır.", "Availability" : "Uygunluk", "If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Çalışma saatlerinizi ayarlarsanız, diğer kişiler bir toplantı ayarladıklarında ofis dışında olduğunuzu görürler.", - "Absence" : "İşe gelmeme", - "Configure your next absence period." : "Sonraki işe gelmeme aralığınızı yapılandırın.", + "Absence" : "Bulunmama", + "Configure your next absence period." : "Sonraki bulunmama aralığınızı yapılandırın.", "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Ayrıca {calendarappstoreopen}Takvim Uygulamasını{linkclose} kurun ya da {calendardocopen}bilgisayarınızı ya da taşınabilir aygıtınızı eşitlemek üzere bağlayın ↗{linkclose}.", "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Lütfen {emailopen}e-posta sunucusunu{linkclose} doğru ayarladığınızdan emin olun.", "Calendar server" : "Takvim sunucusu", diff --git a/apps/dav/l10n/tr.json b/apps/dav/l10n/tr.json index a6f77106723..02de0604933 100644 --- a/apps/dav/l10n/tr.json +++ b/apps/dav/l10n/tr.json @@ -259,20 +259,20 @@ "Calendars including events, details and attendees" : "Etkinlikler, bilgiler ve katılımcılar ile takvimler", "Contacts and groups" : "Kişiler ve gruplar", "WebDAV" : "WebDAV", - "Absence saved" : "İşe gelmeme kaydedildi", - "Failed to save your absence settings" : "İşe gelmeme ayarlarınız kaydedilemedi", - "Absence cleared" : "İşe gelmeme temizlendi", - "Failed to clear your absence settings" : "İşe gelmeme ayarlarınız temizlenemedi", + "Absence saved" : "Bulunmama kaydedildi", + "Failed to save your absence settings" : "Bulunmama ayarlarınız kaydedilemedi", + "Absence cleared" : "Bulunmama temizlendi", + "Failed to clear your absence settings" : "Bulunmama ayarlarınız temizlenemedi", "First day" : "İlk gün", "Last day (inclusive)" : "Son gün (dahil)", "Out of office replacement (optional)" : "Ofis dışındayken yerine bakacak kişi (isteğe bağlı)", "Name of the replacement" : "Yerine bakacak kişi adı", "No results." : "Herhangi bir sonuç bulunamadı.", "Start typing." : "Yazmaya başlayın.", - "Short absence status" : "Kısa işe gelmeme durumu", - "Long absence Message" : "Uzun işe gelmeme iletisi", + "Short absence status" : "Kısa bulunmama durumu", + "Long absence Message" : "Uzun bulunmama iletisi", "Save" : "Kaydet", - "Disable absence" : "İşe gelmemeyi kapat", + "Disable absence" : "Bulunmamayı kapat", "Failed to load availability" : "Uygunluk yüklenemedi", "Saved availability" : "Uygunluk kaydedildi", "Failed to save availability" : "Uygunluk kaydedilemedi", @@ -287,8 +287,8 @@ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Tüm bildirimleri sessize almak için, uygunluk durumu dışında kullanıcı durumu otomatik olarak \"Rahatsız etmeyin\" olarak ayarlanır.", "Availability" : "Uygunluk", "If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Çalışma saatlerinizi ayarlarsanız, diğer kişiler bir toplantı ayarladıklarında ofis dışında olduğunuzu görürler.", - "Absence" : "İşe gelmeme", - "Configure your next absence period." : "Sonraki işe gelmeme aralığınızı yapılandırın.", + "Absence" : "Bulunmama", + "Configure your next absence period." : "Sonraki bulunmama aralığınızı yapılandırın.", "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Ayrıca {calendarappstoreopen}Takvim Uygulamasını{linkclose} kurun ya da {calendardocopen}bilgisayarınızı ya da taşınabilir aygıtınızı eşitlemek üzere bağlayın ↗{linkclose}.", "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Lütfen {emailopen}e-posta sunucusunu{linkclose} doğru ayarladığınızdan emin olun.", "Calendar server" : "Takvim sunucusu", diff --git a/apps/dav/l10n/zh_CN.js b/apps/dav/l10n/zh_CN.js index 7113a6b8815..96ce48392e4 100644 --- a/apps/dav/l10n/zh_CN.js +++ b/apps/dav/l10n/zh_CN.js @@ -63,16 +63,87 @@ OC.L10N.register( "_%n year_::_%n years_" : ["%n 年"], "_%n month_::_%n months_" : ["%n 月"], "_%n day_::_%n days_" : ["%n 天"], - "_%n hour_::_%n hours_" : ["%n小时"], - "_%n minute_::_%n minutes_" : ["%n分钟"], - "%s (in %s)" : "%s (在 %s)", - "%s (%s ago)" : "%s (%s 前)", + "_%n hour_::_%n hours_" : ["%n 小时"], + "_%n minute_::_%n minutes_" : ["%n 分钟"], + "%s (in %s)" : "%s(在 %s)", + "%s (%s ago)" : "%s(%s 前)", "Calendar: %s" : "日历:%s", "Date: %s" : "日期:%s", "Description: %s" : "描述:%s", "Where: %s" : "地点:%s", "%1$s via %2$s" : "%1$s 通过 %2$s", - "In the past on %1$s for the entire day" : "过去一整天都进行 %1$s", + "In the past on %1$s for the entire day" : "过去全天 %1$s ", + "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["在 %n 分钟后全天 %1$s"], + "_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["在 %n 小时后全天 %1$s"], + "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["在 %n 天后全天 %1$s"], + "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["在 %n 周后全天 %1$s"], + "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["在 %n 个月后全天 %1$s"], + "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["在 %n 年后全天 %1$s"], + "In the past on %1$s between %2$s - %3$s" : "过去 %2$s - %3$s %1$s", + "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 分钟后 %1$s"], + "_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 小时后 %1$s"], + "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 天后 %1$s"], + "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 周后 %1$s"], + "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 个月后 %1$s"], + "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 年后 %1$s"], + "Could not generate when statement" : "无法生成 when 语句", + "Every Day for the entire day" : "每天全天", + "Every Day for the entire day until %1$s" : "每天全天,直到 %1$s", + "Every Day between %1$s - %2$s" : "在 %1$s - %2$s 每天", + "Every Day between %1$s - %2$s until %3$s" : "在 %1$s - %2$s 每天,直到 %3$s", + "Every %1$d Days for the entire day" : "每 %1$d 天全天", + "Every %1$d Days for the entire day until %2$s" : "每 %1$d 天全天,直到 %2$s", + "Every %1$d Days between %2$s - %3$s" : "在 %2$s - %3$s 每 %1$d 天", + "Every %1$d Days between %2$s - %3$s until %4$s" : "在 %2$s - %3$s 每 %1$d 天,直到 %4$s", + "Could not generate event recurrence statement" : "无法生成事件重复语句", + "Every Week on %1$s for the entire day" : "每周全天 %1$s", + "Every Week on %1$s for the entire day until %2$s" : "每周全天 %1$s,直到 %2$s", + "Every Week on %1$s between %2$s - %3$s" : "在 %2$s - %3$s 每周 %1$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "在 %2$s - %3$s 每周 %1$s,直到 %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "每 %1$d 周全天 %2$s", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "每 %1$d 周全天 %2$s,直到 %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "在 %3$s - %4$s 每 %1$d 周 %2$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "在 %3$s - %4$s 每 %1$d 周 %2$s,直到 %5$s", + "Every Month on the %1$s for the entire day" : "每个月全天 %1$s", + "Every Month on the %1$s for the entire day until %2$s" : "每个月全天 %1$s,直到 %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "在 %2$s - %3$s 每个月 %1$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "在 %2$s - %3$s 每个月 %1$s,直到 %4$s", + "Every %1$d Months on the %2$s for the entire day" : "每 %1$d 个月全天 %2$s", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "每 %1$d 个月全天 %2$s,直到 %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "在 %3$s - %4$s 每 %1$d 个月 %2$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "在 %3$s - %4$s 每 %1$d 个月 %2$s,直到 %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "每年 %1$s 全天 %2$s", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "每年 %1$s 全天 %2$s,直到 %3$s ", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "在 %3$s - %4$s 每年 %1$s %2$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "在 %3$s - %4$s 每年 %1$s %2$s,直到 %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "每 %1$d 年 %2$s 全天 %3$s", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "每 %1$d 年 %2$s 全天 %3$s,直到 %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "在 %4$s - %5$s 每 %1$d 年 %2$s %3$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "在 %4$s - %5$s 每 %1$d 年 %2$s %3$s,直到 %6$s", + "On specific dates for the entire day until %1$s" : "在特定日期全天,直到 %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "在 %1$s - %2$s 特定日期,直到 %3$s", + "In the past on %1$s" : "在过去 %1$s", + "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["%n 分钟后 %1$s"], + "_In a hour on %1$s_::_In %n hours on %1$s_" : ["%n 小时后 %1$s"], + "_In a day on %1$s_::_In %n days on %1$s_" : ["%n 天后 %1$s"], + "_In a week on %1$s_::_In %n weeks on %1$s_" : ["%n 周后 %1$s"], + "_In a month on %1$s_::_In %n months on %1$s_" : ["%n 个月后 %1$s"], + "_In a year on %1$s_::_In %n years on %1$s_" : ["%n 年后 %1$s"], + "In the past on %1$s then on %2$s" : "过去 %1$s,然后 %2$s", + "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["%n 分钟后 %1$s,然后 %2$s"], + "_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["%n 小时后 %1$s,然后 %2$s"], + "_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["%n 天后 %1$s,然后 %2$s"], + "_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["%n 周后 %1$s,然后 %2$s"], + "_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["%n 个月后 %1$s,然后 %2$s"], + "_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["%n 年后 %1$s,然后 %2$s"], + "In the past on %1$s then on %2$s and %3$s" : "在过去 %1$s,然后 %2$s 和 %3$s", + "_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["%n 分钟后 %1$s,然后 %2$s 和 %3$s"], + "_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["%n 小时后 %1$s,然后 %2$s 和 %3$s"], + "_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["%n 天后 %1$s,然后 %2$s 和 %3$s"], + "_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["%n 周后 %1$s,然后 %2$s 和 %3$s"], + "_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["%n 个月后 %1$s,然后 %2$s 和 %3$s"], + "_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["%n 年后 %1$s,然后 %2$s 和 %3$s"], + "Could not generate next recurrence statement" : "无法生成下一个重复语句", "Cancelled: %1$s" : "已取消:%1$s", "\"%1$s\" has been canceled" : "“%1$s”已取消", "Re: %1$s" : "回复:%1$s", @@ -90,6 +161,7 @@ OC.L10N.register( "When:" : "时间:", "Location:" : "地区:", "Link:" : "链接:", + "Occurring:" : "发生:", "Accept" : "接受", "Decline" : "拒绝", "More options …" : "更多选项", @@ -113,8 +185,16 @@ OC.L10N.register( "October" : "十月", "November" : "十一月", "December" : "十二月", - "First" : "第一个", + "First" : "第一", + "Second" : "第二", + "Third" : "第三", + "Fourth" : "第四", + "Fifth" : "第五", "Last" : "最后一个", + "Second Last" : "倒数第二", + "Third Last" : "倒数第三", + "Fourth Last" : "倒数第四", + "Fifth Last" : "倒数第五", "Contacts" : "联系人", "{actor} created address book {addressbook}" : "{actor} 创建了通讯录 {addressbook}", "You created address book {addressbook}" : "你创建了通讯录 {addressbook}", @@ -143,6 +223,7 @@ OC.L10N.register( "Accounts" : "账号", "System address book which holds all accounts" : "包含所有账号的系统通讯录", "File is not updatable: %1$s" : "无法更新文件:%1$s", + "Failed to get storage for file" : "无法获取文件的存储空间", "Could not write to final file, canceled by hook" : "无法写入最终文件,操作被插件取消", "Could not write file contents" : "无法写入文件内容", "_%n byte_::_%n bytes_" : ["%n字节"], @@ -151,11 +232,14 @@ OC.L10N.register( "Could not rename part file to final file, canceled by hook" : "无法将部分文件重命名为最终文件,操作被插件取消", "Could not rename part file to final file" : "无法将部分文件重命名为最终文件", "Failed to check file size: %1$s" : "检查文件大小失败:%1$s", + "Could not open file: %1$s, file does seem to exist" : "无法打开文件 %1$s,文件似乎不存在", + "Could not open file: %1$s, file doesn't seem to exist" : "无法打开文件 %1$s,文件似乎不存在", "Encryption not ready: %1$s" : "加密不可用:%1$s", "Failed to open file: %1$s" : "打开文件失败:%1$s", "Failed to unlink: %1$s" : "解除链接失败:%1$s", "Failed to write file contents: %1$s" : "写入文件内容失败:%1$s", "File not found: %1$s" : "找不到文件:%1$s", + "Invalid target path" : "目标路径无效", "System is in maintenance mode." : "系统处于维护模式。", "Upgrade needed" : "需要升级", "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "您的 %s 需要配置使用 HTTPS 以在 iOS/macOS 中使用 CalDAV 和 CardDAV。", @@ -185,6 +269,7 @@ OC.L10N.register( "Last day (inclusive)" : "最后一天(含)", "Out of office replacement (optional)" : "外出时工作替代人员(可选)", "Name of the replacement" : "替代人员名称", + "No results." : "没有结果。", "Start typing." : "开始输入", "Short absence status" : "短暂离开状态", "Long absence Message" : "长期离开信息", diff --git a/apps/dav/l10n/zh_CN.json b/apps/dav/l10n/zh_CN.json index 979ebad6f11..77b2a9e0786 100644 --- a/apps/dav/l10n/zh_CN.json +++ b/apps/dav/l10n/zh_CN.json @@ -61,16 +61,87 @@ "_%n year_::_%n years_" : ["%n 年"], "_%n month_::_%n months_" : ["%n 月"], "_%n day_::_%n days_" : ["%n 天"], - "_%n hour_::_%n hours_" : ["%n小时"], - "_%n minute_::_%n minutes_" : ["%n分钟"], - "%s (in %s)" : "%s (在 %s)", - "%s (%s ago)" : "%s (%s 前)", + "_%n hour_::_%n hours_" : ["%n 小时"], + "_%n minute_::_%n minutes_" : ["%n 分钟"], + "%s (in %s)" : "%s(在 %s)", + "%s (%s ago)" : "%s(%s 前)", "Calendar: %s" : "日历:%s", "Date: %s" : "日期:%s", "Description: %s" : "描述:%s", "Where: %s" : "地点:%s", "%1$s via %2$s" : "%1$s 通过 %2$s", - "In the past on %1$s for the entire day" : "过去一整天都进行 %1$s", + "In the past on %1$s for the entire day" : "过去全天 %1$s ", + "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["在 %n 分钟后全天 %1$s"], + "_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["在 %n 小时后全天 %1$s"], + "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["在 %n 天后全天 %1$s"], + "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["在 %n 周后全天 %1$s"], + "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["在 %n 个月后全天 %1$s"], + "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["在 %n 年后全天 %1$s"], + "In the past on %1$s between %2$s - %3$s" : "过去 %2$s - %3$s %1$s", + "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 分钟后 %1$s"], + "_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 小时后 %1$s"], + "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 天后 %1$s"], + "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 周后 %1$s"], + "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 个月后 %1$s"], + "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["在 %2$s - %3$s %n 年后 %1$s"], + "Could not generate when statement" : "无法生成 when 语句", + "Every Day for the entire day" : "每天全天", + "Every Day for the entire day until %1$s" : "每天全天,直到 %1$s", + "Every Day between %1$s - %2$s" : "在 %1$s - %2$s 每天", + "Every Day between %1$s - %2$s until %3$s" : "在 %1$s - %2$s 每天,直到 %3$s", + "Every %1$d Days for the entire day" : "每 %1$d 天全天", + "Every %1$d Days for the entire day until %2$s" : "每 %1$d 天全天,直到 %2$s", + "Every %1$d Days between %2$s - %3$s" : "在 %2$s - %3$s 每 %1$d 天", + "Every %1$d Days between %2$s - %3$s until %4$s" : "在 %2$s - %3$s 每 %1$d 天,直到 %4$s", + "Could not generate event recurrence statement" : "无法生成事件重复语句", + "Every Week on %1$s for the entire day" : "每周全天 %1$s", + "Every Week on %1$s for the entire day until %2$s" : "每周全天 %1$s,直到 %2$s", + "Every Week on %1$s between %2$s - %3$s" : "在 %2$s - %3$s 每周 %1$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "在 %2$s - %3$s 每周 %1$s,直到 %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "每 %1$d 周全天 %2$s", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "每 %1$d 周全天 %2$s,直到 %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "在 %3$s - %4$s 每 %1$d 周 %2$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "在 %3$s - %4$s 每 %1$d 周 %2$s,直到 %5$s", + "Every Month on the %1$s for the entire day" : "每个月全天 %1$s", + "Every Month on the %1$s for the entire day until %2$s" : "每个月全天 %1$s,直到 %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "在 %2$s - %3$s 每个月 %1$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "在 %2$s - %3$s 每个月 %1$s,直到 %4$s", + "Every %1$d Months on the %2$s for the entire day" : "每 %1$d 个月全天 %2$s", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "每 %1$d 个月全天 %2$s,直到 %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "在 %3$s - %4$s 每 %1$d 个月 %2$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "在 %3$s - %4$s 每 %1$d 个月 %2$s,直到 %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "每年 %1$s 全天 %2$s", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "每年 %1$s 全天 %2$s,直到 %3$s ", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "在 %3$s - %4$s 每年 %1$s %2$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "在 %3$s - %4$s 每年 %1$s %2$s,直到 %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "每 %1$d 年 %2$s 全天 %3$s", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "每 %1$d 年 %2$s 全天 %3$s,直到 %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "在 %4$s - %5$s 每 %1$d 年 %2$s %3$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "在 %4$s - %5$s 每 %1$d 年 %2$s %3$s,直到 %6$s", + "On specific dates for the entire day until %1$s" : "在特定日期全天,直到 %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "在 %1$s - %2$s 特定日期,直到 %3$s", + "In the past on %1$s" : "在过去 %1$s", + "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["%n 分钟后 %1$s"], + "_In a hour on %1$s_::_In %n hours on %1$s_" : ["%n 小时后 %1$s"], + "_In a day on %1$s_::_In %n days on %1$s_" : ["%n 天后 %1$s"], + "_In a week on %1$s_::_In %n weeks on %1$s_" : ["%n 周后 %1$s"], + "_In a month on %1$s_::_In %n months on %1$s_" : ["%n 个月后 %1$s"], + "_In a year on %1$s_::_In %n years on %1$s_" : ["%n 年后 %1$s"], + "In the past on %1$s then on %2$s" : "过去 %1$s,然后 %2$s", + "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["%n 分钟后 %1$s,然后 %2$s"], + "_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["%n 小时后 %1$s,然后 %2$s"], + "_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["%n 天后 %1$s,然后 %2$s"], + "_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["%n 周后 %1$s,然后 %2$s"], + "_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["%n 个月后 %1$s,然后 %2$s"], + "_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["%n 年后 %1$s,然后 %2$s"], + "In the past on %1$s then on %2$s and %3$s" : "在过去 %1$s,然后 %2$s 和 %3$s", + "_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["%n 分钟后 %1$s,然后 %2$s 和 %3$s"], + "_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["%n 小时后 %1$s,然后 %2$s 和 %3$s"], + "_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["%n 天后 %1$s,然后 %2$s 和 %3$s"], + "_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["%n 周后 %1$s,然后 %2$s 和 %3$s"], + "_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["%n 个月后 %1$s,然后 %2$s 和 %3$s"], + "_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["%n 年后 %1$s,然后 %2$s 和 %3$s"], + "Could not generate next recurrence statement" : "无法生成下一个重复语句", "Cancelled: %1$s" : "已取消:%1$s", "\"%1$s\" has been canceled" : "“%1$s”已取消", "Re: %1$s" : "回复:%1$s", @@ -88,6 +159,7 @@ "When:" : "时间:", "Location:" : "地区:", "Link:" : "链接:", + "Occurring:" : "发生:", "Accept" : "接受", "Decline" : "拒绝", "More options …" : "更多选项", @@ -111,8 +183,16 @@ "October" : "十月", "November" : "十一月", "December" : "十二月", - "First" : "第一个", + "First" : "第一", + "Second" : "第二", + "Third" : "第三", + "Fourth" : "第四", + "Fifth" : "第五", "Last" : "最后一个", + "Second Last" : "倒数第二", + "Third Last" : "倒数第三", + "Fourth Last" : "倒数第四", + "Fifth Last" : "倒数第五", "Contacts" : "联系人", "{actor} created address book {addressbook}" : "{actor} 创建了通讯录 {addressbook}", "You created address book {addressbook}" : "你创建了通讯录 {addressbook}", @@ -141,6 +221,7 @@ "Accounts" : "账号", "System address book which holds all accounts" : "包含所有账号的系统通讯录", "File is not updatable: %1$s" : "无法更新文件:%1$s", + "Failed to get storage for file" : "无法获取文件的存储空间", "Could not write to final file, canceled by hook" : "无法写入最终文件,操作被插件取消", "Could not write file contents" : "无法写入文件内容", "_%n byte_::_%n bytes_" : ["%n字节"], @@ -149,11 +230,14 @@ "Could not rename part file to final file, canceled by hook" : "无法将部分文件重命名为最终文件,操作被插件取消", "Could not rename part file to final file" : "无法将部分文件重命名为最终文件", "Failed to check file size: %1$s" : "检查文件大小失败:%1$s", + "Could not open file: %1$s, file does seem to exist" : "无法打开文件 %1$s,文件似乎不存在", + "Could not open file: %1$s, file doesn't seem to exist" : "无法打开文件 %1$s,文件似乎不存在", "Encryption not ready: %1$s" : "加密不可用:%1$s", "Failed to open file: %1$s" : "打开文件失败:%1$s", "Failed to unlink: %1$s" : "解除链接失败:%1$s", "Failed to write file contents: %1$s" : "写入文件内容失败:%1$s", "File not found: %1$s" : "找不到文件:%1$s", + "Invalid target path" : "目标路径无效", "System is in maintenance mode." : "系统处于维护模式。", "Upgrade needed" : "需要升级", "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "您的 %s 需要配置使用 HTTPS 以在 iOS/macOS 中使用 CalDAV 和 CardDAV。", @@ -183,6 +267,7 @@ "Last day (inclusive)" : "最后一天(含)", "Out of office replacement (optional)" : "外出时工作替代人员(可选)", "Name of the replacement" : "替代人员名称", + "No results." : "没有结果。", "Start typing." : "开始输入", "Short absence status" : "短暂离开状态", "Long absence Message" : "长期离开信息", diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php index dff71cbfaaf..ec84486b556 100644 --- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php @@ -599,6 +599,12 @@ class FilesPlugin extends ServerPlugin { throw new FilesMetadataException('you do not have enough rights to update \'' . $metadataKey . '\' on this node'); } + if ($value === null) { + $metadata->unset($metadataKey); + $filesMetadataManager->saveMetadata($metadata); + return true; + } + // If the metadata is unknown, it defaults to string. try { $type = $knownMetadata->getType($metadataKey); diff --git a/apps/federatedfilesharing/l10n/hu.js b/apps/federatedfilesharing/l10n/hu.js index 9c139778459..56b42048239 100644 --- a/apps/federatedfilesharing/l10n/hu.js +++ b/apps/federatedfilesharing/l10n/hu.js @@ -8,6 +8,8 @@ OC.L10N.register( "Federated Share request sent, you will receive an invitation. Check your notifications." : "Föderált megosztási kérés elküldve, kapni fog egy meghívót. Ellenőrizze az értesítéseit.", "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "A föderált megosztás nem hozható létre, úgy tűnik, hogy a föderálandó kiszolgáló túl régi. (Nextcloud <= 9).", "It is not allowed to send federated group shares from this server." : "Nem küldhet föderált csoportmegosztást erről a kiszolgálóról.", + "Sharing %1$s failed, because this item is already shared with the account %2$s" : "A(z) %1$s megosztása sikertelen, mert már meg van osztva a(z) %2$s fiókkal", + "Not allowed to create a federated share to the same account" : "Azonos fiókkal nem lehet föderált megosztást létrehozni", "Federated shares require read permissions" : "A föderált megosztásokhoz olvasási jogosultság szükséges", "File is already shared with %s" : "A fájl már meg van osztva vele: %s", "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "A(z) %1$s megosztása sikertelen, a(z) %2$s nem található, talán a kiszolgáló jelenleg nem érhető el vagy önaláírt tanúsítványt használ.", @@ -22,16 +24,28 @@ OC.L10N.register( "Federated file sharing" : "Föderált fájlmegosztás", "Provide federated file sharing across servers" : "Föderált fájlmegosztás biztosítása a kiszolgálók között", "Unable to update federated files sharing config" : "A föderált fájlmegosztási konfiguráció nem frissíthető", + "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Beállítás, hogy az emberek hogyan oszthatnak meg kiszolgálók között. Ebbe beleértendők a kiszolgálón lévő emberek közti megosztások és a megosztások is.", + "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Engedélyezés a kiszolgálón lévő embereknek, hogy megosztásokat küldjenek más kiszolgálóknak (ez a lehetőség lehetővé teszi a nyilvános megosztások WebDAV hozzáférését is)", + "Allow people on this server to receive shares from other servers" : "Engedélyezés a kiszolgálón lévő embereknek, hogy megosztásokat fogadjanak más kiszolgálóktól", + "Allow people on this server to send shares to groups on other servers" : "Engedélyezés a kiszolgálón lévő embereknek, hogy megosztásokat küldjenek más kiszolgálók csoportjainak", + "Allow people on this server to receive group shares from other servers" : "Engedélyezés a kiszolgálón lévő embereknek, hogy csoportmegosztásokat fogadjanak más kiszolgálóktól", + "Search global and public address book for people" : "Emberek keresése a globális és a nyilvános címjegyzékben", + "Allow people to publish their data to a global and public address book" : "Engedélyezés az emberek számára, hogy közzétegyék az adataikat a globális és nyilvános címjegyzékben", + "Trusted federation" : "Megbízható föderáció", + "Automatically accept shares from trusted federated accounts and groups by default" : "A megbízható föderált fiókokból és csoportokból származó megosztások automatikus elfogadása alapértelmezés szerint", "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Ossza meg velem a #Nextcloud föderált felhőazonosítóm segítségével, lásd {url}", "Share with me through my #Nextcloud Federated Cloud ID" : "Ossza meg velem a #Nextcloud föderált felhőazonosítóm segítségével ", "Cloud ID copied to the clipboard" : "Felhőazonosító a vágólapra másolva", "Copy to clipboard" : "Másolás a vágólapra", + "Clipboard not available. Please copy the cloud ID manually." : "A vágólap nem érhető el. Másolja át a felhőazonosítót kézileg.", "Copied!" : "Másolva!", "Federated Cloud" : "Föderált felhő", "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" : "Bármelyik Nextcloud-kiszolgálót vagy egyéb Open Cloud Mesh-kompatibilis (OCM) kiszolgálót és szolgáltatást használó felhasználóval megoszthatja adatait. Csak tegye a föderált felhőazonosítóját a megosztási párbeszédablakba. Hasonlóan néz ki: person@cloud.example.com", + "Your Federated Cloud ID" : "Az Ön föderált felhőazonosítója", "Share it so your friends can share files with you:" : "Ossza meg, hogy a barátai is oszthassanak meg Önnel fájlokat:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (korábban Twitter)", + "formerly Twitter" : "korábban Twitter", "Mastodon" : "Mastodon", "Add to your website" : "Adja hozzá saját weboldalához", "Share with me via Nextcloud" : "Ossza meg velem a Nextcloudon keresztül", @@ -41,6 +55,7 @@ OC.L10N.register( "Remote share" : "Távoli megosztás", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Hozzáadja a(z) {name} távoli megosztást innen: {owner}@{remote}?", "Remote share password" : "Jelszó a távoli megosztáshoz", + "Incoming share could not be processed" : "A bejövő megosztás nem dolgozható fel", "Clipboard is not available" : "A vágólap nem érhető el", "Your Federated Cloud ID:" : "Az Ön föderált felhőazonosítója:", "Twitter" : "Twitter", diff --git a/apps/federatedfilesharing/l10n/hu.json b/apps/federatedfilesharing/l10n/hu.json index effee746254..05af5f0debb 100644 --- a/apps/federatedfilesharing/l10n/hu.json +++ b/apps/federatedfilesharing/l10n/hu.json @@ -6,6 +6,8 @@ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Föderált megosztási kérés elküldve, kapni fog egy meghívót. Ellenőrizze az értesítéseit.", "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "A föderált megosztás nem hozható létre, úgy tűnik, hogy a föderálandó kiszolgáló túl régi. (Nextcloud <= 9).", "It is not allowed to send federated group shares from this server." : "Nem küldhet föderált csoportmegosztást erről a kiszolgálóról.", + "Sharing %1$s failed, because this item is already shared with the account %2$s" : "A(z) %1$s megosztása sikertelen, mert már meg van osztva a(z) %2$s fiókkal", + "Not allowed to create a federated share to the same account" : "Azonos fiókkal nem lehet föderált megosztást létrehozni", "Federated shares require read permissions" : "A föderált megosztásokhoz olvasási jogosultság szükséges", "File is already shared with %s" : "A fájl már meg van osztva vele: %s", "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "A(z) %1$s megosztása sikertelen, a(z) %2$s nem található, talán a kiszolgáló jelenleg nem érhető el vagy önaláírt tanúsítványt használ.", @@ -20,16 +22,28 @@ "Federated file sharing" : "Föderált fájlmegosztás", "Provide federated file sharing across servers" : "Föderált fájlmegosztás biztosítása a kiszolgálók között", "Unable to update federated files sharing config" : "A föderált fájlmegosztási konfiguráció nem frissíthető", + "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Beállítás, hogy az emberek hogyan oszthatnak meg kiszolgálók között. Ebbe beleértendők a kiszolgálón lévő emberek közti megosztások és a megosztások is.", + "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Engedélyezés a kiszolgálón lévő embereknek, hogy megosztásokat küldjenek más kiszolgálóknak (ez a lehetőség lehetővé teszi a nyilvános megosztások WebDAV hozzáférését is)", + "Allow people on this server to receive shares from other servers" : "Engedélyezés a kiszolgálón lévő embereknek, hogy megosztásokat fogadjanak más kiszolgálóktól", + "Allow people on this server to send shares to groups on other servers" : "Engedélyezés a kiszolgálón lévő embereknek, hogy megosztásokat küldjenek más kiszolgálók csoportjainak", + "Allow people on this server to receive group shares from other servers" : "Engedélyezés a kiszolgálón lévő embereknek, hogy csoportmegosztásokat fogadjanak más kiszolgálóktól", + "Search global and public address book for people" : "Emberek keresése a globális és a nyilvános címjegyzékben", + "Allow people to publish their data to a global and public address book" : "Engedélyezés az emberek számára, hogy közzétegyék az adataikat a globális és nyilvános címjegyzékben", + "Trusted federation" : "Megbízható föderáció", + "Automatically accept shares from trusted federated accounts and groups by default" : "A megbízható föderált fiókokból és csoportokból származó megosztások automatikus elfogadása alapértelmezés szerint", "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Ossza meg velem a #Nextcloud föderált felhőazonosítóm segítségével, lásd {url}", "Share with me through my #Nextcloud Federated Cloud ID" : "Ossza meg velem a #Nextcloud föderált felhőazonosítóm segítségével ", "Cloud ID copied to the clipboard" : "Felhőazonosító a vágólapra másolva", "Copy to clipboard" : "Másolás a vágólapra", + "Clipboard not available. Please copy the cloud ID manually." : "A vágólap nem érhető el. Másolja át a felhőazonosítót kézileg.", "Copied!" : "Másolva!", "Federated Cloud" : "Föderált felhő", "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" : "Bármelyik Nextcloud-kiszolgálót vagy egyéb Open Cloud Mesh-kompatibilis (OCM) kiszolgálót és szolgáltatást használó felhasználóval megoszthatja adatait. Csak tegye a föderált felhőazonosítóját a megosztási párbeszédablakba. Hasonlóan néz ki: person@cloud.example.com", + "Your Federated Cloud ID" : "Az Ön föderált felhőazonosítója", "Share it so your friends can share files with you:" : "Ossza meg, hogy a barátai is oszthassanak meg Önnel fájlokat:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (korábban Twitter)", + "formerly Twitter" : "korábban Twitter", "Mastodon" : "Mastodon", "Add to your website" : "Adja hozzá saját weboldalához", "Share with me via Nextcloud" : "Ossza meg velem a Nextcloudon keresztül", @@ -39,6 +53,7 @@ "Remote share" : "Távoli megosztás", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Hozzáadja a(z) {name} távoli megosztást innen: {owner}@{remote}?", "Remote share password" : "Jelszó a távoli megosztáshoz", + "Incoming share could not be processed" : "A bejövő megosztás nem dolgozható fel", "Clipboard is not available" : "A vágólap nem érhető el", "Your Federated Cloud ID:" : "Az Ön föderált felhőazonosítója:", "Twitter" : "Twitter", diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js index 8f6acefa302..7cf664a9720 100644 --- a/apps/files/l10n/ca.js +++ b/apps/files/l10n/ca.js @@ -80,6 +80,7 @@ OC.L10N.register( "Go to the \"{dir}\" directory" : "Ves a la carpeta «{dir}»", "Current directory path" : "Camí de la carpeta actual", "Your have used your space quota and cannot upload files anymore" : "Heu utilitzat la quota d'espai i ja no podeu pujar fitxers", + "You do not have permission to upload or create files here." : "No tens permís per pujar o crear arxius aquí.", "Drag and drop files here to upload" : "Arrossegueu i deixeu anar fitxers aquí per a pujar-los", "Favorite" : "En els preferits", "Back" : "Torna", diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json index 595bae9b831..f03edffc921 100644 --- a/apps/files/l10n/ca.json +++ b/apps/files/l10n/ca.json @@ -78,6 +78,7 @@ "Go to the \"{dir}\" directory" : "Ves a la carpeta «{dir}»", "Current directory path" : "Camí de la carpeta actual", "Your have used your space quota and cannot upload files anymore" : "Heu utilitzat la quota d'espai i ja no podeu pujar fitxers", + "You do not have permission to upload or create files here." : "No tens permís per pujar o crear arxius aquí.", "Drag and drop files here to upload" : "Arrossegueu i deixeu anar fitxers aquí per a pujar-los", "Favorite" : "En els preferits", "Back" : "Torna", diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js index bd6c3546a3a..c1deb84602f 100644 --- a/apps/files/l10n/cs.js +++ b/apps/files/l10n/cs.js @@ -80,6 +80,7 @@ OC.L10N.register( "Go to the \"{dir}\" directory" : "Přejít do složky „{dir}“", "Current directory path" : "Stávající popis umístění složky", "Your have used your space quota and cannot upload files anymore" : "Využili jste celou svou kvótu na prostor a už nemůžete nahrávat další soubory", + "You do not have permission to upload or create files here." : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory.", "Drag and drop files here to upload" : "Soubory nahrajete jejich přetažením sem", "Favorite" : "Oblíbené", "Back" : "Zpět", @@ -105,6 +106,7 @@ OC.L10N.register( "Toggle selection for all files and folders" : "Vybrat / zrušit výběr všech souborů a složek", "Name" : "Název", "Size" : "Velikost", + "\"{displayName}\" failed on some elements" : "„{displayName}“ se pro některé prvky nezdařilo", "\"{displayName}\" batch action executed successfully" : "hromadná akce „{displayName}“ úspěšně vykonána", "\"{displayName}\" action failed" : "akce „{displayName}“ se nezdařila", "Actions" : "Akce", @@ -127,6 +129,7 @@ OC.L10N.register( "This name is already in use." : "Tento název už je využíván.", "Create" : "Vytvořit", "Fill template fields" : "Vyplňte kolonky šablony", + "Submitting fields …" : "Odesílání kolonek…", "Submit" : "Odeslat", "Choose a file or folder to transfer" : "Zvolte soubor nebo složku k převedení", "Transfer" : "Převést", @@ -139,11 +142,15 @@ OC.L10N.register( "Choose file or folder to transfer" : "Zvolte soubor nebo složku k převedení", "Change" : "Změnit", "New owner" : "Nový vlastník", + "Keep {old}" : "Ponechat {old}", + "Keep without extension" : "Ponechat bez přípony", + "Use {new}" : "Použít {new}", "Remove extension" : "Odebrat příponu", "Change file extension" : "Změnit příponu souboru", "Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Změna přípony souboru z „{old}“ na „{new}“ může soubor znečitelnit.", "Removing the file extension \"{old}\" may render the file unreadable." : "Odebrání přípony souboru „{old}“ může soubor znečitelnit.", "Adding the file extension \"{new}\" may render the file unreadable." : "Přidání přípony souboru „{new}“ může soubor znečitelnit.", + "Do not show this dialog again." : "Nezobrazovat tento dialog znovu.", "Select file or folder to link to" : "Vyberte soubor nebo složku na kterou odkazovat", "Choose {file}" : "Zvolit {file}", "Share" : "Nasdílet", @@ -164,6 +171,7 @@ OC.L10N.register( "No files in here" : "Žádné soubory", "Upload some content or sync with your devices!" : "Nahrajte nějaký obsah nebo proveďte synchronizaci se svými zařízeními!", "Go back" : "Jít zpět", + "Filter file names …" : "Filtrovat názvy souborů…", "Views" : "Zobrazení", "Files settings" : "Nastavení pro Soubory", "Your files" : "Vaše soubory", @@ -184,6 +192,9 @@ OC.L10N.register( "Copy to clipboard" : "Zkopírovat do schránky", "Use this address to access your Files via WebDAV" : "Tuto adresu použijte pro přístup k vašim souborům prostřednictvím protokolu WebDAV", "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Pokud jste zapnuli 2FA (dvoufaktorovou autentizaci), je třeba kliknutím sem vytvořit a použít nové heslo pro aplikaci.", + "Warnings" : "Varování", + "Prevent warning dialogs from open or reenable them." : "Zabránit dialogům s varováními v otevírání nebo znovupovolení.", + "Show a warning dialog when changing a file extension." : "Při měnění přípony souboru zobrazit varovný dialog.", "Keyboard shortcuts" : "Klávesové zkratky", "Speed up your Files experience with these quick shortcuts." : "Zrychlete svůj dojem ze Souborů pomocí těchto rychlých zkratek.", "Open the actions menu for a file" : "Otevřít nabídku akcí pro soubor", @@ -220,6 +231,7 @@ OC.L10N.register( "Creating file" : "Vytváření souboru", "Save as {displayName}" : "Uložit jako {displayName}", "Save as …" : "Uložit jako…", + "Converting files …" : "Převádění souborů…", "Failed to convert files: {message}" : "Nepodařilo se převést soubory: {message}", "All files failed to be converted" : "Žádný ze souborů se nepodařilo převést", "One file could not be converted: {message}" : "Jeden soubor nebylo možné převést: {message}", @@ -228,6 +240,7 @@ OC.L10N.register( "{count} files successfully converted" : "{count} souborů úspěšně převedeno", "Files successfully converted" : "Soubory úspěšně převedeny", "Failed to convert files" : "Nepodařilo se převést soubory", + "Converting file …" : "Převádění souboru…", "File successfully converted" : "Soubor úspěšně převeden", "Failed to convert file: {message}" : "Nepodařilo se převést soubor: {message}", "Failed to convert file" : "Nepodařilo se převést soubor", @@ -424,6 +437,7 @@ OC.L10N.register( "Upload file" : "Nahrát soubor", "Not favorited" : "Nepřidáno do oblíbených", "An error occurred while trying to update the tags" : "Při pokusu o úpravu štítků došlo k chybě", + "You don't have permission to upload or create files here." : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory.", "Storage informations" : "Informace o úložišti", "Choose file" : "Vyberte soubor", "You don’t have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory", diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json index bb81e4ea44c..e29272b9078 100644 --- a/apps/files/l10n/cs.json +++ b/apps/files/l10n/cs.json @@ -78,6 +78,7 @@ "Go to the \"{dir}\" directory" : "Přejít do složky „{dir}“", "Current directory path" : "Stávající popis umístění složky", "Your have used your space quota and cannot upload files anymore" : "Využili jste celou svou kvótu na prostor a už nemůžete nahrávat další soubory", + "You do not have permission to upload or create files here." : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory.", "Drag and drop files here to upload" : "Soubory nahrajete jejich přetažením sem", "Favorite" : "Oblíbené", "Back" : "Zpět", @@ -103,6 +104,7 @@ "Toggle selection for all files and folders" : "Vybrat / zrušit výběr všech souborů a složek", "Name" : "Název", "Size" : "Velikost", + "\"{displayName}\" failed on some elements" : "„{displayName}“ se pro některé prvky nezdařilo", "\"{displayName}\" batch action executed successfully" : "hromadná akce „{displayName}“ úspěšně vykonána", "\"{displayName}\" action failed" : "akce „{displayName}“ se nezdařila", "Actions" : "Akce", @@ -125,6 +127,7 @@ "This name is already in use." : "Tento název už je využíván.", "Create" : "Vytvořit", "Fill template fields" : "Vyplňte kolonky šablony", + "Submitting fields …" : "Odesílání kolonek…", "Submit" : "Odeslat", "Choose a file or folder to transfer" : "Zvolte soubor nebo složku k převedení", "Transfer" : "Převést", @@ -137,11 +140,15 @@ "Choose file or folder to transfer" : "Zvolte soubor nebo složku k převedení", "Change" : "Změnit", "New owner" : "Nový vlastník", + "Keep {old}" : "Ponechat {old}", + "Keep without extension" : "Ponechat bez přípony", + "Use {new}" : "Použít {new}", "Remove extension" : "Odebrat příponu", "Change file extension" : "Změnit příponu souboru", "Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Změna přípony souboru z „{old}“ na „{new}“ může soubor znečitelnit.", "Removing the file extension \"{old}\" may render the file unreadable." : "Odebrání přípony souboru „{old}“ může soubor znečitelnit.", "Adding the file extension \"{new}\" may render the file unreadable." : "Přidání přípony souboru „{new}“ může soubor znečitelnit.", + "Do not show this dialog again." : "Nezobrazovat tento dialog znovu.", "Select file or folder to link to" : "Vyberte soubor nebo složku na kterou odkazovat", "Choose {file}" : "Zvolit {file}", "Share" : "Nasdílet", @@ -162,6 +169,7 @@ "No files in here" : "Žádné soubory", "Upload some content or sync with your devices!" : "Nahrajte nějaký obsah nebo proveďte synchronizaci se svými zařízeními!", "Go back" : "Jít zpět", + "Filter file names …" : "Filtrovat názvy souborů…", "Views" : "Zobrazení", "Files settings" : "Nastavení pro Soubory", "Your files" : "Vaše soubory", @@ -182,6 +190,9 @@ "Copy to clipboard" : "Zkopírovat do schránky", "Use this address to access your Files via WebDAV" : "Tuto adresu použijte pro přístup k vašim souborům prostřednictvím protokolu WebDAV", "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Pokud jste zapnuli 2FA (dvoufaktorovou autentizaci), je třeba kliknutím sem vytvořit a použít nové heslo pro aplikaci.", + "Warnings" : "Varování", + "Prevent warning dialogs from open or reenable them." : "Zabránit dialogům s varováními v otevírání nebo znovupovolení.", + "Show a warning dialog when changing a file extension." : "Při měnění přípony souboru zobrazit varovný dialog.", "Keyboard shortcuts" : "Klávesové zkratky", "Speed up your Files experience with these quick shortcuts." : "Zrychlete svůj dojem ze Souborů pomocí těchto rychlých zkratek.", "Open the actions menu for a file" : "Otevřít nabídku akcí pro soubor", @@ -218,6 +229,7 @@ "Creating file" : "Vytváření souboru", "Save as {displayName}" : "Uložit jako {displayName}", "Save as …" : "Uložit jako…", + "Converting files …" : "Převádění souborů…", "Failed to convert files: {message}" : "Nepodařilo se převést soubory: {message}", "All files failed to be converted" : "Žádný ze souborů se nepodařilo převést", "One file could not be converted: {message}" : "Jeden soubor nebylo možné převést: {message}", @@ -226,6 +238,7 @@ "{count} files successfully converted" : "{count} souborů úspěšně převedeno", "Files successfully converted" : "Soubory úspěšně převedeny", "Failed to convert files" : "Nepodařilo se převést soubory", + "Converting file …" : "Převádění souboru…", "File successfully converted" : "Soubor úspěšně převeden", "Failed to convert file: {message}" : "Nepodařilo se převést soubor: {message}", "Failed to convert file" : "Nepodařilo se převést soubor", @@ -422,6 +435,7 @@ "Upload file" : "Nahrát soubor", "Not favorited" : "Nepřidáno do oblíbených", "An error occurred while trying to update the tags" : "Při pokusu o úpravu štítků došlo k chybě", + "You don't have permission to upload or create files here." : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory.", "Storage informations" : "Informace o úložišti", "Choose file" : "Vyberte soubor", "You don’t have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory", diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js index ec144c00152..c5ed43577c8 100644 --- a/apps/files/l10n/sr.js +++ b/apps/files/l10n/sr.js @@ -80,6 +80,7 @@ OC.L10N.register( "Go to the \"{dir}\" directory" : "Иди у „{dir}” дирекотријум", "Current directory path" : "Путања текућег директоријума", "Your have used your space quota and cannot upload files anymore" : "Искористили сте квоту простора и више не можете да отпремате фајлове", + "You do not have permission to upload or create files here." : "Немате дозволу да овде отпремите или креирате фајлове.", "Drag and drop files here to upload" : "Да отпремите, превуците и отпустите фајлове овде", "Favorite" : "Омиљено", "Back" : "Назад", @@ -105,6 +106,7 @@ OC.L10N.register( "Toggle selection for all files and folders" : "Укљ./искљ. избор за све фајлове и фолдере", "Name" : "Назив", "Size" : "Величина", + "\"{displayName}\" failed on some elements" : "„{displayName}” није успело на неким елементима", "\"{displayName}\" batch action executed successfully" : "Пакетна акција „{displayName}” се успешно извршила", "\"{displayName}\" action failed" : "Акција „{displayName}” није успела", "Actions" : "Радње", @@ -127,6 +129,7 @@ OC.L10N.register( "This name is already in use." : "Ово име се већ користи.", "Create" : "Направи", "Fill template fields" : "Попуните поља шаблона", + "Submitting fields …" : "Поља се подносе…", "Submit" : "Пошаљи", "Choose a file or folder to transfer" : "Одаберите фајл или фасциклу за пренос", "Transfer" : "Пренеси", @@ -139,11 +142,15 @@ OC.L10N.register( "Choose file or folder to transfer" : "Одаберите фајл или фасциклу за пренос", "Change" : "Измени", "New owner" : "Нови власник", + "Keep {old}" : "Задржи {old}", + "Keep without extension" : "Задржи без екстензије", + "Use {new}" : "Користи {new}", "Remove extension" : "Уклони екстензију фајла", "Change file extension" : "Промени екстензију фајла", "Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Ако екстензију „{old}” промените на „{new}” фајл може да постане нечитљив.", "Removing the file extension \"{old}\" may render the file unreadable." : "Ако уклоните екстензију „{old}” фајл може да постане нечитљив.", "Adding the file extension \"{new}\" may render the file unreadable." : "Ако додате екстензију „{new}” фајл може да постане нечитљив.", + "Do not show this dialog again." : "Не приказуј поново овај дијалог.", "Select file or folder to link to" : "Изаберите фајл или фолдер на који показује линк", "Choose {file}" : "Изабери {file}", "Share" : "Пдели", @@ -164,6 +171,7 @@ OC.L10N.register( "No files in here" : "Овде нема фајлова", "Upload some content or sync with your devices!" : "Отпремите неки садржај или синхронизујте са вашим уређајима!", "Go back" : "Иди назад", + "Filter file names …" : "Филтрирање имена фајлова…", "Views" : "Прикази", "Files settings" : "Подешавања фајлова", "Your files" : "Ваши фајлови", @@ -184,6 +192,9 @@ OC.L10N.register( "Copy to clipboard" : "Копирај у оставу", "Use this address to access your Files via WebDAV" : "Користи ову адресу да приступате Вашим фајловима преко ВебДАВа", "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако сте укључили 2FA, морате кликом овде да крерате нову лозинку апликације.", + "Warnings" : "Упозорења", + "Prevent warning dialogs from open or reenable them." : "Спречава да се дијалози упозорења отворе или да се поново укључе.", + "Show a warning dialog when changing a file extension." : "Прикажи дијалог упозорења када се мења екстензија фајла.", "Keyboard shortcuts" : "Пречице на тастатури", "Speed up your Files experience with these quick shortcuts." : "Убрзајте рад у апликацији Фајлови следећим брзим пречицама.", "Open the actions menu for a file" : "Отвори мени са акцијама над фајлом", @@ -220,6 +231,7 @@ OC.L10N.register( "Creating file" : "Креирање фајла", "Save as {displayName}" : "Сачувај као {displayName}", "Save as …" : "Сачувај као", + "Converting files …" : "Фајлови се конвертују", "Failed to convert files: {message}" : "Није успела конверзија фајлова: {message}", "All files failed to be converted" : "Ниједан фајл није могао да се конвертује", "One file could not be converted: {message}" : "Један фајл није могао да се конвертује: {message}", @@ -228,6 +240,7 @@ OC.L10N.register( "{count} files successfully converted" : "Успешно је конвертовано {count} фајлова", "Files successfully converted" : "Фајлови су успешно конвертовани", "Failed to convert files" : "Није успела конверзија фајлова", + "Converting file …" : "Фајл се конвертује", "File successfully converted" : "Фајл је успешно конвертован", "Failed to convert file: {message}" : "Није успела конверзија фајла: {message}", "Failed to convert file" : "Фајл није могао да се конвертује", @@ -270,6 +283,7 @@ OC.L10N.register( "Open file locally" : "Отвори фајл локално", "The file should now open on your device. If it doesn't, please check that you have the desktop app installed." : "Фајл би сада требало да се отвори на вашем уређају. Ако се не отвори, проверите да ли сте инсталирали декстоп апликацију.", "Retry and close" : "Покушај поново и затвори", + "Open online" : "Отвори на мрежи", "Failed to redirect to client" : "Преусмеравање на клијента није успело", "Open locally" : "Отвори локално", "Rename" : "Преименуј", @@ -423,6 +437,7 @@ OC.L10N.register( "Upload file" : "Отпреми фајл", "Not favorited" : "Није омиљено", "An error occurred while trying to update the tags" : "Дошло је до грешке при покушају ажурирања ознака", + "You don't have permission to upload or create files here." : "Немате дозволу да овде отпремите или креирате фајлове.", "Storage informations" : "Информације о складишту", "Choose file" : "Изаберите фајл", "You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове", diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json index 64e1a3ae90a..77698e52219 100644 --- a/apps/files/l10n/sr.json +++ b/apps/files/l10n/sr.json @@ -78,6 +78,7 @@ "Go to the \"{dir}\" directory" : "Иди у „{dir}” дирекотријум", "Current directory path" : "Путања текућег директоријума", "Your have used your space quota and cannot upload files anymore" : "Искористили сте квоту простора и више не можете да отпремате фајлове", + "You do not have permission to upload or create files here." : "Немате дозволу да овде отпремите или креирате фајлове.", "Drag and drop files here to upload" : "Да отпремите, превуците и отпустите фајлове овде", "Favorite" : "Омиљено", "Back" : "Назад", @@ -103,6 +104,7 @@ "Toggle selection for all files and folders" : "Укљ./искљ. избор за све фајлове и фолдере", "Name" : "Назив", "Size" : "Величина", + "\"{displayName}\" failed on some elements" : "„{displayName}” није успело на неким елементима", "\"{displayName}\" batch action executed successfully" : "Пакетна акција „{displayName}” се успешно извршила", "\"{displayName}\" action failed" : "Акција „{displayName}” није успела", "Actions" : "Радње", @@ -125,6 +127,7 @@ "This name is already in use." : "Ово име се већ користи.", "Create" : "Направи", "Fill template fields" : "Попуните поља шаблона", + "Submitting fields …" : "Поља се подносе…", "Submit" : "Пошаљи", "Choose a file or folder to transfer" : "Одаберите фајл или фасциклу за пренос", "Transfer" : "Пренеси", @@ -137,11 +140,15 @@ "Choose file or folder to transfer" : "Одаберите фајл или фасциклу за пренос", "Change" : "Измени", "New owner" : "Нови власник", + "Keep {old}" : "Задржи {old}", + "Keep without extension" : "Задржи без екстензије", + "Use {new}" : "Користи {new}", "Remove extension" : "Уклони екстензију фајла", "Change file extension" : "Промени екстензију фајла", "Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Ако екстензију „{old}” промените на „{new}” фајл може да постане нечитљив.", "Removing the file extension \"{old}\" may render the file unreadable." : "Ако уклоните екстензију „{old}” фајл може да постане нечитљив.", "Adding the file extension \"{new}\" may render the file unreadable." : "Ако додате екстензију „{new}” фајл може да постане нечитљив.", + "Do not show this dialog again." : "Не приказуј поново овај дијалог.", "Select file or folder to link to" : "Изаберите фајл или фолдер на који показује линк", "Choose {file}" : "Изабери {file}", "Share" : "Пдели", @@ -162,6 +169,7 @@ "No files in here" : "Овде нема фајлова", "Upload some content or sync with your devices!" : "Отпремите неки садржај или синхронизујте са вашим уређајима!", "Go back" : "Иди назад", + "Filter file names …" : "Филтрирање имена фајлова…", "Views" : "Прикази", "Files settings" : "Подешавања фајлова", "Your files" : "Ваши фајлови", @@ -182,6 +190,9 @@ "Copy to clipboard" : "Копирај у оставу", "Use this address to access your Files via WebDAV" : "Користи ову адресу да приступате Вашим фајловима преко ВебДАВа", "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако сте укључили 2FA, морате кликом овде да крерате нову лозинку апликације.", + "Warnings" : "Упозорења", + "Prevent warning dialogs from open or reenable them." : "Спречава да се дијалози упозорења отворе или да се поново укључе.", + "Show a warning dialog when changing a file extension." : "Прикажи дијалог упозорења када се мења екстензија фајла.", "Keyboard shortcuts" : "Пречице на тастатури", "Speed up your Files experience with these quick shortcuts." : "Убрзајте рад у апликацији Фајлови следећим брзим пречицама.", "Open the actions menu for a file" : "Отвори мени са акцијама над фајлом", @@ -218,6 +229,7 @@ "Creating file" : "Креирање фајла", "Save as {displayName}" : "Сачувај као {displayName}", "Save as …" : "Сачувај као", + "Converting files …" : "Фајлови се конвертују", "Failed to convert files: {message}" : "Није успела конверзија фајлова: {message}", "All files failed to be converted" : "Ниједан фајл није могао да се конвертује", "One file could not be converted: {message}" : "Један фајл није могао да се конвертује: {message}", @@ -226,6 +238,7 @@ "{count} files successfully converted" : "Успешно је конвертовано {count} фајлова", "Files successfully converted" : "Фајлови су успешно конвертовани", "Failed to convert files" : "Није успела конверзија фајлова", + "Converting file …" : "Фајл се конвертује", "File successfully converted" : "Фајл је успешно конвертован", "Failed to convert file: {message}" : "Није успела конверзија фајла: {message}", "Failed to convert file" : "Фајл није могао да се конвертује", @@ -268,6 +281,7 @@ "Open file locally" : "Отвори фајл локално", "The file should now open on your device. If it doesn't, please check that you have the desktop app installed." : "Фајл би сада требало да се отвори на вашем уређају. Ако се не отвори, проверите да ли сте инсталирали декстоп апликацију.", "Retry and close" : "Покушај поново и затвори", + "Open online" : "Отвори на мрежи", "Failed to redirect to client" : "Преусмеравање на клијента није успело", "Open locally" : "Отвори локално", "Rename" : "Преименуј", @@ -421,6 +435,7 @@ "Upload file" : "Отпреми фајл", "Not favorited" : "Није омиљено", "An error occurred while trying to update the tags" : "Дошло је до грешке при покушају ажурирања ознака", + "You don't have permission to upload or create files here." : "Немате дозволу да овде отпремите или креирате фајлове.", "Storage informations" : "Информације о складишту", "Choose file" : "Изаберите фајл", "You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове", diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index e59e81391fd..a9c4694b0f7 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -80,6 +80,7 @@ OC.L10N.register( "Go to the \"{dir}\" directory" : "Gå till \"{dir}\" mappen", "Current directory path" : "Aktuell katalogsökväg", "Your have used your space quota and cannot upload files anymore" : "Du har använt din utrymmeskvot och kan inte längre ladda upp filer", + "You do not have permission to upload or create files here." : "Du har inte behörighet att ladda upp eller skapa filer här.", "Drag and drop files here to upload" : "Dra och släpp filer här för att ladda upp", "Favorite" : "Favorit", "Back" : "Tillbaka", diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 3682bd7eff7..c7a595e0649 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -78,6 +78,7 @@ "Go to the \"{dir}\" directory" : "Gå till \"{dir}\" mappen", "Current directory path" : "Aktuell katalogsökväg", "Your have used your space quota and cannot upload files anymore" : "Du har använt din utrymmeskvot och kan inte längre ladda upp filer", + "You do not have permission to upload or create files here." : "Du har inte behörighet att ladda upp eller skapa filer här.", "Drag and drop files here to upload" : "Dra och släpp filer här för att ladda upp", "Favorite" : "Favorit", "Back" : "Tillbaka", diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index 33d87b5e06b..252a82661e0 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -80,6 +80,7 @@ OC.L10N.register( "Go to the \"{dir}\" directory" : "Перейти до каталогу \"{dir}\"", "Current directory path" : "Шлях до поточного каталогу", "Your have used your space quota and cannot upload files anymore" : "Ви вже використали квоту на місце та не можете завантажувати файли", + "You do not have permission to upload or create files here." : "У вас відсутній дозвіл завантажувати або створювати тут файли.", "Drag and drop files here to upload" : "Перетягніть файли сюди для завантаження", "Favorite" : "Додати зірочку", "Back" : "Назад", @@ -130,7 +131,7 @@ OC.L10N.register( "Fill template fields" : "Заповнити поля шаблону", "Submitting fields …" : "Надсилання полів ...", "Submit" : "Відправити", - "Choose a file or folder to transfer" : "Виберіть файл або каталог для передавання", + "Choose a file or folder to transfer" : "Виберіть файл або каталог, права на який ви бажаєте передати", "Transfer" : "Передати", "Transfer {path} to {userid}" : "Передати {path} користувачеві {userid}", "Invalid path selected" : "Вибрано неправильний шлях", @@ -138,7 +139,7 @@ OC.L10N.register( "Ownership transfer request sent" : "Запит на передавання прав власника надіслано", "Cannot transfer ownership of a file or folder you do not own" : "Неможливо передати права власності на файл або каталог, якими ви не володієте", "Transfer ownership of a file or folder" : "Передавання прав власника на файл або каталог", - "Choose file or folder to transfer" : "Виберіть файл або каталог для передавання", + "Choose file or folder to transfer" : "Виберіть файл або каталог, права на який ви бажаєте передати", "Change" : "Змінити", "New owner" : "Новий власник", "Keep {old}" : "Зберегти {old}", diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index 82aaba958d8..e66b4666723 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -78,6 +78,7 @@ "Go to the \"{dir}\" directory" : "Перейти до каталогу \"{dir}\"", "Current directory path" : "Шлях до поточного каталогу", "Your have used your space quota and cannot upload files anymore" : "Ви вже використали квоту на місце та не можете завантажувати файли", + "You do not have permission to upload or create files here." : "У вас відсутній дозвіл завантажувати або створювати тут файли.", "Drag and drop files here to upload" : "Перетягніть файли сюди для завантаження", "Favorite" : "Додати зірочку", "Back" : "Назад", @@ -128,7 +129,7 @@ "Fill template fields" : "Заповнити поля шаблону", "Submitting fields …" : "Надсилання полів ...", "Submit" : "Відправити", - "Choose a file or folder to transfer" : "Виберіть файл або каталог для передавання", + "Choose a file or folder to transfer" : "Виберіть файл або каталог, права на який ви бажаєте передати", "Transfer" : "Передати", "Transfer {path} to {userid}" : "Передати {path} користувачеві {userid}", "Invalid path selected" : "Вибрано неправильний шлях", @@ -136,7 +137,7 @@ "Ownership transfer request sent" : "Запит на передавання прав власника надіслано", "Cannot transfer ownership of a file or folder you do not own" : "Неможливо передати права власності на файл або каталог, якими ви не володієте", "Transfer ownership of a file or folder" : "Передавання прав власника на файл або каталог", - "Choose file or folder to transfer" : "Виберіть файл або каталог для передавання", + "Choose file or folder to transfer" : "Виберіть файл або каталог, права на який ви бажаєте передати", "Change" : "Змінити", "New owner" : "Новий власник", "Keep {old}" : "Зберегти {old}", diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js index 2278a220e64..9070a140d1f 100644 --- a/apps/files/l10n/zh_TW.js +++ b/apps/files/l10n/zh_TW.js @@ -80,6 +80,7 @@ OC.L10N.register( "Go to the \"{dir}\" directory" : "前往「{dir}」目錄", "Current directory path" : "目前目錄路徑", "Your have used your space quota and cannot upload files anymore" : "您已用完您的空間配額,無法再上傳檔案", + "You do not have permission to upload or create files here." : "您無權在此上傳或建立檔案。", "Drag and drop files here to upload" : "將檔案拖放到此處以上傳", "Favorite" : "喜愛", "Back" : "返回", @@ -105,6 +106,7 @@ OC.L10N.register( "Toggle selection for all files and folders" : "切換所有檔案和資料夾的選取", "Name" : "名稱", "Size" : "大小", + "\"{displayName}\" failed on some elements" : "「{displayName}」在某些元素上失敗", "\"{displayName}\" batch action executed successfully" : "「{displayName}」批次動作執行成功", "\"{displayName}\" action failed" : "「{displayName}」操作失敗", "Actions" : "動作", @@ -435,6 +437,7 @@ OC.L10N.register( "Upload file" : "上傳檔案", "Not favorited" : "未加入至喜愛", "An error occurred while trying to update the tags" : "更新標籤時發生錯誤", + "You don't have permission to upload or create files here." : "您無權在此上傳或建立檔案。", "Storage informations" : "儲存空間資訊", "Choose file" : "選擇檔案", "You don’t have permission to upload or create files here" : "您沒有權限在這裡上傳或建立檔案", diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json index 758d62d882d..3e2cf0eee55 100644 --- a/apps/files/l10n/zh_TW.json +++ b/apps/files/l10n/zh_TW.json @@ -78,6 +78,7 @@ "Go to the \"{dir}\" directory" : "前往「{dir}」目錄", "Current directory path" : "目前目錄路徑", "Your have used your space quota and cannot upload files anymore" : "您已用完您的空間配額,無法再上傳檔案", + "You do not have permission to upload or create files here." : "您無權在此上傳或建立檔案。", "Drag and drop files here to upload" : "將檔案拖放到此處以上傳", "Favorite" : "喜愛", "Back" : "返回", @@ -103,6 +104,7 @@ "Toggle selection for all files and folders" : "切換所有檔案和資料夾的選取", "Name" : "名稱", "Size" : "大小", + "\"{displayName}\" failed on some elements" : "「{displayName}」在某些元素上失敗", "\"{displayName}\" batch action executed successfully" : "「{displayName}」批次動作執行成功", "\"{displayName}\" action failed" : "「{displayName}」操作失敗", "Actions" : "動作", @@ -433,6 +435,7 @@ "Upload file" : "上傳檔案", "Not favorited" : "未加入至喜愛", "An error occurred while trying to update the tags" : "更新標籤時發生錯誤", + "You don't have permission to upload or create files here." : "您無權在此上傳或建立檔案。", "Storage informations" : "儲存空間資訊", "Choose file" : "選擇檔案", "You don’t have permission to upload or create files here" : "您沒有權限在這裡上傳或建立檔案", diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index 625da2baf55..d02dd933926 100644 --- a/apps/files_sharing/l10n/cs.js +++ b/apps/files_sharing/l10n/cs.js @@ -277,6 +277,7 @@ OC.L10N.register( "Edit" : "Úpravy", "Share" : "Sdílet", "Delete" : "Smazat", + "Password field cannot be empty" : "Kolonku heslo je třeba vyplnit", "Replace current password" : "Nahradit stávající heslo", "Failed to generate a new token" : "Nepodařilo se vytvořit nový token", "Allow upload and editing" : "Povolit nahrávání a úpravy", @@ -414,6 +415,7 @@ OC.L10N.register( "Download all files" : "Stáhnout všechny soubory", "Search for share recipients" : "Vyhledat příjemce sdílení", "No recommendations. Start typing." : "Žádná doporučení. Pište", + "Password field can't be empty" : "Kolonku heslo je třeba vyplnit", "Allow download" : "Umožnit stahování", "Share expire date saved" : "Datum skončení platnosti sdílení uloženo", "You are not allowed to edit link shares that you don't own" : "Nemáte oprávnění upravovat sdílení odkazem, která nevlastníte", diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json index ca94c4a165e..2a4f4775f37 100644 --- a/apps/files_sharing/l10n/cs.json +++ b/apps/files_sharing/l10n/cs.json @@ -275,6 +275,7 @@ "Edit" : "Úpravy", "Share" : "Sdílet", "Delete" : "Smazat", + "Password field cannot be empty" : "Kolonku heslo je třeba vyplnit", "Replace current password" : "Nahradit stávající heslo", "Failed to generate a new token" : "Nepodařilo se vytvořit nový token", "Allow upload and editing" : "Povolit nahrávání a úpravy", @@ -412,6 +413,7 @@ "Download all files" : "Stáhnout všechny soubory", "Search for share recipients" : "Vyhledat příjemce sdílení", "No recommendations. Start typing." : "Žádná doporučení. Pište", + "Password field can't be empty" : "Kolonku heslo je třeba vyplnit", "Allow download" : "Umožnit stahování", "Share expire date saved" : "Datum skončení platnosti sdílení uloženo", "You are not allowed to edit link shares that you don't own" : "Nemáte oprávnění upravovat sdílení odkazem, která nevlastníte", diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js index 53d59a4b5a4..e43fc7c8ed8 100644 --- a/apps/files_sharing/l10n/sr.js +++ b/apps/files_sharing/l10n/sr.js @@ -277,6 +277,7 @@ OC.L10N.register( "Edit" : "Измени", "Share" : "Подели", "Delete" : "Избриши", + "Password field cannot be empty" : "Поље лозинке не може да буде празно", "Replace current password" : "Замени текућу лозинку", "Failed to generate a new token" : "Није успело генерисање новог жетона", "Allow upload and editing" : "Дозволи отпремање и уређивање", @@ -414,6 +415,7 @@ OC.L10N.register( "Download all files" : "Преузми све фајлове", "Search for share recipients" : "Претрага прималаца дељења", "No recommendations. Start typing." : "Нема препорука. Започните куцање.", + "Password field can't be empty" : "Поље лозинке не може да буде празно", "Allow download" : "Дозволи преузимање", "Share expire date saved" : "Сачуван је датум истека дељења", "You are not allowed to edit link shares that you don't own" : "Није вам дозвољено да уређујете дељења линком која нису ваше власништво", diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json index 79d38959348..fb3f7809a85 100644 --- a/apps/files_sharing/l10n/sr.json +++ b/apps/files_sharing/l10n/sr.json @@ -275,6 +275,7 @@ "Edit" : "Измени", "Share" : "Подели", "Delete" : "Избриши", + "Password field cannot be empty" : "Поље лозинке не може да буде празно", "Replace current password" : "Замени текућу лозинку", "Failed to generate a new token" : "Није успело генерисање новог жетона", "Allow upload and editing" : "Дозволи отпремање и уређивање", @@ -412,6 +413,7 @@ "Download all files" : "Преузми све фајлове", "Search for share recipients" : "Претрага прималаца дељења", "No recommendations. Start typing." : "Нема препорука. Започните куцање.", + "Password field can't be empty" : "Поље лозинке не може да буде празно", "Allow download" : "Дозволи преузимање", "Share expire date saved" : "Сачуван је датум истека дељења", "You are not allowed to edit link shares that you don't own" : "Није вам дозвољено да уређујете дељења линком која нису ваше власништво", diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js index 2ada4766ac7..ce5d41888c9 100644 --- a/apps/files_sharing/l10n/sv.js +++ b/apps/files_sharing/l10n/sv.js @@ -149,7 +149,7 @@ OC.L10N.register( "Select a destination" : "Välj en destination", "Select" : "Välj", "What are you requesting?" : "Vad begär du?", - "Request subject" : "Begär ämne", + "Request subject" : "Ämne för begäran", "Birthday party photos, History assignment…" : "Foton på födelsedagsfester, historiauppgift...", "Where should these files go?" : "Vart ska dessa filer ta vägen?", "Upload destination" : "Destination för uppladdning", @@ -277,6 +277,7 @@ OC.L10N.register( "Edit" : "Ändra", "Share" : "Dela", "Delete" : "Ta bort", + "Password field cannot be empty" : "Lösenordsfältet får inte vara tomt", "Replace current password" : "Ersätt nuvarande lösenord", "Failed to generate a new token" : "Kunde inte generera en ny token", "Allow upload and editing" : "Tillåt uppladdning och redigering", diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json index 6c3a46dc076..bfc34080103 100644 --- a/apps/files_sharing/l10n/sv.json +++ b/apps/files_sharing/l10n/sv.json @@ -147,7 +147,7 @@ "Select a destination" : "Välj en destination", "Select" : "Välj", "What are you requesting?" : "Vad begär du?", - "Request subject" : "Begär ämne", + "Request subject" : "Ämne för begäran", "Birthday party photos, History assignment…" : "Foton på födelsedagsfester, historiauppgift...", "Where should these files go?" : "Vart ska dessa filer ta vägen?", "Upload destination" : "Destination för uppladdning", @@ -275,6 +275,7 @@ "Edit" : "Ändra", "Share" : "Dela", "Delete" : "Ta bort", + "Password field cannot be empty" : "Lösenordsfältet får inte vara tomt", "Replace current password" : "Ersätt nuvarande lösenord", "Failed to generate a new token" : "Kunde inte generera en ny token", "Allow upload and editing" : "Tillåt uppladdning och redigering", diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js index a04fa0103f8..76f6f62c735 100644 --- a/apps/files_sharing/l10n/uk.js +++ b/apps/files_sharing/l10n/uk.js @@ -276,6 +276,7 @@ OC.L10N.register( "Edit" : "Редагувати", "Share" : "Спільне", "Delete" : "Вилучити", + "Password field cannot be empty" : "Поле з паролем має бути заповнено", "Replace current password" : "Замінити поточний пароль", "Failed to generate a new token" : "Не вдалося створити новий токен", "Allow upload and editing" : "Може завантажувати та редагувати", diff --git a/apps/files_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json index 371c0de24c1..909a184aaea 100644 --- a/apps/files_sharing/l10n/uk.json +++ b/apps/files_sharing/l10n/uk.json @@ -274,6 +274,7 @@ "Edit" : "Редагувати", "Share" : "Спільне", "Delete" : "Вилучити", + "Password field cannot be empty" : "Поле з паролем має бути заповнено", "Replace current password" : "Замінити поточний пароль", "Failed to generate a new token" : "Не вдалося створити новий токен", "Allow upload and editing" : "Може завантажувати та редагувати", diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js index ac77080e099..68bf89947a0 100644 --- a/apps/files_sharing/l10n/zh_TW.js +++ b/apps/files_sharing/l10n/zh_TW.js @@ -277,6 +277,7 @@ OC.L10N.register( "Edit" : "編輯", "Share" : "分享", "Delete" : "刪除", + "Password field cannot be empty" : "密碼欄位不能為空", "Replace current password" : "取代目前密碼", "Failed to generate a new token" : "產生新權杖失敗", "Allow upload and editing" : "允許上傳及編輯", @@ -414,6 +415,7 @@ OC.L10N.register( "Download all files" : "下載所有檔案", "Search for share recipients" : "搜尋分享接收者", "No recommendations. Start typing." : "沒有建議。請開始輸入。", + "Password field can't be empty" : "密碼欄位不能為空", "Allow download" : "允許下載", "Share expire date saved" : "已儲存分享過期日期", "You are not allowed to edit link shares that you don't own" : "您無權編輯不屬於您的連結分享", diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json index 3cebc89d7f2..939c2d8b1f2 100644 --- a/apps/files_sharing/l10n/zh_TW.json +++ b/apps/files_sharing/l10n/zh_TW.json @@ -275,6 +275,7 @@ "Edit" : "編輯", "Share" : "分享", "Delete" : "刪除", + "Password field cannot be empty" : "密碼欄位不能為空", "Replace current password" : "取代目前密碼", "Failed to generate a new token" : "產生新權杖失敗", "Allow upload and editing" : "允許上傳及編輯", @@ -412,6 +413,7 @@ "Download all files" : "下載所有檔案", "Search for share recipients" : "搜尋分享接收者", "No recommendations. Start typing." : "沒有建議。請開始輸入。", + "Password field can't be empty" : "密碼欄位不能為空", "Allow download" : "允許下載", "Share expire date saved" : "已儲存分享過期日期", "You are not allowed to edit link shares that you don't own" : "您無權編輯不屬於您的連結分享", diff --git a/apps/files_sharing/src/router/index.ts b/apps/files_sharing/src/router/index.ts index 6a417975e32..fa613dd364f 100644 --- a/apps/files_sharing/src/router/index.ts +++ b/apps/files_sharing/src/router/index.ts @@ -3,13 +3,13 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ import type { RawLocation, Route } from 'vue-router' -import type { ErrorHandler } from 'vue-router/types/router.d.ts' import { loadState } from '@nextcloud/initial-state' import { generateUrl } from '@nextcloud/router' import queryString from 'query-string' -import Router from 'vue-router' +import Router, { isNavigationFailure, NavigationFailureType } from 'vue-router' import Vue from 'vue' +import logger from '../services/logger' const view = loadState<string>('files_sharing', 'view') const sharingToken = loadState<string>('files_sharing', 'sharingToken') @@ -17,10 +17,32 @@ const sharingToken = loadState<string>('files_sharing', 'sharingToken') Vue.use(Router) // Prevent router from throwing errors when we're already on the page we're trying to go to -const originalPush = Router.prototype.push as (to, onComplete?, onAbort?) => Promise<Route> -Router.prototype.push = function push(to: RawLocation, onComplete?: ((route: Route) => void) | undefined, onAbort?: ErrorHandler | undefined): Promise<Route> { - if (onComplete || onAbort) return originalPush.call(this, to, onComplete, onAbort) - return originalPush.call(this, to).catch(err => err) +const originalPush = Router.prototype.push +Router.prototype.push = (function(this: Router, ...args: Parameters<typeof originalPush>) { + if (args.length > 1) { + return originalPush.call(this, ...args) + } + return originalPush.call<Router, [RawLocation], Promise<Route>>(this, args[0]).catch(ignoreDuplicateNavigation) +}) as typeof originalPush + +const originalReplace = Router.prototype.replace +Router.prototype.replace = (function(this: Router, ...args: Parameters<typeof originalReplace>) { + if (args.length > 1) { + return originalReplace.call(this, ...args) + } + return originalReplace.call<Router, [RawLocation], Promise<Route>>(this, args[0]).catch(ignoreDuplicateNavigation) +}) as typeof originalReplace + +/** + * Ignore duplicated-navigation error but forward real exceptions + * @param error The thrown error + */ +function ignoreDuplicateNavigation(error: unknown): void { + if (isNavigationFailure(error, NavigationFailureType.duplicated)) { + logger.debug('Ignoring duplicated navigation from vue-router', { error }) + } else { + throw error + } } const router = new Router({ diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js index b50a7e8e3b0..e7a77061d3f 100644 --- a/apps/settings/l10n/cs.js +++ b/apps/settings/l10n/cs.js @@ -131,6 +131,7 @@ OC.L10N.register( "Unlimited" : "Neomezeně", "Verifying" : "Ověřuje se", "Allowed admin IP ranges" : "Rozsahy IP adres, ze kterých je možné provádět správu", + "Admin IP filtering isn't applied." : "Filtrování IP adres pro správu není uplatněno.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Klíč nastavení „%1$s“ očekává pole (namísto toho nalezeno%2$s). Ověřování IP rozsahu pro správu nebude uplatňováno. ", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Klíč nastavení „%1$s“ obsahuje neplatný IP rozsah(y): „%2$s“", "Admin IP filtering is correctly configured." : "Filtrování IP adres pro správu je nastaveno správně.", @@ -163,6 +164,7 @@ OC.L10N.register( "Database missing indices" : "V databázi chybí indexy", "Missing indices:" : "Chybějící rejstříky:", "\"%s\" in table \"%s\"" : "„%s“ v tabulce „%s“", + "Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them." : "Zjištěny některé chybějící volitelné indexy. Nové indexy jsou průběžně přidávány (do Nextcloudu nebo instalovaných aplikací) pro zlepšení výkonu databáze. Vytváření indexů může dočasně snížit výkon systému a proto nejsou indexy vytvářeny automaticky během aktualizací. Jakmile jsou indexy vytvořeny, databázové operace by měly být rychlejší. K vytvoření chybějících indexů použijte příkaz `occ db:add-missing-indices`. ", "Database missing primary keys" : "V databázi chybí primární klíče", "Missing primary key on table \"%s\"." : "Chybí primární klíč v tabulce „%s“.", "The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "V databázi chybí některé primární klíče. Vzhledem k tomu, že přidání primárních klíčů do velkých tabulek může nějakou dobu trvat, nebyly přidány automaticky. Spuštěním příkazu „occ db:add-missing-primary-keys“ lze tyto chybějící primární klíče přidat ručně, zatímco instance běží.", @@ -425,7 +427,7 @@ OC.L10N.register( "Actions" : "Akce", "Results from other categories" : "Výsledky z ostatních kategorií", "No apps found for your version" : "Nenalezeny žádné aplikace pro vámi využívanou verzi", - "_%n app has an update available_::_%n apps have an update available_" : ["Pro %n aplikaci je k dispozici aktualizace","Pro %n aplikace jsou k dispozici aktualizace","Pro %n aplikací jsou k dispozici aktualizace","Pro %n aplikací jsou k dispozici aktualizace"], + "_%n app has an update available_::_%n apps have an update available_" : ["Pro %n aplikaci je k dispozici aktualizace","Pro %n aplikace jsou k dispozici aktualizace","Pro %n aplikací jsou k dispozici aktualizace","Pro %n aplikace jsou k dispozici aktualizace"], "_Update_::_Update all_" : ["Aktualizovat","Aktualizovat vše","Aktualizovat vše","Aktualizovat vše"], "Could not load app discover section" : "Nepodařilo se načíst sekci objevování aplikací", "Could not render element" : "Prvek se nepodařilo vykreslit", @@ -683,8 +685,8 @@ OC.L10N.register( "Language" : "Jazyk", "Set default language" : "Nastavit výchozí jazyk", "Add new account" : "Přidat nový účet", - "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} účet …","{userCount} účty …","{userCount} účtů …","{userCount} účtů …"], - "_{userCount} account_::_{userCount} accounts_" : ["{userCount} účet","{userCount} účty","{userCount} účtů","{userCount} účtů"], + "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} účet …","{userCount} účty …","{userCount} účtů …","{userCount} účty …"], + "_{userCount} account_::_{userCount} accounts_" : ["{userCount} účet","{userCount} účty","{userCount} účtů","{userCount} účty"], "Total rows summary" : "Celkový souhrn řádek", "Scroll to load more rows" : "Další řádky načtete posunutím dolů", "Password or insufficient permissions message" : "Zpráva o heslu nebo nedostatečném oprávnění", @@ -711,7 +713,9 @@ OC.L10N.register( "Account deletion" : "Smazání účtu", "Delete {userid}'s account" : "Smazat účet {userid}", "Display name was successfully changed" : "Zobrazené jméno bylo úspěšně změněno", + "Password can't be empty" : "Heslo je třeba vyplnit", "Password was successfully changed" : "Heslo bylo úspěšně změněno", + "Email can't be empty" : "E-mail je třeba vyplnit", "Email was successfully changed" : "E-mail byl úspěšně změněn", "Welcome mail sent!" : "Uvítací e-mail odeslán!", "Loading account …" : "Načítání účtu…", diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json index a84852163d4..673bcb42707 100644 --- a/apps/settings/l10n/cs.json +++ b/apps/settings/l10n/cs.json @@ -129,6 +129,7 @@ "Unlimited" : "Neomezeně", "Verifying" : "Ověřuje se", "Allowed admin IP ranges" : "Rozsahy IP adres, ze kterých je možné provádět správu", + "Admin IP filtering isn't applied." : "Filtrování IP adres pro správu není uplatněno.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Klíč nastavení „%1$s“ očekává pole (namísto toho nalezeno%2$s). Ověřování IP rozsahu pro správu nebude uplatňováno. ", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Klíč nastavení „%1$s“ obsahuje neplatný IP rozsah(y): „%2$s“", "Admin IP filtering is correctly configured." : "Filtrování IP adres pro správu je nastaveno správně.", @@ -161,6 +162,7 @@ "Database missing indices" : "V databázi chybí indexy", "Missing indices:" : "Chybějící rejstříky:", "\"%s\" in table \"%s\"" : "„%s“ v tabulce „%s“", + "Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them." : "Zjištěny některé chybějící volitelné indexy. Nové indexy jsou průběžně přidávány (do Nextcloudu nebo instalovaných aplikací) pro zlepšení výkonu databáze. Vytváření indexů může dočasně snížit výkon systému a proto nejsou indexy vytvářeny automaticky během aktualizací. Jakmile jsou indexy vytvořeny, databázové operace by měly být rychlejší. K vytvoření chybějících indexů použijte příkaz `occ db:add-missing-indices`. ", "Database missing primary keys" : "V databázi chybí primární klíče", "Missing primary key on table \"%s\"." : "Chybí primární klíč v tabulce „%s“.", "The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "V databázi chybí některé primární klíče. Vzhledem k tomu, že přidání primárních klíčů do velkých tabulek může nějakou dobu trvat, nebyly přidány automaticky. Spuštěním příkazu „occ db:add-missing-primary-keys“ lze tyto chybějící primární klíče přidat ručně, zatímco instance běží.", @@ -423,7 +425,7 @@ "Actions" : "Akce", "Results from other categories" : "Výsledky z ostatních kategorií", "No apps found for your version" : "Nenalezeny žádné aplikace pro vámi využívanou verzi", - "_%n app has an update available_::_%n apps have an update available_" : ["Pro %n aplikaci je k dispozici aktualizace","Pro %n aplikace jsou k dispozici aktualizace","Pro %n aplikací jsou k dispozici aktualizace","Pro %n aplikací jsou k dispozici aktualizace"], + "_%n app has an update available_::_%n apps have an update available_" : ["Pro %n aplikaci je k dispozici aktualizace","Pro %n aplikace jsou k dispozici aktualizace","Pro %n aplikací jsou k dispozici aktualizace","Pro %n aplikace jsou k dispozici aktualizace"], "_Update_::_Update all_" : ["Aktualizovat","Aktualizovat vše","Aktualizovat vše","Aktualizovat vše"], "Could not load app discover section" : "Nepodařilo se načíst sekci objevování aplikací", "Could not render element" : "Prvek se nepodařilo vykreslit", @@ -681,8 +683,8 @@ "Language" : "Jazyk", "Set default language" : "Nastavit výchozí jazyk", "Add new account" : "Přidat nový účet", - "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} účet …","{userCount} účty …","{userCount} účtů …","{userCount} účtů …"], - "_{userCount} account_::_{userCount} accounts_" : ["{userCount} účet","{userCount} účty","{userCount} účtů","{userCount} účtů"], + "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} účet …","{userCount} účty …","{userCount} účtů …","{userCount} účty …"], + "_{userCount} account_::_{userCount} accounts_" : ["{userCount} účet","{userCount} účty","{userCount} účtů","{userCount} účty"], "Total rows summary" : "Celkový souhrn řádek", "Scroll to load more rows" : "Další řádky načtete posunutím dolů", "Password or insufficient permissions message" : "Zpráva o heslu nebo nedostatečném oprávnění", @@ -709,7 +711,9 @@ "Account deletion" : "Smazání účtu", "Delete {userid}'s account" : "Smazat účet {userid}", "Display name was successfully changed" : "Zobrazené jméno bylo úspěšně změněno", + "Password can't be empty" : "Heslo je třeba vyplnit", "Password was successfully changed" : "Heslo bylo úspěšně změněno", + "Email can't be empty" : "E-mail je třeba vyplnit", "Email was successfully changed" : "E-mail byl úspěšně změněn", "Welcome mail sent!" : "Uvítací e-mail odeslán!", "Loading account …" : "Načítání účtu…", diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js index 3e31fe64649..78622be9b63 100644 --- a/apps/settings/l10n/de.js +++ b/apps/settings/l10n/de.js @@ -626,7 +626,7 @@ OC.L10N.register( "Your headline" : "Deine Überschrift", "Unable to update language" : "Sprache konnte nicht aktualisiert werden", "Languages" : "Sprachen", - "Help translate" : "Helfe bei der Übersetzung mit", + "Help translate" : "Hilf bei der Übersetzung mit", "No language set" : "Keine Sprache eingestellt.", "Unable to update locale" : "Gebietsschema konnte nicht aktualisiert werden.", "Locales" : "Gebietsschemen", diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json index 9c560ac4662..2449c4d4ce8 100644 --- a/apps/settings/l10n/de.json +++ b/apps/settings/l10n/de.json @@ -624,7 +624,7 @@ "Your headline" : "Deine Überschrift", "Unable to update language" : "Sprache konnte nicht aktualisiert werden", "Languages" : "Sprachen", - "Help translate" : "Helfe bei der Übersetzung mit", + "Help translate" : "Hilf bei der Übersetzung mit", "No language set" : "Keine Sprache eingestellt.", "Unable to update locale" : "Gebietsschema konnte nicht aktualisiert werden.", "Locales" : "Gebietsschemen", diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js index a6e4e967c64..f293383d6cc 100644 --- a/apps/settings/l10n/el.js +++ b/apps/settings/l10n/el.js @@ -115,6 +115,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανότατα προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Συνιστάται έντονα να ρυθμίσετε τον διακομιστή ιστού σας έτσι ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός της ρίζας εγγράφων του διακομιστή ιστού.", "The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "Από την βάση δεδομένων λείπουν ορισμένες προαιρετικές στήλες. Λόγω του γεγονότος ότι η προσθήκη στηλών σε μεγάλους πίνακες θα χρειαστεί χρόνο, δεν προστέθηκαν αυτόματα τα προαιρετικά. Με την εκτέλεση του \"occ db: add-missing-columns\", αυτές οι στήλες που λείπουν θα μπορούσαν να προστεθούν με το χέρι ενώ η βάση είναι σε λειτουργία. Μόλις προστεθούν οι στήλες, ορισμένα χαρακτηριστικά ενδέχεται να βελτιώσουν την ανταπόκριση ή τη χρηστικότητα.", "The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "Λείπουν ορισμένα βασικά κλειδιά στη βάση δεδομένων. Λόγω του γεγονότος ότι η προσθήκη πρωτευόντων κλειδιών σε μεγάλους πίνακες μπορεί να διαρκέσει λίγη ώρα, δεν προστέθηκαν αυτόματα. Εκτελώντας το \"occ db: add-lost-primary-keys\" αυτά τα πρωτεύοντα κλειδιά που λείπουν θα μπορούσαν να προστεθούν χειροκίνητα ενώ η περίπτωση συνεχίζει να εκτελείται.", + "Debug mode" : "Λειτουργία αποσφαλμάτωσης", "This instance is running in debug mode. Only enable this for local development and not in production environments." : "Αυτή η εγκατάσταση εκτελείται σε κατάσταση εντοπισμού σφαλμάτων. Ενεργοποιήστε την μόνο για τοπική ανάπτυξη και όχι σε περιβάλλοντα παραγωγής.", "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Αυτός ο διακομιστής δεν έχει ενεργή σύνδεση στο διαδίκτυο. Δεν ήταν δυνατή η πρόσβαση σε πολλά τελικά σημεία. Αυτό σημαίνει πως κάποιες λειτουργίες/υπηρεσίες όπως η σύνδεση με εξωτερικούς χώρους αποθήκευσης, ειδοποιήσεις σχετικά με ενημερώσεις ή η εγκατάσταση εφαρμογών από τρίτους δε θα λειτουργούν. Η απομακρυσμένη πρόσβαση στα αρχεία και η αποστολή ειδοποιήσεων ηλεκτρονικού ταχυδρομείου ενδέχεται να μη λειτουργούν επίσης. Ενεργοποιήσετε την πρόσβαση στο διαδίκτυο για τον συγκεκριμένο διακομιστή για να μπορείτε να χρησιμοποιήσετε και να απολαύσετε όλα τα χαρακτηριστικά και τις υπηρεσίες.", "Disabled" : "Απενεργοποιημένο", @@ -124,9 +125,11 @@ OC.L10N.register( "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Η PHP δεν έχει υποστήριξη FreεType, με αποτέλεσμα τα σφάλματα στην εικόνα προφίλ και στις ρυθμίσεις διεπαφής χρήστη.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "H PHP δεν φαίνεται να έχει διαμορφωθεί σωστά για ερωτήματα σε μεταβλητές περιβάλλοντος του συστήματος. Η δοκιμή με την εντολή getenv(\"PATH\") επιστρέφει μια κενή απάντηση.", "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Η ρύθμιση \"μόνο για ανάγνωση\" έχει ενεργοποιηθεί. Αυτό εμποδίζει τον καθορισμό ρυθμίσεων διαμόρφωσης μέσω της διεπαφής ιστού (web-interface). Επιπλέον, το αρχείο πρέπει να γίνει εγγράψιμο χειροκίνητα για κάθε ενημέρωση.", + "Architecture" : "Αρχιτεκτονική", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Η βάση δεδομένων σας δεν εκτελείται με επίπεδο απομόνωσης συναλλαγών \"READ COMMITTED\". Αυτό μπορεί να προκαλέσει προβλήματα όταν εκτελούνται παράλληλα πολλαπλές ενέργειες.", "Nextcloud settings" : "Ρυθμίσεις Nextcloud ", "Enable" : "Ενεργοποίηση", + "Image generation" : "Δημιουργία εικόνας", "Here you can decide which group can access certain sections of the administration settings." : "Εδώ ορίστε ποια ομάδα μπορεί να έχει πρόσβαση σε ορισμένες ενότητες των ρυθμίσεων διαχείρισης.", "Unable to modify setting" : "Δεν είναι δυνατή η τροποποίηση της ρύθμισης", "None" : "Τίποτα", diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json index d78a7265cf3..a6d7f9d694e 100644 --- a/apps/settings/l10n/el.json +++ b/apps/settings/l10n/el.json @@ -113,6 +113,7 @@ "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανότατα προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Συνιστάται έντονα να ρυθμίσετε τον διακομιστή ιστού σας έτσι ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός της ρίζας εγγράφων του διακομιστή ιστού.", "The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "Από την βάση δεδομένων λείπουν ορισμένες προαιρετικές στήλες. Λόγω του γεγονότος ότι η προσθήκη στηλών σε μεγάλους πίνακες θα χρειαστεί χρόνο, δεν προστέθηκαν αυτόματα τα προαιρετικά. Με την εκτέλεση του \"occ db: add-missing-columns\", αυτές οι στήλες που λείπουν θα μπορούσαν να προστεθούν με το χέρι ενώ η βάση είναι σε λειτουργία. Μόλις προστεθούν οι στήλες, ορισμένα χαρακτηριστικά ενδέχεται να βελτιώσουν την ανταπόκριση ή τη χρηστικότητα.", "The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "Λείπουν ορισμένα βασικά κλειδιά στη βάση δεδομένων. Λόγω του γεγονότος ότι η προσθήκη πρωτευόντων κλειδιών σε μεγάλους πίνακες μπορεί να διαρκέσει λίγη ώρα, δεν προστέθηκαν αυτόματα. Εκτελώντας το \"occ db: add-lost-primary-keys\" αυτά τα πρωτεύοντα κλειδιά που λείπουν θα μπορούσαν να προστεθούν χειροκίνητα ενώ η περίπτωση συνεχίζει να εκτελείται.", + "Debug mode" : "Λειτουργία αποσφαλμάτωσης", "This instance is running in debug mode. Only enable this for local development and not in production environments." : "Αυτή η εγκατάσταση εκτελείται σε κατάσταση εντοπισμού σφαλμάτων. Ενεργοποιήστε την μόνο για τοπική ανάπτυξη και όχι σε περιβάλλοντα παραγωγής.", "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Αυτός ο διακομιστής δεν έχει ενεργή σύνδεση στο διαδίκτυο. Δεν ήταν δυνατή η πρόσβαση σε πολλά τελικά σημεία. Αυτό σημαίνει πως κάποιες λειτουργίες/υπηρεσίες όπως η σύνδεση με εξωτερικούς χώρους αποθήκευσης, ειδοποιήσεις σχετικά με ενημερώσεις ή η εγκατάσταση εφαρμογών από τρίτους δε θα λειτουργούν. Η απομακρυσμένη πρόσβαση στα αρχεία και η αποστολή ειδοποιήσεων ηλεκτρονικού ταχυδρομείου ενδέχεται να μη λειτουργούν επίσης. Ενεργοποιήσετε την πρόσβαση στο διαδίκτυο για τον συγκεκριμένο διακομιστή για να μπορείτε να χρησιμοποιήσετε και να απολαύσετε όλα τα χαρακτηριστικά και τις υπηρεσίες.", "Disabled" : "Απενεργοποιημένο", @@ -122,9 +123,11 @@ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Η PHP δεν έχει υποστήριξη FreεType, με αποτέλεσμα τα σφάλματα στην εικόνα προφίλ και στις ρυθμίσεις διεπαφής χρήστη.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "H PHP δεν φαίνεται να έχει διαμορφωθεί σωστά για ερωτήματα σε μεταβλητές περιβάλλοντος του συστήματος. Η δοκιμή με την εντολή getenv(\"PATH\") επιστρέφει μια κενή απάντηση.", "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Η ρύθμιση \"μόνο για ανάγνωση\" έχει ενεργοποιηθεί. Αυτό εμποδίζει τον καθορισμό ρυθμίσεων διαμόρφωσης μέσω της διεπαφής ιστού (web-interface). Επιπλέον, το αρχείο πρέπει να γίνει εγγράψιμο χειροκίνητα για κάθε ενημέρωση.", + "Architecture" : "Αρχιτεκτονική", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Η βάση δεδομένων σας δεν εκτελείται με επίπεδο απομόνωσης συναλλαγών \"READ COMMITTED\". Αυτό μπορεί να προκαλέσει προβλήματα όταν εκτελούνται παράλληλα πολλαπλές ενέργειες.", "Nextcloud settings" : "Ρυθμίσεις Nextcloud ", "Enable" : "Ενεργοποίηση", + "Image generation" : "Δημιουργία εικόνας", "Here you can decide which group can access certain sections of the administration settings." : "Εδώ ορίστε ποια ομάδα μπορεί να έχει πρόσβαση σε ορισμένες ενότητες των ρυθμίσεων διαχείρισης.", "Unable to modify setting" : "Δεν είναι δυνατή η τροποποίηση της ρύθμισης", "None" : "Τίποτα", diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js index 08d98d0afd8..25a89c702d0 100644 --- a/apps/settings/l10n/sr.js +++ b/apps/settings/l10n/sr.js @@ -131,6 +131,7 @@ OC.L10N.register( "Unlimited" : "Неограничено", "Verifying" : "Проверавам", "Allowed admin IP ranges" : "Дозвољени админ IP опсези", + "Admin IP filtering isn't applied." : "Није примењено филтрирање админ IP адреса.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Конфигурациони кључ „%1$s” очекује вредност типа низ (пронађено је %2$s). Неће се применити валидација админ IP опсега.", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Конфигурациони кључ „%1$s” садржи неисправни IP опсег (или више њих) „%2$s”", "Admin IP filtering is correctly configured." : "Филтрирање админ IP адреса је исправно подешено.", @@ -163,6 +164,7 @@ OC.L10N.register( "Database missing indices" : "У бази података недостају индекси", "Missing indices:" : "Индекси који недостају:", "\"%s\" in table \"%s\"" : "„%s” у табели „%s”", + "Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them." : "Откривено је да недостају неки индекси који нису обавезни. Да би се унапредиле перформансе базе података (сам Nextcloud или инсталиране апликације) повремено додају нове индексе. Понекад то може да потраје и привремено може да смањи перформансе тако да се не ради аутоматски током ажурирања. Једном када се индекси додају, упити над тим табелама би требало да се брже извршавају. Да бисте их додали, употребите команду `occ db:add-missing-indices`.", "Database missing primary keys" : "У бази података недостају примарни кључеви", "Missing primary key on table \"%s\"." : "У табели „%s” недостаје примарни кључ.", "The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "У бази података недостају неки примарни кључеви. Услед тога што операција додавања примарних кључева у велике табеле може да потраје, они нису додати аутоматски. Извршавањем команде „occ db:add-missing-primary-keys” би се ти примарни кључеви ручно додали док инстанца несментано ради.", @@ -711,7 +713,9 @@ OC.L10N.register( "Account deletion" : "Брисање налога", "Delete {userid}'s account" : "Обриши налог корисника {userid}", "Display name was successfully changed" : "Име за приказ је успешно промењено", + "Password can't be empty" : "Лозинка не може да буде празна", "Password was successfully changed" : "Лозинка је усшешно промењена", + "Email can't be empty" : "И-мејл не може да буде празан", "Email was successfully changed" : "И-мејл је успешно промењен", "Welcome mail sent!" : "Е-пошта добродошлице послата!", "Loading account …" : "Налог се учитава…", diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json index fe3ce0c5e3d..d281251138a 100644 --- a/apps/settings/l10n/sr.json +++ b/apps/settings/l10n/sr.json @@ -129,6 +129,7 @@ "Unlimited" : "Неограничено", "Verifying" : "Проверавам", "Allowed admin IP ranges" : "Дозвољени админ IP опсези", + "Admin IP filtering isn't applied." : "Није примењено филтрирање админ IP адреса.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Конфигурациони кључ „%1$s” очекује вредност типа низ (пронађено је %2$s). Неће се применити валидација админ IP опсега.", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Конфигурациони кључ „%1$s” садржи неисправни IP опсег (или више њих) „%2$s”", "Admin IP filtering is correctly configured." : "Филтрирање админ IP адреса је исправно подешено.", @@ -161,6 +162,7 @@ "Database missing indices" : "У бази података недостају индекси", "Missing indices:" : "Индекси који недостају:", "\"%s\" in table \"%s\"" : "„%s” у табели „%s”", + "Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them." : "Откривено је да недостају неки индекси који нису обавезни. Да би се унапредиле перформансе базе података (сам Nextcloud или инсталиране апликације) повремено додају нове индексе. Понекад то може да потраје и привремено може да смањи перформансе тако да се не ради аутоматски током ажурирања. Једном када се индекси додају, упити над тим табелама би требало да се брже извршавају. Да бисте их додали, употребите команду `occ db:add-missing-indices`.", "Database missing primary keys" : "У бази података недостају примарни кључеви", "Missing primary key on table \"%s\"." : "У табели „%s” недостаје примарни кључ.", "The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "У бази података недостају неки примарни кључеви. Услед тога што операција додавања примарних кључева у велике табеле може да потраје, они нису додати аутоматски. Извршавањем команде „occ db:add-missing-primary-keys” би се ти примарни кључеви ручно додали док инстанца несментано ради.", @@ -709,7 +711,9 @@ "Account deletion" : "Брисање налога", "Delete {userid}'s account" : "Обриши налог корисника {userid}", "Display name was successfully changed" : "Име за приказ је успешно промењено", + "Password can't be empty" : "Лозинка не може да буде празна", "Password was successfully changed" : "Лозинка је усшешно промењена", + "Email can't be empty" : "И-мејл не може да буде празан", "Email was successfully changed" : "И-мејл је успешно промењен", "Welcome mail sent!" : "Е-пошта добродошлице послата!", "Loading account …" : "Налог се учитава…", diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js index 8a08941776e..976c7131b9b 100644 --- a/apps/settings/l10n/zh_TW.js +++ b/apps/settings/l10n/zh_TW.js @@ -131,6 +131,7 @@ OC.L10N.register( "Unlimited" : "無限制", "Verifying" : "正在驗證", "Allowed admin IP ranges" : "允許的管理 IP 範圍", + "Admin IP filtering isn't applied." : "不套用管理 IP 過濾。", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "設定鍵「%1$s」預期為陣列(找到 %2$s)。將不套用管理 IP 範圍驗證。", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "設定鍵「%1$s」包含無效的 IP 範圍:「%2$s」", "Admin IP filtering is correctly configured." : "管理 IP 過濾已正確設定。", @@ -163,6 +164,7 @@ OC.L10N.register( "Database missing indices" : "資料庫缺少索引", "Missing indices:" : "缺少索引:", "\"%s\" in table \"%s\"" : "「%s」在資料表「%s」中", + "Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them." : "偵測到一些缺少的選擇性索引。有時會新增索引以改善資料庫效能(由 Nextcloud 或安裝的應用程式)。新增索引可能需要一點時間,並會暫時降低效能,因此不會在升級期間自動完成。新增索引後,對這些資料表的查詢應該會更快。使用命令 `occ db:add-missing-indices` 以新增它們。", "Database missing primary keys" : "資料庫缺少主鍵", "Missing primary key on table \"%s\"." : "資料表「%s」缺少主鍵。", "The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "資料庫缺少了一些主鍵,然而新增主鍵這個動作將在龐大的表中花費許多時間,因此它們並不會被自動新增。藉由執行「occ db:add-missing-primary-keys」手動新增主鍵將能在系統持續運作時修復這個問題。", @@ -711,7 +713,9 @@ OC.L10N.register( "Account deletion" : "帳號刪除", "Delete {userid}'s account" : "刪除 {userid} 的帳號", "Display name was successfully changed" : "成功變更顯示名稱", + "Password can't be empty" : "密碼不能為空", "Password was successfully changed" : "成功變更密碼", + "Email can't be empty" : "電子郵件不能為空", "Email was successfully changed" : "成功更新電子郵件", "Welcome mail sent!" : "已傳送歡迎郵件!", "Loading account …" : "正在載入帳號……", diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json index 219707331c6..f388e1ad962 100644 --- a/apps/settings/l10n/zh_TW.json +++ b/apps/settings/l10n/zh_TW.json @@ -129,6 +129,7 @@ "Unlimited" : "無限制", "Verifying" : "正在驗證", "Allowed admin IP ranges" : "允許的管理 IP 範圍", + "Admin IP filtering isn't applied." : "不套用管理 IP 過濾。", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "設定鍵「%1$s」預期為陣列(找到 %2$s)。將不套用管理 IP 範圍驗證。", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "設定鍵「%1$s」包含無效的 IP 範圍:「%2$s」", "Admin IP filtering is correctly configured." : "管理 IP 過濾已正確設定。", @@ -161,6 +162,7 @@ "Database missing indices" : "資料庫缺少索引", "Missing indices:" : "缺少索引:", "\"%s\" in table \"%s\"" : "「%s」在資料表「%s」中", + "Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them." : "偵測到一些缺少的選擇性索引。有時會新增索引以改善資料庫效能(由 Nextcloud 或安裝的應用程式)。新增索引可能需要一點時間,並會暫時降低效能,因此不會在升級期間自動完成。新增索引後,對這些資料表的查詢應該會更快。使用命令 `occ db:add-missing-indices` 以新增它們。", "Database missing primary keys" : "資料庫缺少主鍵", "Missing primary key on table \"%s\"." : "資料表「%s」缺少主鍵。", "The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "資料庫缺少了一些主鍵,然而新增主鍵這個動作將在龐大的表中花費許多時間,因此它們並不會被自動新增。藉由執行「occ db:add-missing-primary-keys」手動新增主鍵將能在系統持續運作時修復這個問題。", @@ -709,7 +711,9 @@ "Account deletion" : "帳號刪除", "Delete {userid}'s account" : "刪除 {userid} 的帳號", "Display name was successfully changed" : "成功變更顯示名稱", + "Password can't be empty" : "密碼不能為空", "Password was successfully changed" : "成功變更密碼", + "Email can't be empty" : "電子郵件不能為空", "Email was successfully changed" : "成功更新電子郵件", "Welcome mail sent!" : "已傳送歡迎郵件!", "Loading account …" : "正在載入帳號……", diff --git a/apps/sharebymail/l10n/hu.js b/apps/sharebymail/l10n/hu.js index a704fa57907..95e0daca4b8 100644 --- a/apps/sharebymail/l10n/hu.js +++ b/apps/sharebymail/l10n/hu.js @@ -14,6 +14,7 @@ OC.L10N.register( "Password to access {file} was sent to {email}" : "A(z) {file} eléréséhez szükséges jelszó elküldve a következőhöz: {email}", "Password to access {file} was sent to you" : "A(z) {file} eléréséhez szükséges jelszó elküldve Önnek", "Share by mail" : "Megosztás e-mailben", + "Sharing %1$s failed, because this item is already shared with the account %2$s" : "A(z) %1$s megosztása sikertelen, mert már meg van osztva a(z) %2$s fiókkal", "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nem lehet az automatikusan előállított jelszót elküldeni. Állítson be érvényes e-mail-címet a személyes beállításokban, és próbálja újra.", "Failed to send share by email. Got an invalid email address" : "Az e-mailben történő megosztás sikertelen. Érvénytelen e-mail-cím.", "Failed to send share by email" : "Az e-mailben történő megosztás sikertelen", diff --git a/apps/sharebymail/l10n/hu.json b/apps/sharebymail/l10n/hu.json index 6d795e17c9c..7de070dcf22 100644 --- a/apps/sharebymail/l10n/hu.json +++ b/apps/sharebymail/l10n/hu.json @@ -12,6 +12,7 @@ "Password to access {file} was sent to {email}" : "A(z) {file} eléréséhez szükséges jelszó elküldve a következőhöz: {email}", "Password to access {file} was sent to you" : "A(z) {file} eléréséhez szükséges jelszó elküldve Önnek", "Share by mail" : "Megosztás e-mailben", + "Sharing %1$s failed, because this item is already shared with the account %2$s" : "A(z) %1$s megosztása sikertelen, mert már meg van osztva a(z) %2$s fiókkal", "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nem lehet az automatikusan előállított jelszót elküldeni. Állítson be érvényes e-mail-címet a személyes beállításokban, és próbálja újra.", "Failed to send share by email. Got an invalid email address" : "Az e-mailben történő megosztás sikertelen. Érvénytelen e-mail-cím.", "Failed to send share by email" : "Az e-mailben történő megosztás sikertelen", diff --git a/apps/systemtags/l10n/cs.js b/apps/systemtags/l10n/cs.js index 5aa5b18deb0..6818b32e2bd 100644 --- a/apps/systemtags/l10n/cs.js +++ b/apps/systemtags/l10n/cs.js @@ -65,6 +65,9 @@ OC.L10N.register( "Delete" : "Smazat", "Reset" : "Vrátit na výchozí", "Loading …" : "Načítání…", + "_{tag1} will be set and {tag2} will be removed from 1 file._::_{tag1} will be set and {tag2} will be removed from {count} files._" : ["{tag1} bude nastaven a {tag2} odebrán z 1 souboru.","{tag1} bude nastaven a {tag2} odebrán z {count} souborů.","{tag1} bude nastaven a {tag2} odebrán z {count} souborů.","{tag1} bude nastaven a {tag2} odebrán z {count} souborů."], + "_{tag} will be set to 1 file._::_{tag} will be set to {count} files._" : ["{tag} bude nastaven 1 souboru.","{tag} bude nastaven {count} souborům.","{tag} bude nastaven {count} souborům.","{tag} bude nastaven {count} souborům."], + "_{tag} will be removed from 1 file._::_{tag} will be removed from {count} files._" : ["{tag} bude odebrán z 1 souboru.","{tag} bude odebrán z {count} souborů.","{tag} bude odebrán z {count} souborů.","{tag} bude odebrán z {count} souborů."], "{displayName} (hidden)" : "{displayName} (skrytý)", "{displayName} (restricted)" : "{displayName} (omezený)", "Failed to apply tags changes" : "Změny štítků se nepodařilo uplatnit", diff --git a/apps/systemtags/l10n/cs.json b/apps/systemtags/l10n/cs.json index 74bbd4daa9c..7a26de6266b 100644 --- a/apps/systemtags/l10n/cs.json +++ b/apps/systemtags/l10n/cs.json @@ -63,6 +63,9 @@ "Delete" : "Smazat", "Reset" : "Vrátit na výchozí", "Loading …" : "Načítání…", + "_{tag1} will be set and {tag2} will be removed from 1 file._::_{tag1} will be set and {tag2} will be removed from {count} files._" : ["{tag1} bude nastaven a {tag2} odebrán z 1 souboru.","{tag1} bude nastaven a {tag2} odebrán z {count} souborů.","{tag1} bude nastaven a {tag2} odebrán z {count} souborů.","{tag1} bude nastaven a {tag2} odebrán z {count} souborů."], + "_{tag} will be set to 1 file._::_{tag} will be set to {count} files._" : ["{tag} bude nastaven 1 souboru.","{tag} bude nastaven {count} souborům.","{tag} bude nastaven {count} souborům.","{tag} bude nastaven {count} souborům."], + "_{tag} will be removed from 1 file._::_{tag} will be removed from {count} files._" : ["{tag} bude odebrán z 1 souboru.","{tag} bude odebrán z {count} souborů.","{tag} bude odebrán z {count} souborů.","{tag} bude odebrán z {count} souborů."], "{displayName} (hidden)" : "{displayName} (skrytý)", "{displayName} (restricted)" : "{displayName} (omezený)", "Failed to apply tags changes" : "Změny štítků se nepodařilo uplatnit", diff --git a/apps/systemtags/l10n/sr.js b/apps/systemtags/l10n/sr.js index 443835aa15f..8774603d94f 100644 --- a/apps/systemtags/l10n/sr.js +++ b/apps/systemtags/l10n/sr.js @@ -65,6 +65,11 @@ OC.L10N.register( "Delete" : "Обриши", "Reset" : "Ресетуј", "Loading …" : "Учитавање…", + "_{tag1} will be set and {tag2} will be removed from 1 file._::_{tag1} will be set and {tag2} will be removed from {count} files._" : ["{tag1} ће да се постави и {tag2} ће да се уклони из 1 фајла.","{tag1} ће да се постави и {tag2} ће да се уклони из {count} фајла.","{tag1} ће да се постави и {tag2} ће да се уклони из {count} фајлова."], + "_{tag} will be set to 1 file._::_{tag} will be set to {count} files._" : ["{tag} ће да се постави на 1 фајл.","{tag} ће да се постави на {count} фајла.","{tag} ће да се постави на {count} фајлова."], + "_{tag} will be removed from 1 file._::_{tag} will be removed from {count} files._" : ["{tag} ће се уклонити са 1 фајла.","{tag} ће се уклонити са {count} фајла.","{tag} ће се уклонити са {count} фајлова."], + "_{tags} and {lastTag} will be set to 1 file._::_{tags} and {lastTag} will be set to {count} files._" : ["{tags} и {lastTag} ће се поставити на 1 фајл.","{tags} и {lastTag} ће се поставити на {count} фајла.","{tags} и {lastTag} ће се поставити на {count} фајлова."], + "_{tags} and {lastTag} will be removed from 1 file._::_{tags} and {lastTag} will be removed from {count} files._" : ["{tags} и {lastTag} ће се уклонити са 1 фајла.","{tags} и {lastTag} ће се уклонити са {count} фајла.","{tags} и {lastTag} ће се уклонити са {count} фајлова."], "{displayName} (hidden)" : "{displayName} (скривено)", "{displayName} (restricted)" : "{displayName} (ограничено)", "Failed to apply tags changes" : "Није успело примењивање измена ознака", diff --git a/apps/systemtags/l10n/sr.json b/apps/systemtags/l10n/sr.json index f2b2da4a618..702242cbcbe 100644 --- a/apps/systemtags/l10n/sr.json +++ b/apps/systemtags/l10n/sr.json @@ -63,6 +63,11 @@ "Delete" : "Обриши", "Reset" : "Ресетуј", "Loading …" : "Учитавање…", + "_{tag1} will be set and {tag2} will be removed from 1 file._::_{tag1} will be set and {tag2} will be removed from {count} files._" : ["{tag1} ће да се постави и {tag2} ће да се уклони из 1 фајла.","{tag1} ће да се постави и {tag2} ће да се уклони из {count} фајла.","{tag1} ће да се постави и {tag2} ће да се уклони из {count} фајлова."], + "_{tag} will be set to 1 file._::_{tag} will be set to {count} files._" : ["{tag} ће да се постави на 1 фајл.","{tag} ће да се постави на {count} фајла.","{tag} ће да се постави на {count} фајлова."], + "_{tag} will be removed from 1 file._::_{tag} will be removed from {count} files._" : ["{tag} ће се уклонити са 1 фајла.","{tag} ће се уклонити са {count} фајла.","{tag} ће се уклонити са {count} фајлова."], + "_{tags} and {lastTag} will be set to 1 file._::_{tags} and {lastTag} will be set to {count} files._" : ["{tags} и {lastTag} ће се поставити на 1 фајл.","{tags} и {lastTag} ће се поставити на {count} фајла.","{tags} и {lastTag} ће се поставити на {count} фајлова."], + "_{tags} and {lastTag} will be removed from 1 file._::_{tags} and {lastTag} will be removed from {count} files._" : ["{tags} и {lastTag} ће се уклонити са 1 фајла.","{tags} и {lastTag} ће се уклонити са {count} фајла.","{tags} и {lastTag} ће се уклонити са {count} фајлова."], "{displayName} (hidden)" : "{displayName} (скривено)", "{displayName} (restricted)" : "{displayName} (ограничено)", "Failed to apply tags changes" : "Није успело примењивање измена ознака", diff --git a/apps/systemtags/l10n/zh_TW.js b/apps/systemtags/l10n/zh_TW.js index aaa23af5abf..4e2dbc5fc8e 100644 --- a/apps/systemtags/l10n/zh_TW.js +++ b/apps/systemtags/l10n/zh_TW.js @@ -65,6 +65,11 @@ OC.L10N.register( "Delete" : "刪除", "Reset" : "重設", "Loading …" : "正在載入…", + "_{tag1} will be set and {tag2} will be removed from 1 file._::_{tag1} will be set and {tag2} will be removed from {count} files._" : ["將會設定 {tag1},並從 {count} 個檔案中移除 {tag2}。"], + "_{tag} will be set to 1 file._::_{tag} will be set to {count} files._" : ["將會設定 {tag} 到 {count} 個檔案。"], + "_{tag} will be removed from 1 file._::_{tag} will be removed from {count} files._" : ["將會從 {count} 個檔案移除 {tag}。"], + "_{tags} and {lastTag} will be set to 1 file._::_{tags} and {lastTag} will be set to {count} files._" : ["將會設定 {tags} 與 {lastTag} 到 {count} 個檔案。"], + "_{tags} and {lastTag} will be removed from 1 file._::_{tags} and {lastTag} will be removed from {count} files._" : ["將從 {count} 個檔案移除 {tags} 與 {lastTag}"], "{displayName} (hidden)" : "{displayName}(隱藏)", "{displayName} (restricted)" : "{displayName}(受限)", "Failed to apply tags changes" : "套用標籤變更失敗", diff --git a/apps/systemtags/l10n/zh_TW.json b/apps/systemtags/l10n/zh_TW.json index 05a67c83677..109878f00f8 100644 --- a/apps/systemtags/l10n/zh_TW.json +++ b/apps/systemtags/l10n/zh_TW.json @@ -63,6 +63,11 @@ "Delete" : "刪除", "Reset" : "重設", "Loading …" : "正在載入…", + "_{tag1} will be set and {tag2} will be removed from 1 file._::_{tag1} will be set and {tag2} will be removed from {count} files._" : ["將會設定 {tag1},並從 {count} 個檔案中移除 {tag2}。"], + "_{tag} will be set to 1 file._::_{tag} will be set to {count} files._" : ["將會設定 {tag} 到 {count} 個檔案。"], + "_{tag} will be removed from 1 file._::_{tag} will be removed from {count} files._" : ["將會從 {count} 個檔案移除 {tag}。"], + "_{tags} and {lastTag} will be set to 1 file._::_{tags} and {lastTag} will be set to {count} files._" : ["將會設定 {tags} 與 {lastTag} 到 {count} 個檔案。"], + "_{tags} and {lastTag} will be removed from 1 file._::_{tags} and {lastTag} will be removed from {count} files._" : ["將從 {count} 個檔案移除 {tags} 與 {lastTag}"], "{displayName} (hidden)" : "{displayName}(隱藏)", "{displayName} (restricted)" : "{displayName}(受限)", "Failed to apply tags changes" : "套用標籤變更失敗", diff --git a/apps/theming/l10n/cs.js b/apps/theming/l10n/cs.js index 9f39aa44169..302f8b02ae8 100644 --- a/apps/theming/l10n/cs.js +++ b/apps/theming/l10n/cs.js @@ -77,6 +77,7 @@ OC.L10N.register( "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Nainstalujte rozšíření ImageMagick PHP s podporou SVG obrázků, které automaticky vytváří favicon na základě nahraného loga a barvy.", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Přístupnost pro všechny je pro nás velmi důležitá. Splňujeme webové standardy a zajišťujeme, aby všechno bylo použitelné i bez myši a s asistenčním software, jako například čtečkami obrazovky. Máme za cíl být v souladu s doporučeními {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 na úrovni AA, při použití motivu vzhledu s vysokým kontrastem dokonce na úrovni AAA.", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Pokud naleznete jakékoli problémy, neváhejte s jejich nahlášením do {issuetracker}našeho systému pro správu hlášení{linkend}. A pokud se chcete zapojit, přidejte se k {designteam}týmu našich designérů{linkend}!", + ". Unable to apply the setting." : ". Nastavení nebylo možné uplatnit.", "Appearance and accessibility settings" : "Nastavení vzhledu a zpřístupnění", "Misc accessibility options" : "Ostatní předvolby pro přístupnost", "Enable blur background filter (may increase GPU load)" : "Zapnout filtr rozmazávající pozadí (může zvýšit vytížení výpočetní jednotky pro grafiku)", diff --git a/apps/theming/l10n/cs.json b/apps/theming/l10n/cs.json index 964350c4781..b497b51a1bd 100644 --- a/apps/theming/l10n/cs.json +++ b/apps/theming/l10n/cs.json @@ -75,6 +75,7 @@ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Nainstalujte rozšíření ImageMagick PHP s podporou SVG obrázků, které automaticky vytváří favicon na základě nahraného loga a barvy.", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Přístupnost pro všechny je pro nás velmi důležitá. Splňujeme webové standardy a zajišťujeme, aby všechno bylo použitelné i bez myši a s asistenčním software, jako například čtečkami obrazovky. Máme za cíl být v souladu s doporučeními {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 na úrovni AA, při použití motivu vzhledu s vysokým kontrastem dokonce na úrovni AAA.", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Pokud naleznete jakékoli problémy, neváhejte s jejich nahlášením do {issuetracker}našeho systému pro správu hlášení{linkend}. A pokud se chcete zapojit, přidejte se k {designteam}týmu našich designérů{linkend}!", + ". Unable to apply the setting." : ". Nastavení nebylo možné uplatnit.", "Appearance and accessibility settings" : "Nastavení vzhledu a zpřístupnění", "Misc accessibility options" : "Ostatní předvolby pro přístupnost", "Enable blur background filter (may increase GPU load)" : "Zapnout filtr rozmazávající pozadí (může zvýšit vytížení výpočetní jednotky pro grafiku)", diff --git a/apps/theming/l10n/sr.js b/apps/theming/l10n/sr.js index 76d673ad10d..d7df4b34908 100644 --- a/apps/theming/l10n/sr.js +++ b/apps/theming/l10n/sr.js @@ -77,6 +77,7 @@ OC.L10N.register( "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Инсталирајте ImageMagick PHP проширење са подшком за SVG слике да би било могуће аутоматско генерисање favicons према отпремљеном логоу и боји.", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Универзални приступ нам је веома важан. Пратимо веб стандарде и проверавамо да све буде употребљиво и без миша а и са помоћним софтвером попут читача екрана. Циљ нам је да будемо усклађени са документом {guidelines}Смернице приступачности веб садржаја{linkend} 2.1 на АА нивоу а са темом високог контраста и на ААА нивоу.", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "У случају да наиђете на било какве проблеме, не оклевајте да их пријавите на {issuetracker}наш пратилац проблема{linkend}. А ако желите да се умешате, слободно се прикључите {designteam}нашем дизајн тиму{linkend}!", + ". Unable to apply the setting." : ". Подешавање није могло да се примени.", "Appearance and accessibility settings" : "Подешавања изгледа и приступачности", "Misc accessibility options" : "Разне опције приступаности", "Enable blur background filter (may increase GPU load)" : "Укључи филтер замућења позадине (може да повећа оптерећење GPU)", diff --git a/apps/theming/l10n/sr.json b/apps/theming/l10n/sr.json index 03bb310157d..77970832afd 100644 --- a/apps/theming/l10n/sr.json +++ b/apps/theming/l10n/sr.json @@ -75,6 +75,7 @@ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Инсталирајте ImageMagick PHP проширење са подшком за SVG слике да би било могуће аутоматско генерисање favicons према отпремљеном логоу и боји.", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Универзални приступ нам је веома важан. Пратимо веб стандарде и проверавамо да све буде употребљиво и без миша а и са помоћним софтвером попут читача екрана. Циљ нам је да будемо усклађени са документом {guidelines}Смернице приступачности веб садржаја{linkend} 2.1 на АА нивоу а са темом високог контраста и на ААА нивоу.", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "У случају да наиђете на било какве проблеме, не оклевајте да их пријавите на {issuetracker}наш пратилац проблема{linkend}. А ако желите да се умешате, слободно се прикључите {designteam}нашем дизајн тиму{linkend}!", + ". Unable to apply the setting." : ". Подешавање није могло да се примени.", "Appearance and accessibility settings" : "Подешавања изгледа и приступачности", "Misc accessibility options" : "Разне опције приступаности", "Enable blur background filter (may increase GPU load)" : "Укључи филтер замућења позадине (може да повећа оптерећење GPU)", diff --git a/apps/theming/l10n/zh_TW.js b/apps/theming/l10n/zh_TW.js index 597799701b1..88de4818f9b 100644 --- a/apps/theming/l10n/zh_TW.js +++ b/apps/theming/l10n/zh_TW.js @@ -77,6 +77,7 @@ OC.L10N.register( "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "安裝支援 SVG 圖片的 PHP ImageMagick 擴充功能,可以根據上傳的標誌與顏色,自動生成 favicon。", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "我們非常重視無障礙存取。我們遵循網頁標準,並透過檢查來確保所有內容皆可在沒有滑鼠,或是在輔助軟體,例如螢幕閱讀器的情況下使用。我們目標是能達到《{guidelines}網頁內容無障礙指引{linkend}》2.1 版的 AA 等級,加上高對比度主題後,甚至還能達到 AAA 等級。", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "如果您發現任何一個問題,請不要猶豫並請在{issuetracker}我們的問題追蹤系統{linkend}中回報。而如果您想參與專案,歡迎加入{designteam}我們的設計團隊{linkend}!", + ". Unable to apply the setting." : "無法套用設定。", "Appearance and accessibility settings" : "外觀與無障礙存取設定", "Misc accessibility options" : "其他無障礙選項", "Enable blur background filter (may increase GPU load)" : "啟用模糊背景過濾(可能會增加 GPU 負載)", diff --git a/apps/theming/l10n/zh_TW.json b/apps/theming/l10n/zh_TW.json index 4709ae2716a..0729b9fb6fa 100644 --- a/apps/theming/l10n/zh_TW.json +++ b/apps/theming/l10n/zh_TW.json @@ -75,6 +75,7 @@ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "安裝支援 SVG 圖片的 PHP ImageMagick 擴充功能,可以根據上傳的標誌與顏色,自動生成 favicon。", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "我們非常重視無障礙存取。我們遵循網頁標準,並透過檢查來確保所有內容皆可在沒有滑鼠,或是在輔助軟體,例如螢幕閱讀器的情況下使用。我們目標是能達到《{guidelines}網頁內容無障礙指引{linkend}》2.1 版的 AA 等級,加上高對比度主題後,甚至還能達到 AAA 等級。", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "如果您發現任何一個問題,請不要猶豫並請在{issuetracker}我們的問題追蹤系統{linkend}中回報。而如果您想參與專案,歡迎加入{designteam}我們的設計團隊{linkend}!", + ". Unable to apply the setting." : "無法套用設定。", "Appearance and accessibility settings" : "外觀與無障礙存取設定", "Misc accessibility options" : "其他無障礙選項", "Enable blur background filter (may increase GPU load)" : "啟用模糊背景過濾(可能會增加 GPU 負載)", diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js index afb5d190a12..dea646fc2e8 100644 --- a/apps/user_ldap/l10n/cs.js +++ b/apps/user_ldap/l10n/cs.js @@ -6,10 +6,12 @@ OC.L10N.register( "Invalid configuration: Anonymous binding is not allowed." : "Neplatné nastavení: Anonymní navázání není umožněno.", "Valid configuration, connection established!" : "Nastavení je v pořádku a spojení bylo navázáno.", "Valid configuration, but binding failed. Please check the server settings and credentials." : "Nastavení je v pořádku, ale spojení se nezdařilo. Zkontrolujte nastavení serveru a přihlašovací údaje.", + "Invalid configuration: %s" : "Neplatné nastavení: %s", "No action specified" : "Neurčena žádná akce", "No configuration specified" : "Neurčeno žádné nastavení", "No data specified" : "Neurčena žádná data", "Invalid data specified" : "Zadána neplatná data", + "Could not set configuration %1$s to %2$s" : "Nepodařilo se nastavit konfiguraci %1$s na %2$s", "Action does not exist" : "Tato akce neexistuje", "Renewing …" : "Obnovování…", "Very weak password" : "Velmi snadno prolomitelné heslo", @@ -52,6 +54,14 @@ OC.L10N.register( "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Zástupný symbol „%uid“ chybí. Při dotatzu na LDAP/AD bude nahrazen přihlašovacím jménem.", "Please provide a login name to test against" : "Zadejte přihlašovací jméno, vůči kterému vyzkoušet", "The group box was disabled, because the LDAP/AD server does not support memberOf." : "Skupinová kolonka bylo vypnuta, protože LDAP/AD server nepodporuje memberOf.", + "Password change rejected. Hint: %s" : "Změna hesla zamítnuta. Nápověda: %s", + "Mandatory field \"%s\" left empty" : "Nezbytná kolonka „%s“ nevyplněna", + "A password is given, but not an LDAP agent" : "Heslo je zadáno, ale nikoli LDAP agent", + "No password is given for the user agent" : "Pro uživatelského agenta nezadáno žádné heslo", + "No LDAP base DN was given" : "Nezadáno LDAP základ DN", + "User base DN is not a subnode of global base DN" : "Základ DN uživatele není dílčím uzlem globálního základu DN", + "Group base DN is not a subnode of global base DN" : "Základ DN skupiny není dílčím uzlem globálního základu DN", + "Login filter does not contain %uid place holder" : "Filtr přihlášení neobsahuje zástupné vyjádření %uid", "Please login with the new password" : "Přihlaste se pomocí nového hesla", "LDAP User backend" : "Podpůrná vrstva pro uživatele z LDAP", "Your password will expire tomorrow." : "Platnost hesla zítra skončí.", diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json index 99809f104d0..bf760a3b4e1 100644 --- a/apps/user_ldap/l10n/cs.json +++ b/apps/user_ldap/l10n/cs.json @@ -4,10 +4,12 @@ "Invalid configuration: Anonymous binding is not allowed." : "Neplatné nastavení: Anonymní navázání není umožněno.", "Valid configuration, connection established!" : "Nastavení je v pořádku a spojení bylo navázáno.", "Valid configuration, but binding failed. Please check the server settings and credentials." : "Nastavení je v pořádku, ale spojení se nezdařilo. Zkontrolujte nastavení serveru a přihlašovací údaje.", + "Invalid configuration: %s" : "Neplatné nastavení: %s", "No action specified" : "Neurčena žádná akce", "No configuration specified" : "Neurčeno žádné nastavení", "No data specified" : "Neurčena žádná data", "Invalid data specified" : "Zadána neplatná data", + "Could not set configuration %1$s to %2$s" : "Nepodařilo se nastavit konfiguraci %1$s na %2$s", "Action does not exist" : "Tato akce neexistuje", "Renewing …" : "Obnovování…", "Very weak password" : "Velmi snadno prolomitelné heslo", @@ -50,6 +52,14 @@ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Zástupný symbol „%uid“ chybí. Při dotatzu na LDAP/AD bude nahrazen přihlašovacím jménem.", "Please provide a login name to test against" : "Zadejte přihlašovací jméno, vůči kterému vyzkoušet", "The group box was disabled, because the LDAP/AD server does not support memberOf." : "Skupinová kolonka bylo vypnuta, protože LDAP/AD server nepodporuje memberOf.", + "Password change rejected. Hint: %s" : "Změna hesla zamítnuta. Nápověda: %s", + "Mandatory field \"%s\" left empty" : "Nezbytná kolonka „%s“ nevyplněna", + "A password is given, but not an LDAP agent" : "Heslo je zadáno, ale nikoli LDAP agent", + "No password is given for the user agent" : "Pro uživatelského agenta nezadáno žádné heslo", + "No LDAP base DN was given" : "Nezadáno LDAP základ DN", + "User base DN is not a subnode of global base DN" : "Základ DN uživatele není dílčím uzlem globálního základu DN", + "Group base DN is not a subnode of global base DN" : "Základ DN skupiny není dílčím uzlem globálního základu DN", + "Login filter does not contain %uid place holder" : "Filtr přihlášení neobsahuje zástupné vyjádření %uid", "Please login with the new password" : "Přihlaste se pomocí nového hesla", "LDAP User backend" : "Podpůrná vrstva pro uživatele z LDAP", "Your password will expire tomorrow." : "Platnost hesla zítra skončí.", diff --git a/apps/user_ldap/l10n/sr.js b/apps/user_ldap/l10n/sr.js index 8715668c585..1ed8abaaa50 100644 --- a/apps/user_ldap/l10n/sr.js +++ b/apps/user_ldap/l10n/sr.js @@ -6,10 +6,12 @@ OC.L10N.register( "Invalid configuration: Anonymous binding is not allowed." : "Неисправна конфигурација: Анонимно везивање није дозвољено.", "Valid configuration, connection established!" : "Исправна конфигурација, веза успостављена!", "Valid configuration, but binding failed. Please check the server settings and credentials." : "Исправна конфигурација, али везивање није успело. Проверите поставке сервера и акредитиве.", + "Invalid configuration: %s" : "Неисправна конфигурације: %s", "No action specified" : "Није наведена радња", "No configuration specified" : "Није наведена постава", "No data specified" : "Нису наведени подаци", "Invalid data specified" : "Наведени су неисправни подаци", + "Could not set configuration %1$s to %2$s" : "Конфигурација %1$s није могла да се постави на %2$s", "Action does not exist" : "Радња не постоји", "Renewing …" : "Обнављам …", "Very weak password" : "Веома слаба лозинка", @@ -52,6 +54,14 @@ OC.L10N.register( "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Недостаје „%uid” чувар места. Замениће се именом за пријаву када се буде вршио упит LDAP/AD.", "Please provide a login name to test against" : "Наведите пријавно име за тест са", "The group box was disabled, because the LDAP/AD server does not support memberOf." : "Кутија групе је искључена јер LDAP/AD сервер не подржава memberOf.", + "Password change rejected. Hint: %s" : "Промена лозинке није прихваћена. Савет: %s", + "Mandatory field \"%s\" left empty" : "Обавезно поље „%s” је остављено празно", + "A password is given, but not an LDAP agent" : "Лозинка је наведена, али LDAP агент није", + "No password is given for the user agent" : "Није наведена ниједна лозинка за корисничког агента", + "No LDAP base DN was given" : "Није наведен ниједан LDAP базни DN", + "User base DN is not a subnode of global base DN" : "Корисников базни DN није подчвор глобалног базног DN", + "Group base DN is not a subnode of global base DN" : "Базни DN групе није подчвор глобалног базног DN", + "Login filter does not contain %uid place holder" : "Филтер пријаве не садржи %u id чувар места", "Please login with the new password" : "Пријавите се са новом лозинком", "LDAP User backend" : "LDAP позадина за кориснике", "Your password will expire tomorrow." : "Ваша лозинка ће истећи сутра.", diff --git a/apps/user_ldap/l10n/sr.json b/apps/user_ldap/l10n/sr.json index 3f024b06e12..b04d1048fcb 100644 --- a/apps/user_ldap/l10n/sr.json +++ b/apps/user_ldap/l10n/sr.json @@ -4,10 +4,12 @@ "Invalid configuration: Anonymous binding is not allowed." : "Неисправна конфигурација: Анонимно везивање није дозвољено.", "Valid configuration, connection established!" : "Исправна конфигурација, веза успостављена!", "Valid configuration, but binding failed. Please check the server settings and credentials." : "Исправна конфигурација, али везивање није успело. Проверите поставке сервера и акредитиве.", + "Invalid configuration: %s" : "Неисправна конфигурације: %s", "No action specified" : "Није наведена радња", "No configuration specified" : "Није наведена постава", "No data specified" : "Нису наведени подаци", "Invalid data specified" : "Наведени су неисправни подаци", + "Could not set configuration %1$s to %2$s" : "Конфигурација %1$s није могла да се постави на %2$s", "Action does not exist" : "Радња не постоји", "Renewing …" : "Обнављам …", "Very weak password" : "Веома слаба лозинка", @@ -50,6 +52,14 @@ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Недостаје „%uid” чувар места. Замениће се именом за пријаву када се буде вршио упит LDAP/AD.", "Please provide a login name to test against" : "Наведите пријавно име за тест са", "The group box was disabled, because the LDAP/AD server does not support memberOf." : "Кутија групе је искључена јер LDAP/AD сервер не подржава memberOf.", + "Password change rejected. Hint: %s" : "Промена лозинке није прихваћена. Савет: %s", + "Mandatory field \"%s\" left empty" : "Обавезно поље „%s” је остављено празно", + "A password is given, but not an LDAP agent" : "Лозинка је наведена, али LDAP агент није", + "No password is given for the user agent" : "Није наведена ниједна лозинка за корисничког агента", + "No LDAP base DN was given" : "Није наведен ниједан LDAP базни DN", + "User base DN is not a subnode of global base DN" : "Корисников базни DN није подчвор глобалног базног DN", + "Group base DN is not a subnode of global base DN" : "Базни DN групе није подчвор глобалног базног DN", + "Login filter does not contain %uid place holder" : "Филтер пријаве не садржи %u id чувар места", "Please login with the new password" : "Пријавите се са новом лозинком", "LDAP User backend" : "LDAP позадина за кориснике", "Your password will expire tomorrow." : "Ваша лозинка ће истећи сутра.", diff --git a/apps/user_ldap/l10n/zh_TW.js b/apps/user_ldap/l10n/zh_TW.js index 66dd0ba4678..22cef54034d 100644 --- a/apps/user_ldap/l10n/zh_TW.js +++ b/apps/user_ldap/l10n/zh_TW.js @@ -11,6 +11,7 @@ OC.L10N.register( "No configuration specified" : "未指定組態設定", "No data specified" : "未指定資料", "Invalid data specified" : "指定了無效的資料", + "Could not set configuration %1$s to %2$s" : "無法將組態 %1$s 設定為 %2$s", "Action does not exist" : "動作不存在", "Renewing …" : "正在更新…", "Very weak password" : "密碼安全性極弱", @@ -53,6 +54,7 @@ OC.L10N.register( "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "「%uid」佔位字串遺失。查詢 LDAP/AD 時將會使用登入名稱取代。", "Please provide a login name to test against" : "請提供登入名稱以便再次測試", "The group box was disabled, because the LDAP/AD server does not support memberOf." : "由於 LDAP/AD 伺服器不支援 memberOf,群組盒已停用。", + "Password change rejected. Hint: %s" : "密碼變更被拒絕。提示:%s", "Mandatory field \"%s\" left empty" : "必填欄位「%s」為空", "A password is given, but not an LDAP agent" : "已提供密碼,但並未提供 LDAP 代理程式", "No password is given for the user agent" : "未提供使用者代理程式的密碼", diff --git a/apps/user_ldap/l10n/zh_TW.json b/apps/user_ldap/l10n/zh_TW.json index e2b37c607a6..df479aaafda 100644 --- a/apps/user_ldap/l10n/zh_TW.json +++ b/apps/user_ldap/l10n/zh_TW.json @@ -9,6 +9,7 @@ "No configuration specified" : "未指定組態設定", "No data specified" : "未指定資料", "Invalid data specified" : "指定了無效的資料", + "Could not set configuration %1$s to %2$s" : "無法將組態 %1$s 設定為 %2$s", "Action does not exist" : "動作不存在", "Renewing …" : "正在更新…", "Very weak password" : "密碼安全性極弱", @@ -51,6 +52,7 @@ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "「%uid」佔位字串遺失。查詢 LDAP/AD 時將會使用登入名稱取代。", "Please provide a login name to test against" : "請提供登入名稱以便再次測試", "The group box was disabled, because the LDAP/AD server does not support memberOf." : "由於 LDAP/AD 伺服器不支援 memberOf,群組盒已停用。", + "Password change rejected. Hint: %s" : "密碼變更被拒絕。提示:%s", "Mandatory field \"%s\" left empty" : "必填欄位「%s」為空", "A password is given, but not an LDAP agent" : "已提供密碼,但並未提供 LDAP 代理程式", "No password is given for the user agent" : "未提供使用者代理程式的密碼", diff --git a/apps/user_ldap/lib/Command/TestUserSettings.php b/apps/user_ldap/lib/Command/TestUserSettings.php index 88524eded02..51cf7c06473 100644 --- a/apps/user_ldap/lib/Command/TestUserSettings.php +++ b/apps/user_ldap/lib/Command/TestUserSettings.php @@ -101,6 +101,8 @@ class TestUserSettings extends Command { $output->writeln(''); $attributeNames = [ + 'ldapBase', + 'ldapBaseUsers', 'ldapExpertUsernameAttr', 'ldapUuidUserAttribute', 'ldapExpertUUIDUserAttr', @@ -120,11 +122,17 @@ class TestUserSettings extends Command { 'ldapAttributeBiography', 'ldapAttributeBirthDate', 'ldapAttributePronouns', + 'ldapGidNumber', + 'hasGidNumber', ]; $output->writeln('Attributes set in configuration:'); foreach ($attributeNames as $attributeName) { - if ($connection->$attributeName !== '') { - $output->writeln("- $attributeName: <info>" . $connection->$attributeName . '</info>'); + if (($connection->$attributeName !== '') && ($connection->$attributeName !== [])) { + if (\is_string($connection->$attributeName)) { + $output->writeln("- $attributeName: <info>" . $connection->$attributeName . '</info>'); + } else { + $output->writeln("- $attributeName: <info>" . \json_encode($connection->$attributeName) . '</info>'); + } } } @@ -134,6 +142,9 @@ class TestUserSettings extends Command { if ($connection->ldapUuidUserAttribute !== 'auto') { $attrs[] = strtolower($connection->ldapUuidUserAttribute); } + if ($connection->hasGidNumber) { + $attrs[] = strtolower($connection->ldapGidNumber); + } $attrs[] = 'memberof'; $attrs = array_values(array_unique($attrs)); $attributes = $access->readAttributes($knownDn, $attrs, $filter); @@ -170,6 +181,7 @@ class TestUserSettings extends Command { $output->writeln('Group information:'); $attributeNames = [ + 'ldapBaseGroups', 'ldapDynamicGroupMemberURL', 'ldapGroupFilter', 'ldapGroupMemberAssocAttr', diff --git a/apps/webhook_listeners/l10n/hu.js b/apps/webhook_listeners/l10n/hu.js new file mode 100644 index 00000000000..4db0d1cca71 --- /dev/null +++ b/apps/webhook_listeners/l10n/hu.js @@ -0,0 +1,7 @@ +OC.L10N.register( + "webhook_listeners", + { + "Webhooks" : "Webhookok", + "Nextcloud webhook support" : "Nextcloud webhook támogatás" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/webhook_listeners/l10n/hu.json b/apps/webhook_listeners/l10n/hu.json new file mode 100644 index 00000000000..cdd80ca91e4 --- /dev/null +++ b/apps/webhook_listeners/l10n/hu.json @@ -0,0 +1,5 @@ +{ "translations": { + "Webhooks" : "Webhookok", + "Nextcloud webhook support" : "Nextcloud webhook támogatás" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/build/integration/config/behat.yml b/build/integration/config/behat.yml index 47f8f3c827c..eec8b5b77fc 100644 --- a/build/integration/config/behat.yml +++ b/build/integration/config/behat.yml @@ -113,6 +113,12 @@ default: - CommandLineContext: baseUrl: http://localhost:8080 ocPath: ../../ + - MetadataContext: + baseUrl: http://localhost:8080 + admin: + - admin + - admin + regular_user_password: 123456 files_conversion: paths: - "%paths.base%/../file_conversions" diff --git a/build/integration/features/bootstrap/MetadataContext.php b/build/integration/features/bootstrap/MetadataContext.php new file mode 100644 index 00000000000..893c08a5467 --- /dev/null +++ b/build/integration/features/bootstrap/MetadataContext.php @@ -0,0 +1,123 @@ +<?php +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +use Behat\Behat\Context\Context; +use Behat\Step\Then; +use Behat\Step\When; +use PHPUnit\Framework\Assert; +use Sabre\DAV\Client as SClient; + +require __DIR__ . '/../../vendor/autoload.php'; + +class MetadataContext implements Context { + private string $davPath = '/remote.php/dav'; + + public function __construct( + private string $baseUrl, + private array $admin, + private string $regular_user_password, + ) { + // in case of ci deployment we take the server url from the environment + $testServerUrl = getenv('TEST_SERVER_URL'); + if ($testServerUrl !== false) { + $this->baseUrl = substr($testServerUrl, 0, -5); + } + } + + #[When('User :user sets the :metadataKey prop with value :metadataValue on :fileName')] + public function userSetsProp(string $user, string $metadataKey, string $metadataValue, string $fileName) { + $client = new SClient([ + 'baseUri' => $this->baseUrl, + 'userName' => $user, + 'password' => '123456', + 'authType' => SClient::AUTH_BASIC, + ]); + + $body = '<?xml version="1.0"?> +<d:propertyupdate xmlns:d="DAV:" xmlns:nc="http://nextcloud.com/ns"> + <d:set> + <d:prop> + <nc:' . $metadataKey . '>' . $metadataValue . '</nc:' . $metadataKey . '> + </d:prop> + </d:set> +</d:propertyupdate>'; + + $davUrl = $this->getDavUrl($user, $fileName); + $client->request('PROPPATCH', $this->baseUrl . $davUrl, $body); + } + + #[When('User :user deletes the :metadataKey prop on :fileName')] + public function userDeletesProp(string $user, string $metadataKey, string $fileName) { + $client = new SClient([ + 'baseUri' => $this->baseUrl, + 'userName' => $user, + 'password' => '123456', + 'authType' => SClient::AUTH_BASIC, + ]); + + $body = '<?xml version="1.0"?> +<d:propertyupdate xmlns:d="DAV:" xmlns:nc="http://nextcloud.com/ns"> + <d:remove> + <d:prop> + <nc:' . $metadataKey . '></nc:' . $metadataKey . '> + </d:prop> + </d:remove> +</d:propertyupdate>'; + + $davUrl = $this->getDavUrl($user, $fileName); + $client->request('PROPPATCH', $this->baseUrl . $davUrl, $body); + } + + #[Then('User :user should see the prop :metadataKey equal to :metadataValue for file :fileName')] + public function checkPropForFile(string $user, string $metadataKey, string $metadataValue, string $fileName) { + $client = new SClient([ + 'baseUri' => $this->baseUrl, + 'userName' => $user, + 'password' => '123456', + 'authType' => SClient::AUTH_BASIC, + ]); + + $body = '<?xml version="1.0"?> +<d:propfind xmlns:d="DAV:" xmlns:nc="http://nextcloud.com/ns"> + <d:prop> + <nc:' . $metadataKey . '></nc:' . $metadataKey . '> + </d:prop> +</d:propfind>'; + + $davUrl = $this->getDavUrl($user, $fileName); + $response = $client->request('PROPFIND', $this->baseUrl . $davUrl, $body); + $parsedResponse = $client->parseMultistatus($response['body']); + + Assert::assertEquals($parsedResponse[$davUrl]['200']['{http://nextcloud.com/ns}' . $metadataKey], $metadataValue); + } + + #[Then('User :user should not see the prop :metadataKey for file :fileName')] + public function checkPropDoesNotExistsForFile(string $user, string $metadataKey, string $fileName) { + $client = new SClient([ + 'baseUri' => $this->baseUrl, + 'userName' => $user, + 'password' => '123456', + 'authType' => SClient::AUTH_BASIC, + ]); + + $body = '<?xml version="1.0"?> +<d:propfind xmlns:d="DAV:" xmlns:nc="http://nextcloud.com/ns"> + <d:prop> + <nc:' . $metadataKey . '></nc:' . $metadataKey . '> + </d:prop> +</d:propfind>'; + + $davUrl = $this->getDavUrl($user, $fileName); + $response = $client->request('PROPFIND', $this->baseUrl . $davUrl, $body); + $parsedResponse = $client->parseMultistatus($response['body']); + + Assert::assertEquals($parsedResponse[$davUrl]['404']['{http://nextcloud.com/ns}' . $metadataKey], null); + } + + private function getDavUrl(string $user, string $fileName) { + return $this->davPath . '/files/' . $user . $fileName; + } +} diff --git a/build/integration/files_features/metadata.feature b/build/integration/files_features/metadata.feature new file mode 100644 index 00000000000..553a7b62306 --- /dev/null +++ b/build/integration/files_features/metadata.feature @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-only +Feature: metadata + + Scenario: Setting metadata works + Given user "user0" exists + When User "user0" uploads file with content "AAA" to "/test.txt" + And User "user0" sets the "metadata-files-live-photo" prop with value "metadata-value" on "/test.txt" + Then User "user0" should see the prop "metadata-files-live-photo" equal to "metadata-value" for file "/test.txt" + + Scenario: Deleting metadata works + Given user "user0" exists + When User "user0" uploads file with content "AAA" to "/test.txt" + And User "user0" sets the "metadata-files-live-photo" prop with value "metadata-value" on "/test.txt" + And User "user0" deletes the "metadata-files-live-photo" prop on "/test.txt" + Then User "user0" should not see the prop "metadata-files-live-photo" for file "/test.txt" diff --git a/cypress/e2e/files/FilesUtils.ts b/cypress/e2e/files/FilesUtils.ts index 1534c1b9dda..576b6dac086 100644 --- a/cypress/e2e/files/FilesUtils.ts +++ b/cypress/e2e/files/FilesUtils.ts @@ -173,9 +173,13 @@ export const renameFile = (fileName: string, newFileName: string) => { export const navigateToFolder = (dirPath: string) => { const directories = dirPath.split('/') - directories.forEach((directory) => { + for (const directory of directories) { + if (directory === '') { + continue + } + getRowForFile(directory).should('be.visible').find('[data-cy-files-list-row-name-link]').click() - }) + } } diff --git a/cypress/e2e/files/files-actions.cy.ts b/cypress/e2e/files/files-actions.cy.ts index 597b1b90464..a7febbda45a 100644 --- a/cypress/e2e/files/files-actions.cy.ts +++ b/cypress/e2e/files/files-actions.cy.ts @@ -13,7 +13,7 @@ import { ACTION_DETAILS } from '../../../apps/files/src/actions/sidebarAction' import { ACTION_SHARING_STATUS } from '../../../apps/files_sharing/src/files_actions/sharingStatusAction' declare global { - interface Window { + interface Window { _nc_fileactions: FileAction[] } } @@ -54,7 +54,7 @@ describe('Files: Actions', { testIsolation: true }, () => { // Check the action is visible getActionEntryForFileId(fileId, actionId).should('be.visible') // Close the menu - cy.get('body').click({ force: true}) + cy.get('body').click({ force: true }) }) }) @@ -62,7 +62,7 @@ describe('Files: Actions', { testIsolation: true }, () => { const parent = new FileAction({ id: 'nested-action', displayName: () => 'Nested Action', - exec: cy.spy(), + exec: cy.spy(), iconSvgInline: () => '<svg></svg>', }) diff --git a/cypress/e2e/files/files-delete.cy.ts b/cypress/e2e/files/files-delete.cy.ts new file mode 100644 index 00000000000..edb88519c59 --- /dev/null +++ b/cypress/e2e/files/files-delete.cy.ts @@ -0,0 +1,74 @@ +/*! + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import type { User } from '@nextcloud/cypress' +import { getRowForFile, navigateToFolder, selectAllFiles, triggerActionForFile } from './FilesUtils.ts' + +describe('files: Delete files using file actions', { testIsolation: true }, () => { + let user: User + + beforeEach(() => { + cy.createRandomUser().then(($user) => { + user = $user + }) + }) + + it('can delete file', () => { + cy.uploadContent(user, new Blob([]), 'text/plain', '/file.txt') + cy.login(user) + cy.visit('/apps/files') + + // The file must exist and the preview loaded as it locks the file + getRowForFile('file.txt') + .should('be.visible') + .find('.files-list__row-icon-preview--loaded') + .should('exist') + + cy.intercept('DELETE', '**/remote.php/dav/files/**').as('deleteFile') + + triggerActionForFile('file.txt', 'delete') + cy.wait('@deleteFile').its('response.statusCode').should('eq', 204) + }) + + it('can delete multiple files', () => { + cy.mkdir(user, '/root') + for (let i = 0; i < 5; i++) { + cy.uploadContent(user, new Blob([]), 'text/plain', `/root/file${i}.txt`) + } + cy.login(user) + cy.visit('/apps/files') + navigateToFolder('/root') + + // The file must exist and the preview loaded as it locks the file + cy.get('.files-list__row-icon-preview--loaded') + .should('have.length', 5) + + cy.intercept('DELETE', '**/remote.php/dav/files/**').as('deleteFile') + + // select all + selectAllFiles() + cy.get('[data-cy-files-list-selection-actions]') + .findByRole('button', { name: 'Actions' }) + .click() + cy.get('[data-cy-files-list-selection-action="delete"]') + .findByRole('menuitem', { name: /^Delete files/ }) + .click() + + // see dialog for confirmation + cy.findByRole('dialog', { name: 'Confirm deletion' }) + .findByRole('button', { name: 'Delete files' }) + .click() + + cy.wait('@deleteFile') + cy.get('@deleteFile.all') + .should('have.length', 5) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + .should((all: any) => { + for (const call of all) { + expect(call.response.statusCode).to.equal(204) + } + }) + }) +}) diff --git a/cypress/e2e/files_trashbin/files-trash-action.cy.ts b/cypress/e2e/files_trashbin/files-trash-action.cy.ts index 85cb854b8e5..090a7ed8d5d 100644 --- a/cypress/e2e/files_trashbin/files-trash-action.cy.ts +++ b/cypress/e2e/files_trashbin/files-trash-action.cy.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ import type { User } from '@nextcloud/cypress' -import { deleteFileWithRequest, getRowForFile, triggerActionForFile, triggerFileListAction } from '../files/FilesUtils.ts' +import { deleteFileWithRequest, triggerFileListAction } from '../files/FilesUtils.ts' const FILE_COUNT = 5 describe('files_trashbin: Empty trashbin action', { testIsolation: true }, () => { @@ -12,44 +12,19 @@ describe('files_trashbin: Empty trashbin action', { testIsolation: true }, () => beforeEach(() => { cy.createRandomUser().then(($user) => { user = $user - // create 5 fake files + // create 5 fake files and move them to trash for (let index = 0; index < FILE_COUNT; index++) { cy.uploadContent(user, new Blob(['<content>']), 'text/plain', `/file${index}.txt`) + deleteFileWithRequest(user, `/file${index}.txt`) } - + // login cy.login(user) - cy.visit('/apps/files') }) }) - it('Can delete files', () => { - for (let i = 0; i < FILE_COUNT; i++) { - getRowForFile(`file${i}.txt`).should('be.visible') - } - - cy.intercept('DELETE', '**/remote.php/dav/files/**').as('deleteFile') - - // Delete all files one by one - for (let i = 0; i < FILE_COUNT; i++) { - triggerActionForFile(`file${i}.txt`, 'delete') - cy.wait('@deleteFile').its('response.statusCode').should('eq', 204) - } - - cy.get('@deleteFile.all').should('have.length', FILE_COUNT) - - for (let i = 0; i < FILE_COUNT; i++) { - getRowForFile(`file${i}.txt`).should('not.exist') - } - }) - it('Can empty trashbin', () => { - // Delete files from home - for (let index = 0; index < FILE_COUNT; index++) { - deleteFileWithRequest(user, `/file${index}.txt`) - } - - // Home have no files (or the default welcome file) cy.visit('/apps/files') + // Home have no files (or the default welcome file) cy.get('[data-cy-files-list-row-fileid]').should('have.length', 1) cy.get('[data-cy-files-list-action="empty-trash"]').should('not.exist') @@ -74,11 +49,6 @@ describe('files_trashbin: Empty trashbin action', { testIsolation: true }, () => }) it('Cancelling empty trashbin action does not delete anything', () => { - // Delete files from home - new Array(FILE_COUNT).fill(0).forEach((_, index) => { - deleteFileWithRequest(user, `/file${index}.txt`) - }) - // Go to trashbin, and see our deleted files cy.visit('/apps/files/trashbin') cy.get('[data-cy-files-list-row-fileid]').should('have.length', FILE_COUNT) diff --git a/dist/files_sharing-init-public.js b/dist/files_sharing-init-public.js index d24cc2602cd..66f98943fbc 100644 --- a/dist/files_sharing-init-public.js +++ b/dist/files_sharing-init-public.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t,r,i={51528:(e,t,r)=>{var i=r(61338),n=r(35810),s=r(32981),o=r(53334),a=r(50352),l=r(85471);const u='<svg xmlns="http://www.w3.org/2000/svg" id="mdi-link" viewBox="0 0 24 24"><path d="M3.9,12C3.9,10.29 5.29,8.9 7,8.9H11V7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H11V15.1H7C5.29,15.1 3.9,13.71 3.9,12M8,13H16V11H8V13M17,7H13V8.9H17C18.71,8.9 20.1,10.29 20.1,12C20.1,13.71 18.71,15.1 17,15.1H13V17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7Z" /></svg>';var c=r(36117),h=r(43627);const d=(0,r(77815).KU)();var f=r(35947);const p=(0,f.YK)().setApp("files").detectUser().build(),g=e=>(0,n.Al)(e),m=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";e=(0,h.join)(n.lJ,e);const t=new AbortController,r=(0,n.VL)();return new c.CancelablePromise((async(i,n,s)=>{s((()=>t.abort()));try{const n=await d.getDirectoryContents(e,{details:!0,data:r,includeSelf:!0,signal:t.signal}),s=n.data[0],o=n.data.slice(1);if(s.filename!==e&&`${s.filename}/`!==e)throw p.debug(`Exepected "${e}" but got filename "${s.filename}" instead.`),new Error("Root node does not match requested path");i({folder:g(s),contents:o.map((e=>{try{return g(e)}catch(t){return p.error(`Invalid node detected '${e.basename}'`,{error:t}),null}})).filter(Boolean)})}catch(e){n(e)}}))},E=(0,f.YK)().setApp("files_sharing").detectUser().build();var N=r(63814),b=r(82490),w=r(40173);const v=(0,s.C)("files_sharing","view"),y=(0,s.C)("files_sharing","sharingToken");l.Ay.use(w.Ay);const x=w.Ay.prototype.push;w.Ay.prototype.push=function(e,t,r){return t||r?x.call(this,e,t,r):x.call(this,e).catch((e=>e))};const I=new w.Ay({mode:"history",base:(0,N.Jv)("/s"),linkActiveClass:"active",routes:[{path:"/",redirect:{name:"filelist",params:{view:v,token:y}}},{path:"/:token",name:"filelist",props:!0}],stringifyQuery(e){const t=b.A.stringify(e).replace(/%2F/gim,"/");return t?"?"+t:""}});(()=>{const e=(0,s.C)("files_sharing","filename");let t,i;const u=new n.Ss({id:"public-file-drop",name:(0,o.Tl)("files_sharing","File drop"),caption:(0,o.Tl)("files_sharing","Upload files to {foldername}",{foldername:e}),icon:a,order:1,emptyView:async n=>{if(void 0===t){const{default:e}=await Promise.all([r.e(4208),r.e(358)]).then(r.bind(r,90358));t=l.Ay.extend(e)}i&&i.$destroy(),i=new t({propsData:{foldername:e}}),i.$mount(n)},getContents:async()=>({contents:[],folder:new n.vd({id:0,source:`${n.PY}${n.lJ}`,root:n.lJ,owner:null,permissions:n.aX.CREATE})})});(0,n.bh)().register(u)})(),(()=>{const e=new n.Ss({id:"public-share",name:(0,o.Tl)("files_sharing","Public share"),caption:(0,o.Tl)("files_sharing","Publicly shared files."),emptyTitle:(0,o.Tl)("files_sharing","No files"),emptyCaption:(0,o.Tl)("files_sharing","Files and folders shared with you will show up here"),icon:u,order:1,getContents:m});(0,n.bh)().register(e)})(),(()=>{const e=new n.Ss({id:"public-file-share",name:(0,o.Tl)("files_sharing","Public file share"),caption:(0,o.Tl)("files_sharing","Publicly shared file."),emptyTitle:(0,o.Tl)("files_sharing","No file"),emptyCaption:(0,o.Tl)("files_sharing","The file shared with you will show up here"),icon:u,order:1,getContents:()=>new c.CancelablePromise((async(e,t,r)=>{const i=new AbortController;r((()=>i.abort()));try{const t=await d.stat(n.lJ,{data:(0,n.VL)(),details:!0,signal:i.signal});e({contents:[(0,n.Al)(t.data)],folder:new n.vd({id:0,source:`${n.PY}${n.lJ}`,root:n.lJ,owner:null,permissions:n.aX.READ,attributes:{note:t.data.props?.note}})})}catch(e){E.error(e),t(e)}}))});(0,n.bh)().register(e)})();const O=(0,s.C)("files_sharing","view"),T=(0,n.bh)();T.setActive(T.views.find((e=>{let{id:t}=e;return t===O}))??null),window.OCP.Files=window.OCP.Files??{},window.OCP.Files.Router=new class{constructor(e){var t,r,i;t=this,i=void 0,(r=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(r="router"))in t?Object.defineProperty(t,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[r]=i,this.router=e}get name(){return this.router.currentRoute.name}get query(){return this.router.currentRoute.query||{}}get params(){return this.router.currentRoute.params||{}}get _router(){return this.router}goTo(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.router.push({path:e,replace:t})}goToRoute(e,t,r,i){return this.router.push({name:e,query:r,params:t,replace:i})}}(I);const A=(0,s.C)("files_sharing","fileId",null),R=(0,s.C)("files_sharing","sharingToken");null!==A&&window.OCP.Files.Router.goToRoute("filelist",{...window.OCP.Files.Router.params,token:R,fileid:String(A)},{...window.OCP.Files.Router.query,openfile:"true"}),(0,i.B1)("files:list:updated",(function e(t){let{folder:r}=t;if((0,i.al)("files:list:updated",e),r.attributes["share-attributes"]){const e=JSON.parse(r.attributes["share-attributes"]||"[]").find((e=>{let{scope:t,key:r}=e;return"config"===t&&"grid_view"===r}));void 0!==e&&(E.debug("Loading share attributes",{gridViewAttribute:e}),(0,i.Ic)("files:config:updated",{key:"grid_view",value:!0===e.value}))}}))},50352:e=>{e.exports='<svg xmlns="http://www.w3.org/2000/svg" id="mdi-cloud-upload" viewBox="0 0 24 24"><path d="M11 20H6.5Q4.22 20 2.61 18.43 1 16.85 1 14.58 1 12.63 2.17 11.1 3.35 9.57 5.25 9.15 5.88 6.85 7.75 5.43 9.63 4 12 4 14.93 4 16.96 6.04 19 8.07 19 11 20.73 11.2 21.86 12.5 23 13.78 23 15.5 23 17.38 21.69 18.69 20.38 20 18.5 20H13V12.85L14.6 14.4L16 13L12 9L8 13L9.4 14.4L11 12.85Z" /></svg>'},35810:(e,t,r)=>{r.d(t,{Al:()=>i.r,E6:()=>p,H4:()=>i.c,KT:()=>f,PY:()=>i.b,Q$:()=>i.e,R3:()=>i.n,Ss:()=>ie,VL:()=>i.l,a7:()=>u,aX:()=>i.P,bh:()=>v,di:()=>d,lJ:()=>i.d,m1:()=>Te,nF:()=>h,pt:()=>i.F,ur:()=>b,v7:()=>E,vd:()=>i.s});var i=r(68251),n=r(87485),s=r(43627),o=r(53334),a=r(380),l=r(65606),u=(e=>(e[e.UploadFromDevice=0]="UploadFromDevice",e[e.CreateNew=1]="CreateNew",e[e.Other=2]="Other",e))(u||{});class c{_entries=[];registerEntry(e){this.validateEntry(e),e.category=e.category??1,this._entries.push(e)}unregisterEntry(e){const t="string"==typeof e?this.getEntryIndex(e):this.getEntryIndex(e.id);-1!==t?this._entries.splice(t,1):i.o.warn("Entry not found, nothing removed",{entry:e,entries:this.getEntries()})}getEntries(e){return e?this._entries.filter((t=>"function"!=typeof t.enabled||t.enabled(e))):this._entries}getEntryIndex(e){return this._entries.findIndex((t=>t.id===e))}validateEntry(e){if(!e.id||!e.displayName||!e.iconSvgInline&&!e.iconClass||!e.handler)throw new Error("Invalid entry");if("string"!=typeof e.id||"string"!=typeof e.displayName)throw new Error("Invalid id or displayName property");if(e.iconClass&&"string"!=typeof e.iconClass||e.iconSvgInline&&"string"!=typeof e.iconSvgInline)throw new Error("Invalid icon provided");if(void 0!==e.enabled&&"function"!=typeof e.enabled)throw new Error("Invalid enabled property");if("function"!=typeof e.handler)throw new Error("Invalid handler property");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order property");if(-1!==this.getEntryIndex(e.id))throw new Error("Duplicate entry")}}var h=(e=>(e.ReservedName="reserved name",e.Character="character",e.Extension="extension",e))(h||{});class d extends Error{constructor(e){super(`Invalid ${e.reason} '${e.segment}' in filename '${e.filename}'`,{cause:e})}get filename(){return this.cause.filename}get reason(){return this.cause.reason}get segment(){return this.cause.segment}}function f(e){const t=(0,n.F)().files,r=t.forbidden_filename_characters??window._oc_config?.forbidden_filenames_characters??["/","\\"];for(const t of r)if(e.includes(t))throw new d({segment:t,reason:"character",filename:e});if(e=e.toLocaleLowerCase(),(t.forbidden_filenames??[".htaccess"]).includes(e))throw new d({filename:e,segment:e,reason:"reserved name"});const i=e.indexOf(".",1),s=e.substring(0,-1===i?void 0:i);if((t.forbidden_filename_basenames??[]).includes(s))throw new d({filename:e,segment:s,reason:"reserved name"});const o=t.forbidden_filename_extensions??[".part",".filepart"];for(const t of o)if(e.length>t.length&&e.endsWith(t))throw new d({segment:t,reason:"extension",filename:e})}function p(e,t,r){const i={suffix:e=>`(${e})`,ignoreFileExtension:!1,...r};let n=e,o=1;for(;t.includes(n);){const t=i.ignoreFileExtension?"":(0,s.extname)(e);n=`${(0,s.basename)(e,t)} ${i.suffix(o++)}${t}`}return n}const g=["B","KB","MB","GB","TB","PB"],m=["B","KiB","MiB","GiB","TiB","PiB"];function E(e,t=!1,r=!1,i=!1){r=r&&!i,"string"==typeof e&&(e=Number(e));let n=e>0?Math.floor(Math.log(e)/Math.log(i?1e3:1024)):0;n=Math.min((r?m.length:g.length)-1,n);const s=r?m[n]:g[n];let a=(e/Math.pow(i?1e3:1024,n)).toFixed(1);return!0===t&&0===n?("0.0"!==a?"< 1 ":"0 ")+(r?m[1]:g[1]):(a=n<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,o.lO)()),a+" "+s)}function N(e){return e instanceof Date?e.toISOString():String(e)}function b(e,t={}){const r={sortingMode:"basename",sortingOrder:"asc",...t};return function(e,t,r){r=r??[];const i=(t=t??[e=>e]).map(((e,t)=>"asc"===(r[t]??"asc")?1:-1)),n=Intl.Collator([(0,o.Z0)(),(0,o.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,r)=>{for(const[s,o]of t.entries()){const t=n.compare(N(o(e)),N(o(r)));if(0!==t)return t*i[s]}return 0}))}(e,[...r.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...r.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==r.sortingMode?[e=>e[r.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...r.sortFavoritesFirst?["asc"]:[],...r.sortFoldersFirst?["asc"]:[],..."mtime"===r.sortingMode?["asc"===r.sortingOrder?"desc":"asc"]:[],..."mtime"!==r.sortingMode&&"basename"!==r.sortingMode?[r.sortingOrder]:[],r.sortingOrder,r.sortingOrder])}class w extends a.m{_views=[];_currentView=null;register(e){if(this._views.find((t=>t.id===e.id)))throw new Error(`View id ${e.id} is already registered`);this._views.push(e),this.dispatchTypedEvent("update",new CustomEvent("update"))}remove(e){const t=this._views.findIndex((t=>t.id===e));-1!==t&&(this._views.splice(t,1),this.dispatchTypedEvent("update",new CustomEvent("update")))}setActive(e){this._currentView=e;const t=new CustomEvent("updateActive",{detail:e});this.dispatchTypedEvent("updateActive",t)}get active(){return this._currentView}get views(){return this._views}}const v=function(){return void 0===window._nc_navigation&&(window._nc_navigation=new w,i.o.debug("Navigation service initialized")),window._nc_navigation};class y{_column;constructor(e){x(e),this._column=e}get id(){return this._column.id}get title(){return this._column.title}get render(){return this._column.render}get sort(){return this._column.sort}get summary(){return this._column.summary}}const x=function(e){if(!e.id||"string"!=typeof e.id)throw new Error("A column id is required");if(!e.title||"string"!=typeof e.title)throw new Error("A column title is required");if(!e.render||"function"!=typeof e.render)throw new Error("A render function is required");if(e.sort&&"function"!=typeof e.sort)throw new Error("Column sortFunction must be a function");if(e.summary&&"function"!=typeof e.summary)throw new Error("Column summary must be a function");return!0};var I,O,T={},A={};function R(){return I||(I=1,function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",i=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const i=Object.keys(t),n=i.length;for(let s=0;s<n;s++)e[i[s]]="strict"===r?[t[i[s]]]:t[i[s]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){return!(null==i.exec(e))},e.getAllMatches=function(e,t){const r=[];let i=t.exec(e);for(;i;){const n=[];n.startIndex=t.lastIndex-i[0].length;const s=i.length;for(let e=0;e<s;e++)n.push(i[e]);r.push(n),i=t.exec(e)}return r},e.nameRegexp=r}(A)),A}function L(){if(O)return T;O=1;const e=R(),t={allowBooleanAttributes:!1,unpairedTags:[]};function r(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function i(e,t){const r=t;for(;t<e.length;t++)if("?"!=e[t]&&" "!=e[t]);else{const i=e.substr(r,t-r);if(t>5&&"xml"===i)return h("InvalidXml","XML declaration allowed only at the start of the document.",f(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function n(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t<e.length;t++)if("-"===e[t]&&"-"===e[t+1]&&">"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t<e.length;t++)if("<"===e[t])r++;else if(">"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t<e.length;t++)if("]"===e[t]&&"]"===e[t+1]&&">"===e[t+2]){t+=2;break}return t}T.validate=function(s,o){o=Object.assign({},t,o);const l=[];let d=!1,p=!1;"\ufeff"===s[0]&&(s=s.substr(1));for(let t=0;t<s.length;t++)if("<"===s[t]&&"?"===s[t+1]){if(t+=2,t=i(s,t),t.err)return t}else{if("<"!==s[t]){if(r(s[t]))continue;return h("InvalidChar","char '"+s[t]+"' is not expected.",f(s,t))}{let m=t;if(t++,"!"===s[t]){t=n(s,t);continue}{let E=!1;"/"===s[t]&&(E=!0,t++);let N="";for(;t<s.length&&">"!==s[t]&&" "!==s[t]&&"\t"!==s[t]&&"\n"!==s[t]&&"\r"!==s[t];t++)N+=s[t];if(N=N.trim(),"/"===N[N.length-1]&&(N=N.substring(0,N.length-1),t--),g=N,!e.isName(g)){let e;return e=0===N.trim().length?"Invalid space after '<'.":"Tag '"+N+"' is an invalid name.",h("InvalidTag",e,f(s,t))}const b=a(s,t);if(!1===b)return h("InvalidAttr","Attributes for '"+N+"' have open quote.",f(s,t));let w=b.value;if(t=b.index,"/"===w[w.length-1]){const e=t-w.length;w=w.substring(0,w.length-1);const r=u(w,o);if(!0!==r)return h(r.err.code,r.err.msg,f(s,e+r.err.line));d=!0}else if(E){if(!b.tagClosed)return h("InvalidTag","Closing tag '"+N+"' doesn't have proper closing.",f(s,t));if(w.trim().length>0)return h("InvalidTag","Closing tag '"+N+"' can't have attributes or invalid starting.",f(s,m));if(0===l.length)return h("InvalidTag","Closing tag '"+N+"' has not been opened.",f(s,m));{const e=l.pop();if(N!==e.tagName){let t=f(s,e.tagStartPos);return h("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+t.line+", col "+t.col+") instead of closing tag '"+N+"'.",f(s,m))}0==l.length&&(p=!0)}}else{const e=u(w,o);if(!0!==e)return h(e.err.code,e.err.msg,f(s,t-w.length+e.err.line));if(!0===p)return h("InvalidXml","Multiple possible root nodes found.",f(s,t));-1!==o.unpairedTags.indexOf(N)||l.push({tagName:N,tagStartPos:m}),d=!0}for(t++;t<s.length;t++)if("<"===s[t]){if("!"===s[t+1]){t++,t=n(s,t);continue}if("?"!==s[t+1])break;if(t=i(s,++t),t.err)return t}else if("&"===s[t]){const e=c(s,t);if(-1==e)return h("InvalidChar","char '&' is not expected.",f(s,t));t=e}else if(!0===p&&!r(s[t]))return h("InvalidXml","Extra text at the end",f(s,t));"<"===s[t]&&t--}}}var g;return d?1==l.length?h("InvalidTag","Unclosed tag '"+l[0].tagName+"'.",f(s,l[0].tagStartPos)):!(l.length>0)||h("InvalidXml","Invalid '"+JSON.stringify(l.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):h("InvalidXml","Start tag expected.",1)};const s='"',o="'";function a(e,t){let r="",i="",n=!1;for(;t<e.length;t++){if(e[t]===s||e[t]===o)""===i?i=e[t]:i!==e[t]||(i="");else if(">"===e[t]&&""===i){n=!0;break}r+=e[t]}return""===i&&{value:r,index:t,tagClosed:n}}const l=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function u(t,r){const i=e.getAllMatches(t,l),n={};for(let e=0;e<i.length;e++){if(0===i[e][1].length)return h("InvalidAttr","Attribute '"+i[e][2]+"' has no space in starting.",p(i[e]));if(void 0!==i[e][3]&&void 0===i[e][4])return h("InvalidAttr","Attribute '"+i[e][2]+"' is without value.",p(i[e]));if(void 0===i[e][3]&&!r.allowBooleanAttributes)return h("InvalidAttr","boolean attribute '"+i[e][2]+"' is not allowed.",p(i[e]));const t=i[e][2];if(!d(t))return h("InvalidAttr","Attribute '"+t+"' is an invalid name.",p(i[e]));if(n.hasOwnProperty(t))return h("InvalidAttr","Attribute '"+t+"' is repeated.",p(i[e]));n[t]=1}return!0}function c(e,t){if(";"===e[++t])return-1;if("#"===e[t])return function(e,t){let r=/\d/;for("x"===e[t]&&(t++,r=/[\da-fA-F]/);t<e.length;t++){if(";"===e[t])return t;if(!e[t].match(r))break}return-1}(e,++t);let r=0;for(;t<e.length;t++,r++)if(!(e[t].match(/\w/)&&r<20)){if(";"===e[t])break;return-1}return t}function h(e,t,r){return{err:{code:e,msg:t,line:r.line||r,col:r.col}}}function d(t){return e.isName(t)}function f(e,t){const r=e.substring(0,t).split(/\r?\n/);return{line:r.length,col:r[r.length-1].length+1}}function p(e){return e.startIndex+e[1].length}return T}var $,C,P,_,S,F,D,V,M,j,k,G={};function U(){return M?V:(M=1,V=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1})}var X,B,H,q,Y,K,J,Z,z,Q={};function W(){if(X)return Q;function e(n,s,o){let a;const l={};for(let u=0;u<n.length;u++){const c=n[u],h=t(c);let d="";if(d=void 0===o?h:o+"."+h,h===s.textNodeName)void 0===a?a=c[h]:a+=""+c[h];else{if(void 0===h)continue;if(c[h]){let t=e(c[h],s,d);const n=i(t,s);c[":@"]?r(t,c[":@"],d,s):1!==Object.keys(t).length||void 0===t[s.textNodeName]||s.alwaysCreateTextNode?0===Object.keys(t).length&&(s.alwaysCreateTextNode?t[s.textNodeName]="":t=""):t=t[s.textNodeName],void 0!==l[h]&&l.hasOwnProperty(h)?(Array.isArray(l[h])||(l[h]=[l[h]]),l[h].push(t)):s.isArray(h,d,n)?l[h]=[t]:l[h]=t}}}return"string"==typeof a?a.length>0&&(l[s.textNodeName]=a):void 0!==a&&(l[s.textNodeName]=a),l}function t(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const r=t[e];if(":@"!==r)return r}}function r(e,t,r,i){if(t){const n=Object.keys(t),s=n.length;for(let o=0;o<s;o++){const s=n[o];i.isArray(s,r+"."+s,!0,!0)?e[s]=[t[s]]:e[s]=t[s]}}}function i(e,t){const{textNodeName:r}=t,i=Object.keys(e).length;return 0===i||!(1!==i||!e[r]&&"boolean"!=typeof e[r]&&0!==e[r])}return X=1,Q.prettify=function(t,r){return e(t,r)},Q}function ee(){if(H)return B;H=1;const{buildOptions:e}=function(){if($)return G;$=1;const e={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};return G.buildOptions=function(t){return Object.assign({},e,t)},G.defaultOptions=e,G}(),t=function(){if(k)return j;k=1;const e=R(),t=P?C:(P=1,C=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}),r=function(){if(S)return _;S=1;const e=R();function t(e,t){let r="";for(;t<e.length&&"'"!==e[t]&&'"'!==e[t];t++)r+=e[t];if(r=r.trim(),-1!==r.indexOf(" "))throw new Error("External entites are not supported");const i=e[t++];let n="";for(;t<e.length&&e[t]!==i;t++)n+=e[t];return[r,n,t]}function r(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"N"===e[t+3]&&"T"===e[t+4]&&"I"===e[t+5]&&"T"===e[t+6]&&"Y"===e[t+7]}function i(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"L"===e[t+3]&&"E"===e[t+4]&&"M"===e[t+5]&&"E"===e[t+6]&&"N"===e[t+7]&&"T"===e[t+8]}function n(e,t){return"!"===e[t+1]&&"A"===e[t+2]&&"T"===e[t+3]&&"T"===e[t+4]&&"L"===e[t+5]&&"I"===e[t+6]&&"S"===e[t+7]&&"T"===e[t+8]}function s(e,t){return"!"===e[t+1]&&"N"===e[t+2]&&"O"===e[t+3]&&"T"===e[t+4]&&"A"===e[t+5]&&"T"===e[t+6]&&"I"===e[t+7]&&"O"===e[t+8]&&"N"===e[t+9]}function o(t){if(e.isName(t))return t;throw new Error(`Invalid entity name ${t}`)}return _=function(e,a){const l={};if("O"!==e[a+3]||"C"!==e[a+4]||"T"!==e[a+5]||"Y"!==e[a+6]||"P"!==e[a+7]||"E"!==e[a+8])throw new Error("Invalid Tag instead of DOCTYPE");{a+=9;let u=1,c=!1,h=!1,d="";for(;a<e.length;a++)if("<"!==e[a]||h)if(">"===e[a]){if(h?"-"===e[a-1]&&"-"===e[a-2]&&(h=!1,u--):u--,0===u)break}else"["===e[a]?c=!0:d+=e[a];else{if(c&&r(e,a)){let r,i;a+=7,[r,i,a]=t(e,a+1),-1===i.indexOf("&")&&(l[o(r)]={regx:RegExp(`&${r};`,"g"),val:i})}else c&&i(e,a)||c&&n(e,a)?a+=8:c&&s(e,a)?a+=9:h=!0;u++,d=""}if(0!==u)throw new Error("Unclosed DOCTYPE")}return{entities:l,i:a}}}(),i=function(){if(D)return F;D=1;const e=/^[-+]?0x[a-fA-F0-9]+$/,t=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return F=function(i,n={}){if(n=Object.assign({},r,n),!i||"string"!=typeof i)return i;let s=i.trim();if(void 0!==n.skipLike&&n.skipLike.test(s))return i;if(n.hex&&e.test(s))return Number.parseInt(s,16);{const e=t.exec(s);if(e){const t=e[1],r=e[2];let a=(o=e[3])&&-1!==o.indexOf(".")?("."===(o=o.replace(/0+$/,""))?o="0":"."===o[0]?o="0"+o:"."===o[o.length-1]&&(o=o.substr(0,o.length-1)),o):o;const l=e[4]||e[6];if(!n.leadingZeros&&r.length>0&&t&&"."!==s[2])return i;if(!n.leadingZeros&&r.length>0&&!t&&"."!==s[1])return i;{const e=Number(s),o=""+e;return-1!==o.search(/[eE]/)||l?n.eNotation?e:i:-1!==s.indexOf(".")?"0"===o&&""===a||o===a||t&&o==="-"+a?e:i:r?a===o||t+a===o?e:i:s===o||s===t+o?e:i}}return i}var o}}(),n=U();function s(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const i=t[r];this.lastEntities[i]={regex:new RegExp("&"+i+";","g"),val:e[i]}}}function o(e,t,r,i,n,s,o){if(void 0!==e&&(this.options.trimValues&&!i&&(e=e.trim()),e.length>0)){o||(e=this.replaceEntitiesValue(e));const i=this.options.tagValueProcessor(t,e,r,n,s);return null==i?e:typeof i!=typeof e||i!==e?i:this.options.trimValues||e.trim()===e?N(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function a(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const l=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function u(t,r,i){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const i=e.getAllMatches(t,l),n=i.length,s={};for(let e=0;e<n;e++){const t=this.resolveNameSpace(i[e][1]);if(this.ignoreAttributesFn(t,r))continue;let n=i[e][4],o=this.options.attributeNamePrefix+t;if(t.length)if(this.options.transformAttributeName&&(o=this.options.transformAttributeName(o)),"__proto__"===o&&(o="#__proto__"),void 0!==n){this.options.trimValues&&(n=n.trim()),n=this.replaceEntitiesValue(n);const e=this.options.attributeValueProcessor(t,n,r);s[o]=null==e?n:typeof e!=typeof n||e!==n?e:N(n,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(s[o]=!0)}if(!Object.keys(s).length)return;if(this.options.attributesGroupName){const e={};return e[this.options.attributesGroupName]=s,e}return s}}const c=function(e){e=e.replace(/\r\n?/g,"\n");const i=new t("!xml");let n=i,s="",o="";for(let a=0;a<e.length;a++)if("<"===e[a])if("/"===e[a+1]){const t=g(e,">",a,"Closing Tag is not closed.");let r=e.substring(a+2,t).trim();if(this.options.removeNSPrefix){const e=r.indexOf(":");-1!==e&&(r=r.substr(e+1))}this.options.transformTagName&&(r=this.options.transformTagName(r)),n&&(s=this.saveTextToParentTag(s,n,o));const i=o.substring(o.lastIndexOf(".")+1);if(r&&-1!==this.options.unpairedTags.indexOf(r))throw new Error(`Unpaired tag can not be used as closing tag: </${r}>`);let l=0;i&&-1!==this.options.unpairedTags.indexOf(i)?(l=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=o.lastIndexOf("."),o=o.substring(0,l),n=this.tagsNodeStack.pop(),s="",a=t}else if("?"===e[a+1]){let r=m(e,a,!1,"?>");if(!r)throw new Error("Pi Tag is not closed.");if(s=this.saveTextToParentTag(s,n,o),this.options.ignoreDeclaration&&"?xml"===r.tagName||this.options.ignorePiTags);else{const e=new t(r.tagName);e.add(this.options.textNodeName,""),r.tagName!==r.tagExp&&r.attrExpPresent&&(e[":@"]=this.buildAttributesMap(r.tagExp,o,r.tagName)),this.addChild(n,e,o)}a=r.closeIndex+1}else if("!--"===e.substr(a+1,3)){const t=g(e,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const r=e.substring(a+4,t-2);s=this.saveTextToParentTag(s,n,o),n.add(this.options.commentPropName,[{[this.options.textNodeName]:r}])}a=t}else if("!D"===e.substr(a+1,2)){const t=r(e,a);this.docTypeEntities=t.entities,a=t.i}else if("!["===e.substr(a+1,2)){const t=g(e,"]]>",a,"CDATA is not closed.")-2,r=e.substring(a+9,t);s=this.saveTextToParentTag(s,n,o);let i=this.parseTextData(r,n.tagname,o,!0,!1,!0,!0);null==i&&(i=""),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:r}]):n.add(this.options.textNodeName,i),a=t+2}else{let r=m(e,a,this.options.removeNSPrefix),l=r.tagName;const u=r.rawTagName;let c=r.tagExp,h=r.attrExpPresent,d=r.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),n&&s&&"!xml"!==n.tagname&&(s=this.saveTextToParentTag(s,n,o,!1));const f=n;if(f&&-1!==this.options.unpairedTags.indexOf(f.tagname)&&(n=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),l!==i.tagname&&(o+=o?"."+l:l),this.isItStopNode(this.options.stopNodes,o,l)){let i="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===l[l.length-1]?(l=l.substr(0,l.length-1),o=o.substr(0,o.length-1),c=l):c=c.substr(0,c.length-1),a=r.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(l))a=r.closeIndex;else{const t=this.readStopNodeData(e,u,d+1);if(!t)throw new Error(`Unexpected end of ${u}`);a=t.i,i=t.tagContent}const s=new t(l);l!==c&&h&&(s[":@"]=this.buildAttributesMap(c,o,l)),i&&(i=this.parseTextData(i,l,o,!0,h,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),s.add(this.options.textNodeName,i),this.addChild(n,s,o)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){"/"===l[l.length-1]?(l=l.substr(0,l.length-1),o=o.substr(0,o.length-1),c=l):c=c.substr(0,c.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));const e=new t(l);l!==c&&h&&(e[":@"]=this.buildAttributesMap(c,o,l)),this.addChild(n,e,o),o=o.substr(0,o.lastIndexOf("."))}else{const e=new t(l);this.tagsNodeStack.push(n),l!==c&&h&&(e[":@"]=this.buildAttributesMap(c,o,l)),this.addChild(n,e,o),n=e}s="",a=d}}else s+=e[a];return i.child};function h(e,t,r){const i=this.options.updateTag(t.tagname,r,t[":@"]);!1===i||("string"==typeof i?(t.tagname=i,e.addChild(t)):e.addChild(t))}const d=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function f(e,t,r,i){return e&&(void 0===i&&(i=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,i))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function p(e,t,r){const i="*."+r;for(const r in e){const n=e[r];if(i===n||t===n)return!0}return!1}function g(e,t,r,i){const n=e.indexOf(t,r);if(-1===n)throw new Error(i);return n+t.length-1}function m(e,t,r,i=">"){const n=function(e,t,r=">"){let i,n="";for(let s=t;s<e.length;s++){let t=e[s];if(i)t===i&&(i="");else if('"'===t||"'"===t)i=t;else if(t===r[0]){if(!r[1])return{data:n,index:s};if(e[s+1]===r[1])return{data:n,index:s}}else"\t"===t&&(t=" ");n+=t}}(e,t+1,i);if(!n)return;let s=n.data;const o=n.index,a=s.search(/\s/);let l=s,u=!0;-1!==a&&(l=s.substring(0,a),s=s.substring(a+1).trimStart());const c=l;if(r){const e=l.indexOf(":");-1!==e&&(l=l.substr(e+1),u=l!==n.data.substr(e+1))}return{tagName:l,tagExp:s,closeIndex:o,attrExpPresent:u,rawTagName:c}}function E(e,t,r){const i=r;let n=1;for(;r<e.length;r++)if("<"===e[r])if("/"===e[r+1]){const s=g(e,">",r,`${t} is not closed`);if(e.substring(r+2,s).trim()===t&&(n--,0===n))return{tagContent:e.substring(i,r),i:s};r=s}else if("?"===e[r+1])r=g(e,"?>",r+1,"StopNode is not closed.");else if("!--"===e.substr(r+1,3))r=g(e,"--\x3e",r+3,"StopNode is not closed.");else if("!["===e.substr(r+1,2))r=g(e,"]]>",r,"StopNode is not closed.")-2;else{const i=m(e,r,">");i&&((i&&i.tagName)===t&&"/"!==i.tagExp[i.tagExp.length-1]&&n++,r=i.closeIndex)}}function N(t,r,n){if(r&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&i(t,n)}return e.isExist(t)?t:""}return j=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=s,this.parseXml=c,this.parseTextData=o,this.resolveNameSpace=a,this.buildAttributesMap=u,this.isItStopNode=p,this.replaceEntitiesValue=d,this.readStopNodeData=E,this.saveTextToParentTag=f,this.addChild=h,this.ignoreAttributesFn=n(this.options.ignoreAttributes)}}}(),{prettify:r}=W(),i=L();return B=class{constructor(t){this.externalEntities={},this.options=e(t)}parse(e,n){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(n){!0===n&&(n={});const t=i.validate(e,n);if(!0!==t)throw Error(`${t.err.msg}:${t.err.line}:${t.err.col}`)}const s=new t(this.options);s.addExternalEntities(this.externalEntities);const o=s.parseXml(e);return this.options.preserveOrder||void 0===o?o:r(o,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}}function te(){if(Y)return q;function e(s,o,a,l){let u="",c=!1;for(let h=0;h<s.length;h++){const d=s[h],f=t(d);if(void 0===f)continue;let p="";if(p=0===a.length?f:`${a}.${f}`,f===o.textNodeName){let e=d[f];i(p,o)||(e=o.tagValueProcessor(f,e),e=n(e,o)),c&&(u+=l),u+=e,c=!1;continue}if(f===o.cdataPropName){c&&(u+=l),u+=`<![CDATA[${d[f][0][o.textNodeName]}]]>`,c=!1;continue}if(f===o.commentPropName){u+=l+`\x3c!--${d[f][0][o.textNodeName]}--\x3e`,c=!0;continue}if("?"===f[0]){const e=r(d[":@"],o),t="?xml"===f?"":l;let i=d[f][0][o.textNodeName];i=0!==i.length?" "+i:"",u+=t+`<${f}${i}${e}?>`,c=!0;continue}let g=l;""!==g&&(g+=o.indentBy);const m=l+`<${f}${r(d[":@"],o)}`,E=e(d[f],o,p,g);-1!==o.unpairedTags.indexOf(f)?o.suppressUnpairedNode?u+=m+">":u+=m+"/>":E&&0!==E.length||!o.suppressEmptyNode?E&&E.endsWith(">")?u+=m+`>${E}${l}</${f}>`:(u+=m+">",E&&""!==l&&(E.includes("/>")||E.includes("</"))?u+=l+o.indentBy+E+l:u+=E,u+=`</${f}>`):u+=m+"/>",c=!0}return u}function t(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const i=t[r];if(e.hasOwnProperty(i)&&":@"!==i)return i}}function r(e,t){let r="";if(e&&!t.ignoreAttributes)for(let i in e){if(!e.hasOwnProperty(i))continue;let s=t.attributeValueProcessor(i,e[i]);s=n(s,t),!0===s&&t.suppressBooleanAttributes?r+=` ${i.substr(t.attributeNamePrefix.length)}`:r+=` ${i.substr(t.attributeNamePrefix.length)}="${s}"`}return r}function i(e,t){let r=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let i in t.stopNodes)if(t.stopNodes[i]===e||t.stopNodes[i]==="*."+r)return!0;return!1}function n(e,t){if(e&&e.length>0&&t.processEntities)for(let r=0;r<t.entities.length;r++){const i=t.entities[r];e=e.replace(i.regex,i.val)}return e}return Y=1,q=function(t,r){let i="";return r.format&&r.indentBy.length>0&&(i="\n"),e(t,r,"",i)}}var re=function(){if(z)return Z;z=1;const e=L(),t=ee(),r=function(){if(J)return K;J=1;const e=te(),t=U(),r={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function i(e){this.options=Object.assign({},r,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=t(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=o),this.processTextOrObjNode=n,this.options.format?(this.indentate=s,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function n(e,t,r,i){const n=this.j2x(e,r+1,i.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,r):this.buildObjectNode(n.val,t,n.attrStr,r)}function s(e){return this.options.indentBy.repeat(e)}function o(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}return i.prototype.build=function(t){return this.options.preserveOrder?e(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},i.prototype.j2x=function(e,t,r){let i="",n="";const s=r.join(".");for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o))if(void 0===e[o])this.isAttribute(o)&&(n+="");else if(null===e[o])this.isAttribute(o)?n+="":"?"===o[0]?n+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if(e[o]instanceof Date)n+=this.buildTextValNode(e[o],o,"",t);else if("object"!=typeof e[o]){const r=this.isAttribute(o);if(r&&!this.ignoreAttributesFn(r,s))i+=this.buildAttrPairStr(r,""+e[o]);else if(!r)if(o===this.options.textNodeName){let t=this.options.tagValueProcessor(o,""+e[o]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[o],o,"",t)}else if(Array.isArray(e[o])){const i=e[o].length;let s="",a="";for(let l=0;l<i;l++){const i=e[o][l];if(void 0===i);else if(null===i)"?"===o[0]?n+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if("object"==typeof i)if(this.options.oneListGroup){const e=this.j2x(i,t+1,r.concat(o));s+=e.val,this.options.attributesGroupName&&i.hasOwnProperty(this.options.attributesGroupName)&&(a+=e.attrStr)}else s+=this.processTextOrObjNode(i,o,t,r);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(o,i);e=this.replaceEntitiesValue(e),s+=e}else s+=this.buildTextValNode(i,o,"",t)}this.options.oneListGroup&&(s=this.buildObjectNode(s,o,a,t)),n+=s}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const t=Object.keys(e[o]),r=t.length;for(let n=0;n<r;n++)i+=this.buildAttrPairStr(t[n],""+e[o][t[n]])}else n+=this.processTextOrObjNode(e[o],o,t,r);return{attrStr:i,val:n}},i.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},i.prototype.buildObjectNode=function(e,t,r,i){if(""===e)return"?"===t[0]?this.indentate(i)+"<"+t+r+"?"+this.tagEndChar:this.indentate(i)+"<"+t+r+this.closeTag(t)+this.tagEndChar;{let n="</"+t+this.tagEndChar,s="";return"?"===t[0]&&(s="?",n=""),!r&&""!==r||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===s.length?this.indentate(i)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(i)+"<"+t+r+s+this.tagEndChar+e+this.indentate(i)+n:this.indentate(i)+"<"+t+r+s+">"+e+n}},i.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},i.prototype.buildTextValNode=function(e,t,r,i){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(i)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(i)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(i)+"<"+t+r+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(t,e);return n=this.replaceEntitiesValue(n),""===n?this.indentate(i)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(i)+"<"+t+r+">"+n+"</"+t+this.tagEndChar}},i.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const r=this.options.entities[t];e=e.replace(r.regex,r.val)}return e},K=i}();return Z={XMLParser:t,XMLValidator:e,XMLBuilder:r}}();class ie{_view;constructor(e){ne(e),this._view=e}get id(){return this._view.id}get name(){return this._view.name}get caption(){return this._view.caption}get emptyTitle(){return this._view.emptyTitle}get emptyCaption(){return this._view.emptyCaption}get getContents(){return this._view.getContents}get icon(){return this._view.icon}set icon(e){this._view.icon=e}get order(){return this._view.order}set order(e){this._view.order=e}get params(){return this._view.params}set params(e){this._view.params=e}get columns(){return this._view.columns}get emptyView(){return this._view.emptyView}get parent(){return this._view.parent}get sticky(){return this._view.sticky}get expanded(){return this._view.expanded}set expanded(e){this._view.expanded=e}get defaultSortKey(){return this._view.defaultSortKey}get loadChildViews(){return this._view.loadChildViews}}const ne=function(e){if(!e.id||"string"!=typeof e.id)throw new Error("View id is required and must be a string");if(!e.name||"string"!=typeof e.name)throw new Error("View name is required and must be a string");if("caption"in e&&"string"!=typeof e.caption)throw new Error("View caption must be a string");if(!e.getContents||"function"!=typeof e.getContents)throw new Error("View getContents is required and must be a function");if(!e.icon||"string"!=typeof e.icon||!function(e){if("string"!=typeof e)throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);if(0===(e=e.trim()).length)return!1;if(!0!==re.XMLValidator.validate(e))return!1;let t;const r=new re.XMLParser;try{t=r.parse(e)}catch{return!1}return!!t&&!!Object.keys(t).some((e=>"svg"===e.toLowerCase()))}(e.icon))throw new Error("View icon is required and must be a valid svg string");if("order"in e&&"number"!=typeof e.order)throw new Error("View order must be a number");if(e.columns&&e.columns.forEach((e=>{if(!(e instanceof y))throw new Error("View columns must be an array of Column. Invalid column found")})),e.emptyView&&"function"!=typeof e.emptyView)throw new Error("View emptyView must be a function");if(e.parent&&"string"!=typeof e.parent)throw new Error("View parent must be a string");if("sticky"in e&&"boolean"!=typeof e.sticky)throw new Error("View sticky must be a boolean");if("expanded"in e&&"boolean"!=typeof e.expanded)throw new Error("View expanded must be a boolean");if(e.defaultSortKey&&"string"!=typeof e.defaultSortKey)throw new Error("View defaultSortKey must be a string");if(e.loadChildViews&&"function"!=typeof e.loadChildViews)throw new Error("View loadChildViews must be a function");return!0};var se,oe,ae,le;function ue(){if(oe)return se;oe=1;const e="object"==typeof l&&l.env&&l.env.NODE_DEBUG&&/\bsemver\b/i.test(l.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};return se=e}function ce(){if(le)return ae;le=1;const e=Number.MAX_SAFE_INTEGER||9007199254740991;return ae={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:e,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}var he,de,fe,pe,ge,me,Ee,Ne,be,we,ve,ye,xe,Ie={exports:{}};function Oe(){if(Ee)return me;Ee=1;const e=ue(),{MAX_LENGTH:t,MAX_SAFE_INTEGER:r}=ce(),{safeRe:i,t:n}=(he||(he=1,function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:i,MAX_LENGTH:n}=ce(),s=ue(),o=(t=e.exports={}).re=[],a=t.safeRe=[],l=t.src=[],u=t.t={};let c=0;const h="[a-zA-Z0-9-]",d=[["\\s",1],["\\d",n],[h,i]],f=(e,t,r)=>{const i=(e=>{for(const[t,r]of d)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e})(t),n=c++;s(e,n,t),u[e]=n,l[n]=t,o[n]=new RegExp(t,r?"g":void 0),a[n]=new RegExp(i,r?"g":void 0)};f("NUMERICIDENTIFIER","0|[1-9]\\d*"),f("NUMERICIDENTIFIERLOOSE","\\d+"),f("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${h}*`),f("MAINVERSION",`(${l[u.NUMERICIDENTIFIER]})\\.(${l[u.NUMERICIDENTIFIER]})\\.(${l[u.NUMERICIDENTIFIER]})`),f("MAINVERSIONLOOSE",`(${l[u.NUMERICIDENTIFIERLOOSE]})\\.(${l[u.NUMERICIDENTIFIERLOOSE]})\\.(${l[u.NUMERICIDENTIFIERLOOSE]})`),f("PRERELEASEIDENTIFIER",`(?:${l[u.NUMERICIDENTIFIER]}|${l[u.NONNUMERICIDENTIFIER]})`),f("PRERELEASEIDENTIFIERLOOSE",`(?:${l[u.NUMERICIDENTIFIERLOOSE]}|${l[u.NONNUMERICIDENTIFIER]})`),f("PRERELEASE",`(?:-(${l[u.PRERELEASEIDENTIFIER]}(?:\\.${l[u.PRERELEASEIDENTIFIER]})*))`),f("PRERELEASELOOSE",`(?:-?(${l[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[u.PRERELEASEIDENTIFIERLOOSE]})*))`),f("BUILDIDENTIFIER",`${h}+`),f("BUILD",`(?:\\+(${l[u.BUILDIDENTIFIER]}(?:\\.${l[u.BUILDIDENTIFIER]})*))`),f("FULLPLAIN",`v?${l[u.MAINVERSION]}${l[u.PRERELEASE]}?${l[u.BUILD]}?`),f("FULL",`^${l[u.FULLPLAIN]}$`),f("LOOSEPLAIN",`[v=\\s]*${l[u.MAINVERSIONLOOSE]}${l[u.PRERELEASELOOSE]}?${l[u.BUILD]}?`),f("LOOSE",`^${l[u.LOOSEPLAIN]}$`),f("GTLT","((?:<|>)?=?)"),f("XRANGEIDENTIFIERLOOSE",`${l[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),f("XRANGEIDENTIFIER",`${l[u.NUMERICIDENTIFIER]}|x|X|\\*`),f("XRANGEPLAIN",`[v=\\s]*(${l[u.XRANGEIDENTIFIER]})(?:\\.(${l[u.XRANGEIDENTIFIER]})(?:\\.(${l[u.XRANGEIDENTIFIER]})(?:${l[u.PRERELEASE]})?${l[u.BUILD]}?)?)?`),f("XRANGEPLAINLOOSE",`[v=\\s]*(${l[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[u.XRANGEIDENTIFIERLOOSE]})(?:${l[u.PRERELEASELOOSE]})?${l[u.BUILD]}?)?)?`),f("XRANGE",`^${l[u.GTLT]}\\s*${l[u.XRANGEPLAIN]}$`),f("XRANGELOOSE",`^${l[u.GTLT]}\\s*${l[u.XRANGEPLAINLOOSE]}$`),f("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),f("COERCE",`${l[u.COERCEPLAIN]}(?:$|[^\\d])`),f("COERCEFULL",l[u.COERCEPLAIN]+`(?:${l[u.PRERELEASE]})?(?:${l[u.BUILD]})?(?:$|[^\\d])`),f("COERCERTL",l[u.COERCE],!0),f("COERCERTLFULL",l[u.COERCEFULL],!0),f("LONETILDE","(?:~>?)"),f("TILDETRIM",`(\\s*)${l[u.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",f("TILDE",`^${l[u.LONETILDE]}${l[u.XRANGEPLAIN]}$`),f("TILDELOOSE",`^${l[u.LONETILDE]}${l[u.XRANGEPLAINLOOSE]}$`),f("LONECARET","(?:\\^)"),f("CARETTRIM",`(\\s*)${l[u.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",f("CARET",`^${l[u.LONECARET]}${l[u.XRANGEPLAIN]}$`),f("CARETLOOSE",`^${l[u.LONECARET]}${l[u.XRANGEPLAINLOOSE]}$`),f("COMPARATORLOOSE",`^${l[u.GTLT]}\\s*(${l[u.LOOSEPLAIN]})$|^$`),f("COMPARATOR",`^${l[u.GTLT]}\\s*(${l[u.FULLPLAIN]})$|^$`),f("COMPARATORTRIM",`(\\s*)${l[u.GTLT]}\\s*(${l[u.LOOSEPLAIN]}|${l[u.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",f("HYPHENRANGE",`^\\s*(${l[u.XRANGEPLAIN]})\\s+-\\s+(${l[u.XRANGEPLAIN]})\\s*$`),f("HYPHENRANGELOOSE",`^\\s*(${l[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[u.XRANGEPLAINLOOSE]})\\s*$`),f("STAR","(<|>)?=?\\s*\\*"),f("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),f("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(Ie,Ie.exports)),Ie.exports),s=function(){if(fe)return de;fe=1;const e=Object.freeze({loose:!0}),t=Object.freeze({});return de=r=>r?"object"!=typeof r?e:r:t}(),{compareIdentifiers:o}=function(){if(ge)return pe;ge=1;const e=/^[0-9]+$/,t=(t,r)=>{const i=e.test(t),n=e.test(r);return i&&n&&(t=+t,r=+r),t===r?0:i&&!n?-1:n&&!i?1:t<r?-1:1};return pe={compareIdentifiers:t,rcompareIdentifiers:(e,r)=>t(r,e)}}();class a{constructor(o,l){if(l=s(l),o instanceof a){if(o.loose===!!l.loose&&o.includePrerelease===!!l.includePrerelease)return o;o=o.version}else if("string"!=typeof o)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof o}".`);if(o.length>t)throw new TypeError(`version is longer than ${t} characters`);e("SemVer",o,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const u=o.trim().match(l.loose?i[n.LOOSE]:i[n.FULL]);if(!u)throw new TypeError(`Invalid Version: ${o}`);if(this.raw=o,this.major=+u[1],this.minor=+u[2],this.patch=+u[3],this.major>r||this.major<0)throw new TypeError("Invalid major version");if(this.minor>r||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>r||this.patch<0)throw new TypeError("Invalid patch version");u[4]?this.prerelease=u[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<r)return t}return e})):this.prerelease=[],this.build=u[5]?u[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(e("SemVer.compare",this.version,this.options,t),!(t instanceof a)){if("string"==typeof t&&t===this.version)return 0;t=new a(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(e){return e instanceof a||(e=new a(e,this.options)),o(this.major,e.major)||o(this.minor,e.minor)||o(this.patch,e.patch)}comparePre(t){if(t instanceof a||(t=new a(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{const i=this.prerelease[r],n=t.prerelease[r];if(e("prerelease compare",r,i,n),void 0===i&&void 0===n)return 0;if(void 0===n)return 1;if(void 0===i)return-1;if(i!==n)return o(i,n)}while(++r)}compareBuild(t){t instanceof a||(t=new a(t,this.options));let r=0;do{const i=this.build[r],n=t.build[r];if(e("build compare",r,i,n),void 0===i&&void 0===n)return 0;if(void 0===n)return 1;if(void 0===i)return-1;if(i!==n)return o(i,n)}while(++r)}inc(e,t,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(r)?1:0;if(!t&&!1===r)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[e];else{let i=this.prerelease.length;for(;--i>=0;)"number"==typeof this.prerelease[i]&&(this.prerelease[i]++,i=-2);if(-1===i){if(t===this.prerelease.join(".")&&!1===r)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let i=[t,e];!1===r&&(i=[t]),0===o(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=i):this.prerelease=i}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return me=a}!function(){if(ve)return we;ve=1;const e=function(){if(be)return Ne;be=1;const e=Oe();return Ne=(t,r,i=!1)=>{if(t instanceof e)return t;try{return new e(t,r)}catch(e){if(!i)return null;throw e}}}();we=(t,r)=>{const i=e(t,r);return i?i.version:null}}(),function(){if(xe)return ye;xe=1;const e=Oe();ye=(t,r)=>new e(t,r).major}(),a.m;const Te=function(e){return(void 0===window._nc_newfilemenu&&(window._nc_newfilemenu=new c,i.o.debug("NewFileMenu initialized")),window._nc_newfilemenu).getEntries(e).sort(((e,t)=>void 0!==e.order&&void 0!==t.order&&e.order!==t.order?e.order-t.order:e.displayName.localeCompare(t.displayName,void 0,{numeric:!0,sensitivity:"base"})))}}},n={};function s(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,s),r.loaded=!0,r.exports}s.m=i,e=[],s.O=(t,r,i,n)=>{if(!r){var o=1/0;for(c=0;c<e.length;c++){r=e[c][0],i=e[c][1],n=e[c][2];for(var a=!0,l=0;l<r.length;l++)(!1&n||o>=n)&&Object.keys(s.O).every((e=>s.O[e](r[l])))?r.splice(l--,1):(a=!1,n<o&&(o=n));if(a){e.splice(c--,1);var u=i();void 0!==u&&(t=u)}}return t}n=n||0;for(var c=e.length;c>0&&e[c-1][2]>n;c--)e[c]=e[c-1];e[c]=[r,i,n]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce(((t,r)=>(s.f[r](e,t),t)),[])),s.u=e=>e+"-"+e+".js?v="+{358:"cb526b6422ca61c923fd",2441:"44b85e4901c485417f88",5266:"5e74043eef0f3a196f22",5862:"142cd48ca8ec32e57725",6146:"5f2015343db7411125d5",8289:"8f098190dce9305dab1e",8320:"87233c1e751a74de3fe2"}[e],s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="nextcloud:",s.l=(e,i,n,o)=>{if(t[e])t[e].push(i);else{var a,l;if(void 0!==n)for(var u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var h=u[c];if(h.getAttribute("src")==e||h.getAttribute("data-webpack")==r+n){a=h;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,s.nc&&a.setAttribute("nonce",s.nc),a.setAttribute("data-webpack",r+n),a.src=e),t[e]=[i];var d=(r,i)=>{a.onerror=a.onload=null,clearTimeout(f);var n=t[e];if(delete t[e],a.parentNode&&a.parentNode.removeChild(a),n&&n.forEach((e=>e(i))),r)return r(i)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=d.bind(null,a.onerror),a.onload=d.bind(null,a.onload),l&&document.head.appendChild(a)}},s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),s.j=5102,(()=>{var e;s.g.importScripts&&(e=s.g.location+"");var t=s.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(/\/[^\/]+$/,"/"),s.p=e})(),(()=>{s.b=document.baseURI||self.location.href;var e={5102:0};s.f.j=(t,r)=>{var i=s.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=s.p+s.u(t),a=new Error;s.l(o,(r=>{if(s.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;a.message="Loading chunk "+t+" failed.\n("+n+": "+o+")",a.name="ChunkLoadError",a.type=n,a.request=o,i[1](a)}}),"chunk-"+t,t)}},s.O.j=t=>0===e[t];var t=(t,r)=>{var i,n,o=r[0],a=r[1],l=r[2],u=0;if(o.some((t=>0!==e[t]))){for(i in a)s.o(a,i)&&(s.m[i]=a[i]);if(l)var c=l(s)}for(t&&t(r);u<o.length;u++)n=o[u],s.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return s.O(c)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),s.nc=void 0;var o=s.O(void 0,[4208],(()=>s(51528)));o=s.O(o)})(); -//# sourceMappingURL=files_sharing-init-public.js.map?v=0be7ee732c6bdd38382c
\ No newline at end of file +(()=>{"use strict";var e,t,r,n={51528:(e,t,r)=>{var n=r(61338),i=r(35810),s=r(32981),o=r(53334),a=r(50352),l=r(85471);const u='<svg xmlns="http://www.w3.org/2000/svg" id="mdi-link" viewBox="0 0 24 24"><path d="M3.9,12C3.9,10.29 5.29,8.9 7,8.9H11V7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H11V15.1H7C5.29,15.1 3.9,13.71 3.9,12M8,13H16V11H8V13M17,7H13V8.9H17C18.71,8.9 20.1,10.29 20.1,12C20.1,13.71 18.71,15.1 17,15.1H13V17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7Z" /></svg>';var c=r(36117),h=r(43627);const d=(0,r(77815).KU)();var f=r(35947);const p=(0,f.YK)().setApp("files").detectUser().build(),g=e=>(0,i.Al)(e),m=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";e=(0,h.join)(i.lJ,e);const t=new AbortController,r=(0,i.VL)();return new c.CancelablePromise((async(n,i,s)=>{s((()=>t.abort()));try{const i=await d.getDirectoryContents(e,{details:!0,data:r,includeSelf:!0,signal:t.signal}),s=i.data[0],o=i.data.slice(1);if(s.filename!==e&&`${s.filename}/`!==e)throw p.debug(`Exepected "${e}" but got filename "${s.filename}" instead.`),new Error("Root node does not match requested path");n({folder:g(s),contents:o.map((e=>{try{return g(e)}catch(t){return p.error(`Invalid node detected '${e.basename}'`,{error:t}),null}})).filter(Boolean)})}catch(e){i(e)}}))},E=(0,f.YK)().setApp("files_sharing").detectUser().build();var N=r(63814),b=r(82490),w=r(40173);const v=(0,s.C)("files_sharing","view"),y=(0,s.C)("files_sharing","sharingToken");l.Ay.use(w.Ay);const x=w.Ay.prototype.push;w.Ay.prototype.push=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.length>1?x.call(this,...t):x.call(this,t[0]).catch(O)};const I=w.Ay.prototype.replace;function O(e){if(!(0,w.Pq)(e,w.$c.duplicated))throw e;E.debug("Ignoring duplicated navigation from vue-router",{error:e})}w.Ay.prototype.replace=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.length>1?I.call(this,...t):I.call(this,t[0]).catch(O)};const T=new w.Ay({mode:"history",base:(0,N.Jv)("/s"),linkActiveClass:"active",routes:[{path:"/",redirect:{name:"filelist",params:{view:v,token:y}}},{path:"/:token",name:"filelist",props:!0}],stringifyQuery(e){const t=b.A.stringify(e).replace(/%2F/gim,"/");return t?"?"+t:""}});(()=>{const e=(0,s.C)("files_sharing","filename");let t,n;const u=new i.Ss({id:"public-file-drop",name:(0,o.Tl)("files_sharing","File drop"),caption:(0,o.Tl)("files_sharing","Upload files to {foldername}",{foldername:e}),icon:a,order:1,emptyView:async i=>{if(void 0===t){const{default:e}=await Promise.all([r.e(4208),r.e(358)]).then(r.bind(r,90358));t=l.Ay.extend(e)}n&&n.$destroy(),n=new t({propsData:{foldername:e}}),n.$mount(i)},getContents:async()=>({contents:[],folder:new i.vd({id:0,source:`${i.PY}${i.lJ}`,root:i.lJ,owner:null,permissions:i.aX.CREATE})})});(0,i.bh)().register(u)})(),(()=>{const e=new i.Ss({id:"public-share",name:(0,o.Tl)("files_sharing","Public share"),caption:(0,o.Tl)("files_sharing","Publicly shared files."),emptyTitle:(0,o.Tl)("files_sharing","No files"),emptyCaption:(0,o.Tl)("files_sharing","Files and folders shared with you will show up here"),icon:u,order:1,getContents:m});(0,i.bh)().register(e)})(),(()=>{const e=new i.Ss({id:"public-file-share",name:(0,o.Tl)("files_sharing","Public file share"),caption:(0,o.Tl)("files_sharing","Publicly shared file."),emptyTitle:(0,o.Tl)("files_sharing","No file"),emptyCaption:(0,o.Tl)("files_sharing","The file shared with you will show up here"),icon:u,order:1,getContents:()=>new c.CancelablePromise((async(e,t,r)=>{const n=new AbortController;r((()=>n.abort()));try{const t=await d.stat(i.lJ,{data:(0,i.VL)(),details:!0,signal:n.signal});e({contents:[(0,i.Al)(t.data)],folder:new i.vd({id:0,source:`${i.PY}${i.lJ}`,root:i.lJ,owner:null,permissions:i.aX.READ,attributes:{note:t.data.props?.note}})})}catch(e){E.error(e),t(e)}}))});(0,i.bh)().register(e)})();const A=(0,s.C)("files_sharing","view"),R=(0,i.bh)();R.setActive(R.views.find((e=>{let{id:t}=e;return t===A}))??null),window.OCP.Files=window.OCP.Files??{},window.OCP.Files.Router=new class{constructor(e){var t,r,n;t=this,n=void 0,(r=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(r="router"))in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,this.router=e}get name(){return this.router.currentRoute.name}get query(){return this.router.currentRoute.query||{}}get params(){return this.router.currentRoute.params||{}}get _router(){return this.router}goTo(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.router.push({path:e,replace:t})}goToRoute(e,t,r,n){return this.router.push({name:e,query:r,params:t,replace:n})}}(T);const L=(0,s.C)("files_sharing","fileId",null),$=(0,s.C)("files_sharing","sharingToken");null!==L&&window.OCP.Files.Router.goToRoute("filelist",{...window.OCP.Files.Router.params,token:$,fileid:String(L)},{...window.OCP.Files.Router.query,openfile:"true"}),(0,n.B1)("files:list:updated",(function e(t){let{folder:r}=t;if((0,n.al)("files:list:updated",e),r.attributes["share-attributes"]){const e=JSON.parse(r.attributes["share-attributes"]||"[]").find((e=>{let{scope:t,key:r}=e;return"config"===t&&"grid_view"===r}));void 0!==e&&(E.debug("Loading share attributes",{gridViewAttribute:e}),(0,n.Ic)("files:config:updated",{key:"grid_view",value:!0===e.value}))}}))},50352:e=>{e.exports='<svg xmlns="http://www.w3.org/2000/svg" id="mdi-cloud-upload" viewBox="0 0 24 24"><path d="M11 20H6.5Q4.22 20 2.61 18.43 1 16.85 1 14.58 1 12.63 2.17 11.1 3.35 9.57 5.25 9.15 5.88 6.85 7.75 5.43 9.63 4 12 4 14.93 4 16.96 6.04 19 8.07 19 11 20.73 11.2 21.86 12.5 23 13.78 23 15.5 23 17.38 21.69 18.69 20.38 20 18.5 20H13V12.85L14.6 14.4L16 13L12 9L8 13L9.4 14.4L11 12.85Z" /></svg>'},35810:(e,t,r)=>{r.d(t,{Al:()=>n.r,E6:()=>p,H4:()=>n.c,KT:()=>f,PY:()=>n.b,Q$:()=>n.e,R3:()=>n.n,Ss:()=>ne,VL:()=>n.l,a7:()=>u,aX:()=>n.P,bh:()=>v,di:()=>d,lJ:()=>n.d,m1:()=>Te,nF:()=>h,pt:()=>n.F,ur:()=>b,v7:()=>E,vd:()=>n.s});var n=r(68251),i=r(87485),s=r(43627),o=r(53334),a=r(380),l=r(65606),u=(e=>(e[e.UploadFromDevice=0]="UploadFromDevice",e[e.CreateNew=1]="CreateNew",e[e.Other=2]="Other",e))(u||{});class c{_entries=[];registerEntry(e){this.validateEntry(e),e.category=e.category??1,this._entries.push(e)}unregisterEntry(e){const t="string"==typeof e?this.getEntryIndex(e):this.getEntryIndex(e.id);-1!==t?this._entries.splice(t,1):n.o.warn("Entry not found, nothing removed",{entry:e,entries:this.getEntries()})}getEntries(e){return e?this._entries.filter((t=>"function"!=typeof t.enabled||t.enabled(e))):this._entries}getEntryIndex(e){return this._entries.findIndex((t=>t.id===e))}validateEntry(e){if(!e.id||!e.displayName||!e.iconSvgInline&&!e.iconClass||!e.handler)throw new Error("Invalid entry");if("string"!=typeof e.id||"string"!=typeof e.displayName)throw new Error("Invalid id or displayName property");if(e.iconClass&&"string"!=typeof e.iconClass||e.iconSvgInline&&"string"!=typeof e.iconSvgInline)throw new Error("Invalid icon provided");if(void 0!==e.enabled&&"function"!=typeof e.enabled)throw new Error("Invalid enabled property");if("function"!=typeof e.handler)throw new Error("Invalid handler property");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order property");if(-1!==this.getEntryIndex(e.id))throw new Error("Duplicate entry")}}var h=(e=>(e.ReservedName="reserved name",e.Character="character",e.Extension="extension",e))(h||{});class d extends Error{constructor(e){super(`Invalid ${e.reason} '${e.segment}' in filename '${e.filename}'`,{cause:e})}get filename(){return this.cause.filename}get reason(){return this.cause.reason}get segment(){return this.cause.segment}}function f(e){const t=(0,i.F)().files,r=t.forbidden_filename_characters??window._oc_config?.forbidden_filenames_characters??["/","\\"];for(const t of r)if(e.includes(t))throw new d({segment:t,reason:"character",filename:e});if(e=e.toLocaleLowerCase(),(t.forbidden_filenames??[".htaccess"]).includes(e))throw new d({filename:e,segment:e,reason:"reserved name"});const n=e.indexOf(".",1),s=e.substring(0,-1===n?void 0:n);if((t.forbidden_filename_basenames??[]).includes(s))throw new d({filename:e,segment:s,reason:"reserved name"});const o=t.forbidden_filename_extensions??[".part",".filepart"];for(const t of o)if(e.length>t.length&&e.endsWith(t))throw new d({segment:t,reason:"extension",filename:e})}function p(e,t,r){const n={suffix:e=>`(${e})`,ignoreFileExtension:!1,...r};let i=e,o=1;for(;t.includes(i);){const t=n.ignoreFileExtension?"":(0,s.extname)(e);i=`${(0,s.basename)(e,t)} ${n.suffix(o++)}${t}`}return i}const g=["B","KB","MB","GB","TB","PB"],m=["B","KiB","MiB","GiB","TiB","PiB"];function E(e,t=!1,r=!1,n=!1){r=r&&!n,"string"==typeof e&&(e=Number(e));let i=e>0?Math.floor(Math.log(e)/Math.log(n?1e3:1024)):0;i=Math.min((r?m.length:g.length)-1,i);const s=r?m[i]:g[i];let a=(e/Math.pow(n?1e3:1024,i)).toFixed(1);return!0===t&&0===i?("0.0"!==a?"< 1 ":"0 ")+(r?m[1]:g[1]):(a=i<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,o.lO)()),a+" "+s)}function N(e){return e instanceof Date?e.toISOString():String(e)}function b(e,t={}){const r={sortingMode:"basename",sortingOrder:"asc",...t};return function(e,t,r){r=r??[];const n=(t=t??[e=>e]).map(((e,t)=>"asc"===(r[t]??"asc")?1:-1)),i=Intl.Collator([(0,o.Z0)(),(0,o.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,r)=>{for(const[s,o]of t.entries()){const t=i.compare(N(o(e)),N(o(r)));if(0!==t)return t*n[s]}return 0}))}(e,[...r.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...r.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==r.sortingMode?[e=>e[r.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...r.sortFavoritesFirst?["asc"]:[],...r.sortFoldersFirst?["asc"]:[],..."mtime"===r.sortingMode?["asc"===r.sortingOrder?"desc":"asc"]:[],..."mtime"!==r.sortingMode&&"basename"!==r.sortingMode?[r.sortingOrder]:[],r.sortingOrder,r.sortingOrder])}class w extends a.m{_views=[];_currentView=null;register(e){if(this._views.find((t=>t.id===e.id)))throw new Error(`View id ${e.id} is already registered`);this._views.push(e),this.dispatchTypedEvent("update",new CustomEvent("update"))}remove(e){const t=this._views.findIndex((t=>t.id===e));-1!==t&&(this._views.splice(t,1),this.dispatchTypedEvent("update",new CustomEvent("update")))}setActive(e){this._currentView=e;const t=new CustomEvent("updateActive",{detail:e});this.dispatchTypedEvent("updateActive",t)}get active(){return this._currentView}get views(){return this._views}}const v=function(){return void 0===window._nc_navigation&&(window._nc_navigation=new w,n.o.debug("Navigation service initialized")),window._nc_navigation};class y{_column;constructor(e){x(e),this._column=e}get id(){return this._column.id}get title(){return this._column.title}get render(){return this._column.render}get sort(){return this._column.sort}get summary(){return this._column.summary}}const x=function(e){if(!e.id||"string"!=typeof e.id)throw new Error("A column id is required");if(!e.title||"string"!=typeof e.title)throw new Error("A column title is required");if(!e.render||"function"!=typeof e.render)throw new Error("A render function is required");if(e.sort&&"function"!=typeof e.sort)throw new Error("Column sortFunction must be a function");if(e.summary&&"function"!=typeof e.summary)throw new Error("Column summary must be a function");return!0};var I,O,T={},A={};function R(){return I||(I=1,function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",n=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const n=Object.keys(t),i=n.length;for(let s=0;s<i;s++)e[n[s]]="strict"===r?[t[n[s]]]:t[n[s]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){return!(null==n.exec(e))},e.getAllMatches=function(e,t){const r=[];let n=t.exec(e);for(;n;){const i=[];i.startIndex=t.lastIndex-n[0].length;const s=n.length;for(let e=0;e<s;e++)i.push(n[e]);r.push(i),n=t.exec(e)}return r},e.nameRegexp=r}(A)),A}function L(){if(O)return T;O=1;const e=R(),t={allowBooleanAttributes:!1,unpairedTags:[]};function r(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function n(e,t){const r=t;for(;t<e.length;t++)if("?"!=e[t]&&" "!=e[t]);else{const n=e.substr(r,t-r);if(t>5&&"xml"===n)return h("InvalidXml","XML declaration allowed only at the start of the document.",f(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function i(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t<e.length;t++)if("-"===e[t]&&"-"===e[t+1]&&">"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t<e.length;t++)if("<"===e[t])r++;else if(">"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t<e.length;t++)if("]"===e[t]&&"]"===e[t+1]&&">"===e[t+2]){t+=2;break}return t}T.validate=function(s,o){o=Object.assign({},t,o);const l=[];let d=!1,p=!1;"\ufeff"===s[0]&&(s=s.substr(1));for(let t=0;t<s.length;t++)if("<"===s[t]&&"?"===s[t+1]){if(t+=2,t=n(s,t),t.err)return t}else{if("<"!==s[t]){if(r(s[t]))continue;return h("InvalidChar","char '"+s[t]+"' is not expected.",f(s,t))}{let m=t;if(t++,"!"===s[t]){t=i(s,t);continue}{let E=!1;"/"===s[t]&&(E=!0,t++);let N="";for(;t<s.length&&">"!==s[t]&&" "!==s[t]&&"\t"!==s[t]&&"\n"!==s[t]&&"\r"!==s[t];t++)N+=s[t];if(N=N.trim(),"/"===N[N.length-1]&&(N=N.substring(0,N.length-1),t--),g=N,!e.isName(g)){let e;return e=0===N.trim().length?"Invalid space after '<'.":"Tag '"+N+"' is an invalid name.",h("InvalidTag",e,f(s,t))}const b=a(s,t);if(!1===b)return h("InvalidAttr","Attributes for '"+N+"' have open quote.",f(s,t));let w=b.value;if(t=b.index,"/"===w[w.length-1]){const e=t-w.length;w=w.substring(0,w.length-1);const r=u(w,o);if(!0!==r)return h(r.err.code,r.err.msg,f(s,e+r.err.line));d=!0}else if(E){if(!b.tagClosed)return h("InvalidTag","Closing tag '"+N+"' doesn't have proper closing.",f(s,t));if(w.trim().length>0)return h("InvalidTag","Closing tag '"+N+"' can't have attributes or invalid starting.",f(s,m));if(0===l.length)return h("InvalidTag","Closing tag '"+N+"' has not been opened.",f(s,m));{const e=l.pop();if(N!==e.tagName){let t=f(s,e.tagStartPos);return h("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+t.line+", col "+t.col+") instead of closing tag '"+N+"'.",f(s,m))}0==l.length&&(p=!0)}}else{const e=u(w,o);if(!0!==e)return h(e.err.code,e.err.msg,f(s,t-w.length+e.err.line));if(!0===p)return h("InvalidXml","Multiple possible root nodes found.",f(s,t));-1!==o.unpairedTags.indexOf(N)||l.push({tagName:N,tagStartPos:m}),d=!0}for(t++;t<s.length;t++)if("<"===s[t]){if("!"===s[t+1]){t++,t=i(s,t);continue}if("?"!==s[t+1])break;if(t=n(s,++t),t.err)return t}else if("&"===s[t]){const e=c(s,t);if(-1==e)return h("InvalidChar","char '&' is not expected.",f(s,t));t=e}else if(!0===p&&!r(s[t]))return h("InvalidXml","Extra text at the end",f(s,t));"<"===s[t]&&t--}}}var g;return d?1==l.length?h("InvalidTag","Unclosed tag '"+l[0].tagName+"'.",f(s,l[0].tagStartPos)):!(l.length>0)||h("InvalidXml","Invalid '"+JSON.stringify(l.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):h("InvalidXml","Start tag expected.",1)};const s='"',o="'";function a(e,t){let r="",n="",i=!1;for(;t<e.length;t++){if(e[t]===s||e[t]===o)""===n?n=e[t]:n!==e[t]||(n="");else if(">"===e[t]&&""===n){i=!0;break}r+=e[t]}return""===n&&{value:r,index:t,tagClosed:i}}const l=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function u(t,r){const n=e.getAllMatches(t,l),i={};for(let e=0;e<n.length;e++){if(0===n[e][1].length)return h("InvalidAttr","Attribute '"+n[e][2]+"' has no space in starting.",p(n[e]));if(void 0!==n[e][3]&&void 0===n[e][4])return h("InvalidAttr","Attribute '"+n[e][2]+"' is without value.",p(n[e]));if(void 0===n[e][3]&&!r.allowBooleanAttributes)return h("InvalidAttr","boolean attribute '"+n[e][2]+"' is not allowed.",p(n[e]));const t=n[e][2];if(!d(t))return h("InvalidAttr","Attribute '"+t+"' is an invalid name.",p(n[e]));if(i.hasOwnProperty(t))return h("InvalidAttr","Attribute '"+t+"' is repeated.",p(n[e]));i[t]=1}return!0}function c(e,t){if(";"===e[++t])return-1;if("#"===e[t])return function(e,t){let r=/\d/;for("x"===e[t]&&(t++,r=/[\da-fA-F]/);t<e.length;t++){if(";"===e[t])return t;if(!e[t].match(r))break}return-1}(e,++t);let r=0;for(;t<e.length;t++,r++)if(!(e[t].match(/\w/)&&r<20)){if(";"===e[t])break;return-1}return t}function h(e,t,r){return{err:{code:e,msg:t,line:r.line||r,col:r.col}}}function d(t){return e.isName(t)}function f(e,t){const r=e.substring(0,t).split(/\r?\n/);return{line:r.length,col:r[r.length-1].length+1}}function p(e){return e.startIndex+e[1].length}return T}var $,C,P,_,S,F,D,V,M,j,k,G={};function U(){return M?V:(M=1,V=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1})}var X,B,H,q,Y,K,J,Z,z,Q={};function W(){if(X)return Q;function e(i,s,o){let a;const l={};for(let u=0;u<i.length;u++){const c=i[u],h=t(c);let d="";if(d=void 0===o?h:o+"."+h,h===s.textNodeName)void 0===a?a=c[h]:a+=""+c[h];else{if(void 0===h)continue;if(c[h]){let t=e(c[h],s,d);const i=n(t,s);c[":@"]?r(t,c[":@"],d,s):1!==Object.keys(t).length||void 0===t[s.textNodeName]||s.alwaysCreateTextNode?0===Object.keys(t).length&&(s.alwaysCreateTextNode?t[s.textNodeName]="":t=""):t=t[s.textNodeName],void 0!==l[h]&&l.hasOwnProperty(h)?(Array.isArray(l[h])||(l[h]=[l[h]]),l[h].push(t)):s.isArray(h,d,i)?l[h]=[t]:l[h]=t}}}return"string"==typeof a?a.length>0&&(l[s.textNodeName]=a):void 0!==a&&(l[s.textNodeName]=a),l}function t(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const r=t[e];if(":@"!==r)return r}}function r(e,t,r,n){if(t){const i=Object.keys(t),s=i.length;for(let o=0;o<s;o++){const s=i[o];n.isArray(s,r+"."+s,!0,!0)?e[s]=[t[s]]:e[s]=t[s]}}}function n(e,t){const{textNodeName:r}=t,n=Object.keys(e).length;return 0===n||!(1!==n||!e[r]&&"boolean"!=typeof e[r]&&0!==e[r])}return X=1,Q.prettify=function(t,r){return e(t,r)},Q}function ee(){if(H)return B;H=1;const{buildOptions:e}=function(){if($)return G;$=1;const e={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};return G.buildOptions=function(t){return Object.assign({},e,t)},G.defaultOptions=e,G}(),t=function(){if(k)return j;k=1;const e=R(),t=P?C:(P=1,C=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}),r=function(){if(S)return _;S=1;const e=R();function t(e,t){let r="";for(;t<e.length&&"'"!==e[t]&&'"'!==e[t];t++)r+=e[t];if(r=r.trim(),-1!==r.indexOf(" "))throw new Error("External entites are not supported");const n=e[t++];let i="";for(;t<e.length&&e[t]!==n;t++)i+=e[t];return[r,i,t]}function r(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"N"===e[t+3]&&"T"===e[t+4]&&"I"===e[t+5]&&"T"===e[t+6]&&"Y"===e[t+7]}function n(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"L"===e[t+3]&&"E"===e[t+4]&&"M"===e[t+5]&&"E"===e[t+6]&&"N"===e[t+7]&&"T"===e[t+8]}function i(e,t){return"!"===e[t+1]&&"A"===e[t+2]&&"T"===e[t+3]&&"T"===e[t+4]&&"L"===e[t+5]&&"I"===e[t+6]&&"S"===e[t+7]&&"T"===e[t+8]}function s(e,t){return"!"===e[t+1]&&"N"===e[t+2]&&"O"===e[t+3]&&"T"===e[t+4]&&"A"===e[t+5]&&"T"===e[t+6]&&"I"===e[t+7]&&"O"===e[t+8]&&"N"===e[t+9]}function o(t){if(e.isName(t))return t;throw new Error(`Invalid entity name ${t}`)}return _=function(e,a){const l={};if("O"!==e[a+3]||"C"!==e[a+4]||"T"!==e[a+5]||"Y"!==e[a+6]||"P"!==e[a+7]||"E"!==e[a+8])throw new Error("Invalid Tag instead of DOCTYPE");{a+=9;let u=1,c=!1,h=!1,d="";for(;a<e.length;a++)if("<"!==e[a]||h)if(">"===e[a]){if(h?"-"===e[a-1]&&"-"===e[a-2]&&(h=!1,u--):u--,0===u)break}else"["===e[a]?c=!0:d+=e[a];else{if(c&&r(e,a)){let r,n;a+=7,[r,n,a]=t(e,a+1),-1===n.indexOf("&")&&(l[o(r)]={regx:RegExp(`&${r};`,"g"),val:n})}else c&&n(e,a)||c&&i(e,a)?a+=8:c&&s(e,a)?a+=9:h=!0;u++,d=""}if(0!==u)throw new Error("Unclosed DOCTYPE")}return{entities:l,i:a}}}(),n=function(){if(D)return F;D=1;const e=/^[-+]?0x[a-fA-F0-9]+$/,t=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return F=function(n,i={}){if(i=Object.assign({},r,i),!n||"string"!=typeof n)return n;let s=n.trim();if(void 0!==i.skipLike&&i.skipLike.test(s))return n;if(i.hex&&e.test(s))return Number.parseInt(s,16);{const e=t.exec(s);if(e){const t=e[1],r=e[2];let a=(o=e[3])&&-1!==o.indexOf(".")?("."===(o=o.replace(/0+$/,""))?o="0":"."===o[0]?o="0"+o:"."===o[o.length-1]&&(o=o.substr(0,o.length-1)),o):o;const l=e[4]||e[6];if(!i.leadingZeros&&r.length>0&&t&&"."!==s[2])return n;if(!i.leadingZeros&&r.length>0&&!t&&"."!==s[1])return n;{const e=Number(s),o=""+e;return-1!==o.search(/[eE]/)||l?i.eNotation?e:n:-1!==s.indexOf(".")?"0"===o&&""===a||o===a||t&&o==="-"+a?e:n:r?a===o||t+a===o?e:n:s===o||s===t+o?e:n}}return n}var o}}(),i=U();function s(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const n=t[r];this.lastEntities[n]={regex:new RegExp("&"+n+";","g"),val:e[n]}}}function o(e,t,r,n,i,s,o){if(void 0!==e&&(this.options.trimValues&&!n&&(e=e.trim()),e.length>0)){o||(e=this.replaceEntitiesValue(e));const n=this.options.tagValueProcessor(t,e,r,i,s);return null==n?e:typeof n!=typeof e||n!==e?n:this.options.trimValues||e.trim()===e?N(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function a(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const l=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function u(t,r,n){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const n=e.getAllMatches(t,l),i=n.length,s={};for(let e=0;e<i;e++){const t=this.resolveNameSpace(n[e][1]);if(this.ignoreAttributesFn(t,r))continue;let i=n[e][4],o=this.options.attributeNamePrefix+t;if(t.length)if(this.options.transformAttributeName&&(o=this.options.transformAttributeName(o)),"__proto__"===o&&(o="#__proto__"),void 0!==i){this.options.trimValues&&(i=i.trim()),i=this.replaceEntitiesValue(i);const e=this.options.attributeValueProcessor(t,i,r);s[o]=null==e?i:typeof e!=typeof i||e!==i?e:N(i,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(s[o]=!0)}if(!Object.keys(s).length)return;if(this.options.attributesGroupName){const e={};return e[this.options.attributesGroupName]=s,e}return s}}const c=function(e){e=e.replace(/\r\n?/g,"\n");const n=new t("!xml");let i=n,s="",o="";for(let a=0;a<e.length;a++)if("<"===e[a])if("/"===e[a+1]){const t=g(e,">",a,"Closing Tag is not closed.");let r=e.substring(a+2,t).trim();if(this.options.removeNSPrefix){const e=r.indexOf(":");-1!==e&&(r=r.substr(e+1))}this.options.transformTagName&&(r=this.options.transformTagName(r)),i&&(s=this.saveTextToParentTag(s,i,o));const n=o.substring(o.lastIndexOf(".")+1);if(r&&-1!==this.options.unpairedTags.indexOf(r))throw new Error(`Unpaired tag can not be used as closing tag: </${r}>`);let l=0;n&&-1!==this.options.unpairedTags.indexOf(n)?(l=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=o.lastIndexOf("."),o=o.substring(0,l),i=this.tagsNodeStack.pop(),s="",a=t}else if("?"===e[a+1]){let r=m(e,a,!1,"?>");if(!r)throw new Error("Pi Tag is not closed.");if(s=this.saveTextToParentTag(s,i,o),this.options.ignoreDeclaration&&"?xml"===r.tagName||this.options.ignorePiTags);else{const e=new t(r.tagName);e.add(this.options.textNodeName,""),r.tagName!==r.tagExp&&r.attrExpPresent&&(e[":@"]=this.buildAttributesMap(r.tagExp,o,r.tagName)),this.addChild(i,e,o)}a=r.closeIndex+1}else if("!--"===e.substr(a+1,3)){const t=g(e,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const r=e.substring(a+4,t-2);s=this.saveTextToParentTag(s,i,o),i.add(this.options.commentPropName,[{[this.options.textNodeName]:r}])}a=t}else if("!D"===e.substr(a+1,2)){const t=r(e,a);this.docTypeEntities=t.entities,a=t.i}else if("!["===e.substr(a+1,2)){const t=g(e,"]]>",a,"CDATA is not closed.")-2,r=e.substring(a+9,t);s=this.saveTextToParentTag(s,i,o);let n=this.parseTextData(r,i.tagname,o,!0,!1,!0,!0);null==n&&(n=""),this.options.cdataPropName?i.add(this.options.cdataPropName,[{[this.options.textNodeName]:r}]):i.add(this.options.textNodeName,n),a=t+2}else{let r=m(e,a,this.options.removeNSPrefix),l=r.tagName;const u=r.rawTagName;let c=r.tagExp,h=r.attrExpPresent,d=r.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),i&&s&&"!xml"!==i.tagname&&(s=this.saveTextToParentTag(s,i,o,!1));const f=i;if(f&&-1!==this.options.unpairedTags.indexOf(f.tagname)&&(i=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),l!==n.tagname&&(o+=o?"."+l:l),this.isItStopNode(this.options.stopNodes,o,l)){let n="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===l[l.length-1]?(l=l.substr(0,l.length-1),o=o.substr(0,o.length-1),c=l):c=c.substr(0,c.length-1),a=r.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(l))a=r.closeIndex;else{const t=this.readStopNodeData(e,u,d+1);if(!t)throw new Error(`Unexpected end of ${u}`);a=t.i,n=t.tagContent}const s=new t(l);l!==c&&h&&(s[":@"]=this.buildAttributesMap(c,o,l)),n&&(n=this.parseTextData(n,l,o,!0,h,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),s.add(this.options.textNodeName,n),this.addChild(i,s,o)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){"/"===l[l.length-1]?(l=l.substr(0,l.length-1),o=o.substr(0,o.length-1),c=l):c=c.substr(0,c.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));const e=new t(l);l!==c&&h&&(e[":@"]=this.buildAttributesMap(c,o,l)),this.addChild(i,e,o),o=o.substr(0,o.lastIndexOf("."))}else{const e=new t(l);this.tagsNodeStack.push(i),l!==c&&h&&(e[":@"]=this.buildAttributesMap(c,o,l)),this.addChild(i,e,o),i=e}s="",a=d}}else s+=e[a];return n.child};function h(e,t,r){const n=this.options.updateTag(t.tagname,r,t[":@"]);!1===n||("string"==typeof n?(t.tagname=n,e.addChild(t)):e.addChild(t))}const d=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function f(e,t,r,n){return e&&(void 0===n&&(n=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,n))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function p(e,t,r){const n="*."+r;for(const r in e){const i=e[r];if(n===i||t===i)return!0}return!1}function g(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function m(e,t,r,n=">"){const i=function(e,t,r=">"){let n,i="";for(let s=t;s<e.length;s++){let t=e[s];if(n)t===n&&(n="");else if('"'===t||"'"===t)n=t;else if(t===r[0]){if(!r[1])return{data:i,index:s};if(e[s+1]===r[1])return{data:i,index:s}}else"\t"===t&&(t=" ");i+=t}}(e,t+1,n);if(!i)return;let s=i.data;const o=i.index,a=s.search(/\s/);let l=s,u=!0;-1!==a&&(l=s.substring(0,a),s=s.substring(a+1).trimStart());const c=l;if(r){const e=l.indexOf(":");-1!==e&&(l=l.substr(e+1),u=l!==i.data.substr(e+1))}return{tagName:l,tagExp:s,closeIndex:o,attrExpPresent:u,rawTagName:c}}function E(e,t,r){const n=r;let i=1;for(;r<e.length;r++)if("<"===e[r])if("/"===e[r+1]){const s=g(e,">",r,`${t} is not closed`);if(e.substring(r+2,s).trim()===t&&(i--,0===i))return{tagContent:e.substring(n,r),i:s};r=s}else if("?"===e[r+1])r=g(e,"?>",r+1,"StopNode is not closed.");else if("!--"===e.substr(r+1,3))r=g(e,"--\x3e",r+3,"StopNode is not closed.");else if("!["===e.substr(r+1,2))r=g(e,"]]>",r,"StopNode is not closed.")-2;else{const n=m(e,r,">");n&&((n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex)}}function N(t,r,i){if(r&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&n(t,i)}return e.isExist(t)?t:""}return j=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=s,this.parseXml=c,this.parseTextData=o,this.resolveNameSpace=a,this.buildAttributesMap=u,this.isItStopNode=p,this.replaceEntitiesValue=d,this.readStopNodeData=E,this.saveTextToParentTag=f,this.addChild=h,this.ignoreAttributesFn=i(this.options.ignoreAttributes)}}}(),{prettify:r}=W(),n=L();return B=class{constructor(t){this.externalEntities={},this.options=e(t)}parse(e,i){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(i){!0===i&&(i={});const t=n.validate(e,i);if(!0!==t)throw Error(`${t.err.msg}:${t.err.line}:${t.err.col}`)}const s=new t(this.options);s.addExternalEntities(this.externalEntities);const o=s.parseXml(e);return this.options.preserveOrder||void 0===o?o:r(o,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}}function te(){if(Y)return q;function e(s,o,a,l){let u="",c=!1;for(let h=0;h<s.length;h++){const d=s[h],f=t(d);if(void 0===f)continue;let p="";if(p=0===a.length?f:`${a}.${f}`,f===o.textNodeName){let e=d[f];n(p,o)||(e=o.tagValueProcessor(f,e),e=i(e,o)),c&&(u+=l),u+=e,c=!1;continue}if(f===o.cdataPropName){c&&(u+=l),u+=`<![CDATA[${d[f][0][o.textNodeName]}]]>`,c=!1;continue}if(f===o.commentPropName){u+=l+`\x3c!--${d[f][0][o.textNodeName]}--\x3e`,c=!0;continue}if("?"===f[0]){const e=r(d[":@"],o),t="?xml"===f?"":l;let n=d[f][0][o.textNodeName];n=0!==n.length?" "+n:"",u+=t+`<${f}${n}${e}?>`,c=!0;continue}let g=l;""!==g&&(g+=o.indentBy);const m=l+`<${f}${r(d[":@"],o)}`,E=e(d[f],o,p,g);-1!==o.unpairedTags.indexOf(f)?o.suppressUnpairedNode?u+=m+">":u+=m+"/>":E&&0!==E.length||!o.suppressEmptyNode?E&&E.endsWith(">")?u+=m+`>${E}${l}</${f}>`:(u+=m+">",E&&""!==l&&(E.includes("/>")||E.includes("</"))?u+=l+o.indentBy+E+l:u+=E,u+=`</${f}>`):u+=m+"/>",c=!0}return u}function t(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const n=t[r];if(e.hasOwnProperty(n)&&":@"!==n)return n}}function r(e,t){let r="";if(e&&!t.ignoreAttributes)for(let n in e){if(!e.hasOwnProperty(n))continue;let s=t.attributeValueProcessor(n,e[n]);s=i(s,t),!0===s&&t.suppressBooleanAttributes?r+=` ${n.substr(t.attributeNamePrefix.length)}`:r+=` ${n.substr(t.attributeNamePrefix.length)}="${s}"`}return r}function n(e,t){let r=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let n in t.stopNodes)if(t.stopNodes[n]===e||t.stopNodes[n]==="*."+r)return!0;return!1}function i(e,t){if(e&&e.length>0&&t.processEntities)for(let r=0;r<t.entities.length;r++){const n=t.entities[r];e=e.replace(n.regex,n.val)}return e}return Y=1,q=function(t,r){let n="";return r.format&&r.indentBy.length>0&&(n="\n"),e(t,r,"",n)}}var re=function(){if(z)return Z;z=1;const e=L(),t=ee(),r=function(){if(J)return K;J=1;const e=te(),t=U(),r={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function n(e){this.options=Object.assign({},r,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=t(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=o),this.processTextOrObjNode=i,this.options.format?(this.indentate=s,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function i(e,t,r,n){const i=this.j2x(e,r+1,n.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,r):this.buildObjectNode(i.val,t,i.attrStr,r)}function s(e){return this.options.indentBy.repeat(e)}function o(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}return n.prototype.build=function(t){return this.options.preserveOrder?e(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},n.prototype.j2x=function(e,t,r){let n="",i="";const s=r.join(".");for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o))if(void 0===e[o])this.isAttribute(o)&&(i+="");else if(null===e[o])this.isAttribute(o)?i+="":"?"===o[0]?i+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if(e[o]instanceof Date)i+=this.buildTextValNode(e[o],o,"",t);else if("object"!=typeof e[o]){const r=this.isAttribute(o);if(r&&!this.ignoreAttributesFn(r,s))n+=this.buildAttrPairStr(r,""+e[o]);else if(!r)if(o===this.options.textNodeName){let t=this.options.tagValueProcessor(o,""+e[o]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[o],o,"",t)}else if(Array.isArray(e[o])){const n=e[o].length;let s="",a="";for(let l=0;l<n;l++){const n=e[o][l];if(void 0===n);else if(null===n)"?"===o[0]?i+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if("object"==typeof n)if(this.options.oneListGroup){const e=this.j2x(n,t+1,r.concat(o));s+=e.val,this.options.attributesGroupName&&n.hasOwnProperty(this.options.attributesGroupName)&&(a+=e.attrStr)}else s+=this.processTextOrObjNode(n,o,t,r);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(o,n);e=this.replaceEntitiesValue(e),s+=e}else s+=this.buildTextValNode(n,o,"",t)}this.options.oneListGroup&&(s=this.buildObjectNode(s,o,a,t)),i+=s}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const t=Object.keys(e[o]),r=t.length;for(let i=0;i<r;i++)n+=this.buildAttrPairStr(t[i],""+e[o][t[i]])}else i+=this.processTextOrObjNode(e[o],o,t,r);return{attrStr:n,val:i}},n.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},n.prototype.buildObjectNode=function(e,t,r,n){if(""===e)return"?"===t[0]?this.indentate(n)+"<"+t+r+"?"+this.tagEndChar:this.indentate(n)+"<"+t+r+this.closeTag(t)+this.tagEndChar;{let i="</"+t+this.tagEndChar,s="";return"?"===t[0]&&(s="?",i=""),!r&&""!==r||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===s.length?this.indentate(n)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(n)+"<"+t+r+s+this.tagEndChar+e+this.indentate(n)+i:this.indentate(n)+"<"+t+r+s+">"+e+i}},n.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},n.prototype.buildTextValNode=function(e,t,r,n){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(n)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(n)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(n)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(n)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(n)+"<"+t+r+">"+i+"</"+t+this.tagEndChar}},n.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const r=this.options.entities[t];e=e.replace(r.regex,r.val)}return e},K=n}();return Z={XMLParser:t,XMLValidator:e,XMLBuilder:r}}();class ne{_view;constructor(e){ie(e),this._view=e}get id(){return this._view.id}get name(){return this._view.name}get caption(){return this._view.caption}get emptyTitle(){return this._view.emptyTitle}get emptyCaption(){return this._view.emptyCaption}get getContents(){return this._view.getContents}get icon(){return this._view.icon}set icon(e){this._view.icon=e}get order(){return this._view.order}set order(e){this._view.order=e}get params(){return this._view.params}set params(e){this._view.params=e}get columns(){return this._view.columns}get emptyView(){return this._view.emptyView}get parent(){return this._view.parent}get sticky(){return this._view.sticky}get expanded(){return this._view.expanded}set expanded(e){this._view.expanded=e}get defaultSortKey(){return this._view.defaultSortKey}get loadChildViews(){return this._view.loadChildViews}}const ie=function(e){if(!e.id||"string"!=typeof e.id)throw new Error("View id is required and must be a string");if(!e.name||"string"!=typeof e.name)throw new Error("View name is required and must be a string");if("caption"in e&&"string"!=typeof e.caption)throw new Error("View caption must be a string");if(!e.getContents||"function"!=typeof e.getContents)throw new Error("View getContents is required and must be a function");if(!e.icon||"string"!=typeof e.icon||!function(e){if("string"!=typeof e)throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);if(0===(e=e.trim()).length)return!1;if(!0!==re.XMLValidator.validate(e))return!1;let t;const r=new re.XMLParser;try{t=r.parse(e)}catch{return!1}return!!t&&!!Object.keys(t).some((e=>"svg"===e.toLowerCase()))}(e.icon))throw new Error("View icon is required and must be a valid svg string");if("order"in e&&"number"!=typeof e.order)throw new Error("View order must be a number");if(e.columns&&e.columns.forEach((e=>{if(!(e instanceof y))throw new Error("View columns must be an array of Column. Invalid column found")})),e.emptyView&&"function"!=typeof e.emptyView)throw new Error("View emptyView must be a function");if(e.parent&&"string"!=typeof e.parent)throw new Error("View parent must be a string");if("sticky"in e&&"boolean"!=typeof e.sticky)throw new Error("View sticky must be a boolean");if("expanded"in e&&"boolean"!=typeof e.expanded)throw new Error("View expanded must be a boolean");if(e.defaultSortKey&&"string"!=typeof e.defaultSortKey)throw new Error("View defaultSortKey must be a string");if(e.loadChildViews&&"function"!=typeof e.loadChildViews)throw new Error("View loadChildViews must be a function");return!0};var se,oe,ae,le;function ue(){if(oe)return se;oe=1;const e="object"==typeof l&&l.env&&l.env.NODE_DEBUG&&/\bsemver\b/i.test(l.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};return se=e}function ce(){if(le)return ae;le=1;const e=Number.MAX_SAFE_INTEGER||9007199254740991;return ae={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:e,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}var he,de,fe,pe,ge,me,Ee,Ne,be,we,ve,ye,xe,Ie={exports:{}};function Oe(){if(Ee)return me;Ee=1;const e=ue(),{MAX_LENGTH:t,MAX_SAFE_INTEGER:r}=ce(),{safeRe:n,t:i}=(he||(he=1,function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:i}=ce(),s=ue(),o=(t=e.exports={}).re=[],a=t.safeRe=[],l=t.src=[],u=t.t={};let c=0;const h="[a-zA-Z0-9-]",d=[["\\s",1],["\\d",i],[h,n]],f=(e,t,r)=>{const n=(e=>{for(const[t,r]of d)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e})(t),i=c++;s(e,i,t),u[e]=i,l[i]=t,o[i]=new RegExp(t,r?"g":void 0),a[i]=new RegExp(n,r?"g":void 0)};f("NUMERICIDENTIFIER","0|[1-9]\\d*"),f("NUMERICIDENTIFIERLOOSE","\\d+"),f("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${h}*`),f("MAINVERSION",`(${l[u.NUMERICIDENTIFIER]})\\.(${l[u.NUMERICIDENTIFIER]})\\.(${l[u.NUMERICIDENTIFIER]})`),f("MAINVERSIONLOOSE",`(${l[u.NUMERICIDENTIFIERLOOSE]})\\.(${l[u.NUMERICIDENTIFIERLOOSE]})\\.(${l[u.NUMERICIDENTIFIERLOOSE]})`),f("PRERELEASEIDENTIFIER",`(?:${l[u.NUMERICIDENTIFIER]}|${l[u.NONNUMERICIDENTIFIER]})`),f("PRERELEASEIDENTIFIERLOOSE",`(?:${l[u.NUMERICIDENTIFIERLOOSE]}|${l[u.NONNUMERICIDENTIFIER]})`),f("PRERELEASE",`(?:-(${l[u.PRERELEASEIDENTIFIER]}(?:\\.${l[u.PRERELEASEIDENTIFIER]})*))`),f("PRERELEASELOOSE",`(?:-?(${l[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[u.PRERELEASEIDENTIFIERLOOSE]})*))`),f("BUILDIDENTIFIER",`${h}+`),f("BUILD",`(?:\\+(${l[u.BUILDIDENTIFIER]}(?:\\.${l[u.BUILDIDENTIFIER]})*))`),f("FULLPLAIN",`v?${l[u.MAINVERSION]}${l[u.PRERELEASE]}?${l[u.BUILD]}?`),f("FULL",`^${l[u.FULLPLAIN]}$`),f("LOOSEPLAIN",`[v=\\s]*${l[u.MAINVERSIONLOOSE]}${l[u.PRERELEASELOOSE]}?${l[u.BUILD]}?`),f("LOOSE",`^${l[u.LOOSEPLAIN]}$`),f("GTLT","((?:<|>)?=?)"),f("XRANGEIDENTIFIERLOOSE",`${l[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),f("XRANGEIDENTIFIER",`${l[u.NUMERICIDENTIFIER]}|x|X|\\*`),f("XRANGEPLAIN",`[v=\\s]*(${l[u.XRANGEIDENTIFIER]})(?:\\.(${l[u.XRANGEIDENTIFIER]})(?:\\.(${l[u.XRANGEIDENTIFIER]})(?:${l[u.PRERELEASE]})?${l[u.BUILD]}?)?)?`),f("XRANGEPLAINLOOSE",`[v=\\s]*(${l[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[u.XRANGEIDENTIFIERLOOSE]})(?:${l[u.PRERELEASELOOSE]})?${l[u.BUILD]}?)?)?`),f("XRANGE",`^${l[u.GTLT]}\\s*${l[u.XRANGEPLAIN]}$`),f("XRANGELOOSE",`^${l[u.GTLT]}\\s*${l[u.XRANGEPLAINLOOSE]}$`),f("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),f("COERCE",`${l[u.COERCEPLAIN]}(?:$|[^\\d])`),f("COERCEFULL",l[u.COERCEPLAIN]+`(?:${l[u.PRERELEASE]})?(?:${l[u.BUILD]})?(?:$|[^\\d])`),f("COERCERTL",l[u.COERCE],!0),f("COERCERTLFULL",l[u.COERCEFULL],!0),f("LONETILDE","(?:~>?)"),f("TILDETRIM",`(\\s*)${l[u.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",f("TILDE",`^${l[u.LONETILDE]}${l[u.XRANGEPLAIN]}$`),f("TILDELOOSE",`^${l[u.LONETILDE]}${l[u.XRANGEPLAINLOOSE]}$`),f("LONECARET","(?:\\^)"),f("CARETTRIM",`(\\s*)${l[u.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",f("CARET",`^${l[u.LONECARET]}${l[u.XRANGEPLAIN]}$`),f("CARETLOOSE",`^${l[u.LONECARET]}${l[u.XRANGEPLAINLOOSE]}$`),f("COMPARATORLOOSE",`^${l[u.GTLT]}\\s*(${l[u.LOOSEPLAIN]})$|^$`),f("COMPARATOR",`^${l[u.GTLT]}\\s*(${l[u.FULLPLAIN]})$|^$`),f("COMPARATORTRIM",`(\\s*)${l[u.GTLT]}\\s*(${l[u.LOOSEPLAIN]}|${l[u.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",f("HYPHENRANGE",`^\\s*(${l[u.XRANGEPLAIN]})\\s+-\\s+(${l[u.XRANGEPLAIN]})\\s*$`),f("HYPHENRANGELOOSE",`^\\s*(${l[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[u.XRANGEPLAINLOOSE]})\\s*$`),f("STAR","(<|>)?=?\\s*\\*"),f("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),f("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(Ie,Ie.exports)),Ie.exports),s=function(){if(fe)return de;fe=1;const e=Object.freeze({loose:!0}),t=Object.freeze({});return de=r=>r?"object"!=typeof r?e:r:t}(),{compareIdentifiers:o}=function(){if(ge)return pe;ge=1;const e=/^[0-9]+$/,t=(t,r)=>{const n=e.test(t),i=e.test(r);return n&&i&&(t=+t,r=+r),t===r?0:n&&!i?-1:i&&!n?1:t<r?-1:1};return pe={compareIdentifiers:t,rcompareIdentifiers:(e,r)=>t(r,e)}}();class a{constructor(o,l){if(l=s(l),o instanceof a){if(o.loose===!!l.loose&&o.includePrerelease===!!l.includePrerelease)return o;o=o.version}else if("string"!=typeof o)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof o}".`);if(o.length>t)throw new TypeError(`version is longer than ${t} characters`);e("SemVer",o,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const u=o.trim().match(l.loose?n[i.LOOSE]:n[i.FULL]);if(!u)throw new TypeError(`Invalid Version: ${o}`);if(this.raw=o,this.major=+u[1],this.minor=+u[2],this.patch=+u[3],this.major>r||this.major<0)throw new TypeError("Invalid major version");if(this.minor>r||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>r||this.patch<0)throw new TypeError("Invalid patch version");u[4]?this.prerelease=u[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<r)return t}return e})):this.prerelease=[],this.build=u[5]?u[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(e("SemVer.compare",this.version,this.options,t),!(t instanceof a)){if("string"==typeof t&&t===this.version)return 0;t=new a(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(e){return e instanceof a||(e=new a(e,this.options)),o(this.major,e.major)||o(this.minor,e.minor)||o(this.patch,e.patch)}comparePre(t){if(t instanceof a||(t=new a(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{const n=this.prerelease[r],i=t.prerelease[r];if(e("prerelease compare",r,n,i),void 0===n&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===n)return-1;if(n!==i)return o(n,i)}while(++r)}compareBuild(t){t instanceof a||(t=new a(t,this.options));let r=0;do{const n=this.build[r],i=t.build[r];if(e("build compare",r,n,i),void 0===n&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===n)return-1;if(n!==i)return o(n,i)}while(++r)}inc(e,t,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(r)?1:0;if(!t&&!1===r)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[e];else{let n=this.prerelease.length;for(;--n>=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);if(-1===n){if(t===this.prerelease.join(".")&&!1===r)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let n=[t,e];!1===r&&(n=[t]),0===o(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return me=a}!function(){if(ve)return we;ve=1;const e=function(){if(be)return Ne;be=1;const e=Oe();return Ne=(t,r,n=!1)=>{if(t instanceof e)return t;try{return new e(t,r)}catch(e){if(!n)return null;throw e}}}();we=(t,r)=>{const n=e(t,r);return n?n.version:null}}(),function(){if(xe)return ye;xe=1;const e=Oe();ye=(t,r)=>new e(t,r).major}(),a.m;const Te=function(e){return(void 0===window._nc_newfilemenu&&(window._nc_newfilemenu=new c,n.o.debug("NewFileMenu initialized")),window._nc_newfilemenu).getEntries(e).sort(((e,t)=>void 0!==e.order&&void 0!==t.order&&e.order!==t.order?e.order-t.order:e.displayName.localeCompare(t.displayName,void 0,{numeric:!0,sensitivity:"base"})))}}},i={};function s(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,loaded:!1,exports:{}};return n[e].call(r.exports,r,r.exports,s),r.loaded=!0,r.exports}s.m=n,e=[],s.O=(t,r,n,i)=>{if(!r){var o=1/0;for(c=0;c<e.length;c++){r=e[c][0],n=e[c][1],i=e[c][2];for(var a=!0,l=0;l<r.length;l++)(!1&i||o>=i)&&Object.keys(s.O).every((e=>s.O[e](r[l])))?r.splice(l--,1):(a=!1,i<o&&(o=i));if(a){e.splice(c--,1);var u=n();void 0!==u&&(t=u)}}return t}i=i||0;for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[r,n,i]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce(((t,r)=>(s.f[r](e,t),t)),[])),s.u=e=>e+"-"+e+".js?v="+{358:"cb526b6422ca61c923fd",2441:"44b85e4901c485417f88",5266:"5e74043eef0f3a196f22",5862:"142cd48ca8ec32e57725",6146:"5f2015343db7411125d5",8289:"8f098190dce9305dab1e",8320:"87233c1e751a74de3fe2"}[e],s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="nextcloud:",s.l=(e,n,i,o)=>{if(t[e])t[e].push(n);else{var a,l;if(void 0!==i)for(var u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var h=u[c];if(h.getAttribute("src")==e||h.getAttribute("data-webpack")==r+i){a=h;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,s.nc&&a.setAttribute("nonce",s.nc),a.setAttribute("data-webpack",r+i),a.src=e),t[e]=[n];var d=(r,n)=>{a.onerror=a.onload=null,clearTimeout(f);var i=t[e];if(delete t[e],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((e=>e(n))),r)return r(n)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=d.bind(null,a.onerror),a.onload=d.bind(null,a.onload),l&&document.head.appendChild(a)}},s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),s.j=5102,(()=>{var e;s.g.importScripts&&(e=s.g.location+"");var t=s.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 n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=e})(),(()=>{s.b=document.baseURI||self.location.href;var e={5102:0};s.f.j=(t,r)=>{var n=s.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var i=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=i);var o=s.p+s.u(t),a=new Error;s.l(o,(r=>{if(s.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,n[1](a)}}),"chunk-"+t,t)}},s.O.j=t=>0===e[t];var t=(t,r)=>{var n,i,o=r[0],a=r[1],l=r[2],u=0;if(o.some((t=>0!==e[t]))){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);if(l)var c=l(s)}for(t&&t(r);u<o.length;u++)i=o[u],s.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return s.O(c)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),s.nc=void 0;var o=s.O(void 0,[4208],(()=>s(51528)));o=s.O(o)})(); +//# sourceMappingURL=files_sharing-init-public.js.map?v=11dfb5cfe255684a5a5f
\ No newline at end of file diff --git a/dist/files_sharing-init-public.js.map b/dist/files_sharing-init-public.js.map index d36e9fbaece..040f50a7559 100644 --- a/dist/files_sharing-init-public.js.map +++ b/dist/files_sharing-init-public.js.map @@ -1 +1 @@ -{"version":3,"file":"files_sharing-init-public.js?v=0be7ee732c6bdd38382c","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_views/publicFileDrop.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/router/index.ts","webpack:///nextcloud/apps/files_sharing/src/init-public.ts","webpack:///nextcloud/apps/files_sharing/src/files_views/publicShare.ts","webpack:///nextcloud/apps/files_sharing/src/files_views/publicFileShare.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","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};","import { Folder, Permission, View, davRemoteURL, davRootPath, getNavigation } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport svgCloudUpload from '@mdi/svg/svg/cloud-upload.svg?raw';\nimport Vue from 'vue';\nexport default () => {\n const foldername = loadState('files_sharing', 'filename');\n let FilesViewFileDropEmptyContent;\n let fileDropEmptyContentInstance;\n const view = new View({\n id: 'public-file-drop',\n name: t('files_sharing', 'File drop'),\n caption: t('files_sharing', 'Upload files to {foldername}', { foldername }),\n icon: svgCloudUpload,\n order: 1,\n emptyView: async (div) => {\n if (FilesViewFileDropEmptyContent === undefined) {\n const { default: component } = await import('../views/FilesViewFileDropEmptyContent.vue');\n FilesViewFileDropEmptyContent = Vue.extend(component);\n }\n if (fileDropEmptyContentInstance) {\n fileDropEmptyContentInstance.$destroy();\n }\n fileDropEmptyContentInstance = new FilesViewFileDropEmptyContent({\n propsData: {\n foldername,\n },\n });\n fileDropEmptyContentInstance.$mount(div);\n },\n getContents: async () => {\n return {\n contents: [],\n // Fake a writeonly folder as root\n folder: new Folder({\n id: 0,\n source: `${davRemoteURL}${davRootPath}`,\n root: davRootPath,\n owner: null,\n permissions: Permission.CREATE,\n }),\n };\n },\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","import { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\nexport const fetchNode = async (path) => {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n};\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import { davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files';\nimport { CancelablePromise } from 'cancelable-promise';\nimport { join } from 'path';\nimport { client } from './WebdavClient.ts';\nimport logger from '../logger.ts';\n/**\n * Slim wrapper over `@nextcloud/files` `davResultToNode` to allow using the function with `Array.map`\n * @param stat The result returned by the webdav library\n */\nexport const resultToNode = (stat) => davResultToNode(stat);\nexport const getContents = (path = '/') => {\n path = join(davRootPath, path);\n const controller = new AbortController();\n const propfindPayload = davGetDefaultPropfind();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: controller.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root.filename !== path && `${root.filename}/` !== path) {\n logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n throw new Error('Root node does not match requested path');\n }\n resolve({\n folder: resultToNode(root),\n contents: contents.map((result) => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n });\n }\n catch (error) {\n reject(error);\n }\n });\n};\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","import { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport queryString from 'query-string';\nimport Router from 'vue-router';\nimport Vue from 'vue';\nconst view = loadState('files_sharing', 'view');\nconst sharingToken = loadState('files_sharing', 'sharingToken');\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = function push(to, onComplete, onAbort) {\n if (onComplete || onAbort)\n return originalPush.call(this, to, onComplete, onAbort);\n return originalPush.call(this, to).catch(err => err);\n};\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl('/s'),\n linkActiveClass: 'active',\n routes: [\n {\n path: '/',\n // Pretending we're using the default view\n redirect: { name: 'filelist', params: { view, token: sharingToken } },\n },\n {\n path: '/:token',\n name: 'filelist',\n props: true,\n },\n ],\n // Custom stringifyQuery to prevent encoding of slashes in the url\n stringifyQuery(query) {\n const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n return result ? ('?' + result) : '';\n },\n});\nexport default router;\n","import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport registerFileDropView from './files_views/publicFileDrop.ts';\nimport registerPublicShareView from './files_views/publicShare.ts';\nimport registerPublicFileShareView from './files_views/publicFileShare.ts';\nimport RouterService from '../../files/src/services/RouterService.ts';\nimport router from './router/index.ts';\nimport logger from './services/logger.ts';\nregisterFileDropView();\nregisterPublicShareView();\nregisterPublicFileShareView();\n// Get the current view from state and set it active\nconst view = loadState('files_sharing', 'view');\nconst navigation = getNavigation();\nnavigation.setActive(navigation.views.find(({ id }) => id === view) ?? null);\n// Force our own router\nwindow.OCP.Files = window.OCP.Files ?? {};\nwindow.OCP.Files.Router = new RouterService(router);\n// If this is a single file share, so set the fileid as active in the URL\nconst fileId = loadState('files_sharing', 'fileId', null);\nconst token = loadState('files_sharing', 'sharingToken');\nif (fileId !== null) {\n window.OCP.Files.Router.goToRoute('filelist', { ...window.OCP.Files.Router.params, token, fileid: String(fileId) }, { ...window.OCP.Files.Router.query, openfile: 'true' });\n}\n// When the file list is loaded we need to apply the \"userconfig\" setup on the share\nsubscribe('files:list:updated', loadShareConfig);\n/**\n * Event handler to load the view config for the current share.\n * This is done on the `files:list:updated` event to ensure the list and especially the config store was correctly initialized.\n *\n * @param context The event context\n * @param context.folder The current folder\n */\nfunction loadShareConfig({ folder }) {\n // Only setup config once\n unsubscribe('files:list:updated', loadShareConfig);\n // Share attributes (the same) are set on all folders of a share\n if (folder.attributes['share-attributes']) {\n const shareAttributes = JSON.parse(folder.attributes['share-attributes'] || '[]');\n const gridViewAttribute = shareAttributes.find(({ scope, key }) => scope === 'config' && key === 'grid_view');\n if (gridViewAttribute !== undefined) {\n logger.debug('Loading share attributes', { gridViewAttribute });\n emit('files:config:updated', { key: 'grid_view', value: gridViewAttribute.value === true });\n }\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation } from '@nextcloud/files';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { getContents } from '../../../files/src/services/Files';\nexport default () => {\n const view = new View({\n id: 'public-share',\n name: t('files_sharing', 'Public share'),\n caption: t('files_sharing', 'Publicly shared files.'),\n emptyTitle: t('files_sharing', 'No files'),\n emptyCaption: t('files_sharing', 'Files and folders shared with you will show up here'),\n icon: LinkSvg,\n order: 1,\n getContents,\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","import { Folder, Permission, View, davGetDefaultPropfind, davRemoteURL, davResultToNode, davRootPath, getNavigation } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { CancelablePromise } from 'cancelable-promise';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { client } from '../../../files/src/services/WebdavClient';\nimport logger from '../services/logger';\nexport default () => {\n const view = new View({\n id: 'public-file-share',\n name: t('files_sharing', 'Public file share'),\n caption: t('files_sharing', 'Publicly shared file.'),\n emptyTitle: t('files_sharing', 'No file'),\n emptyCaption: t('files_sharing', 'The file shared with you will show up here'),\n icon: LinkSvg,\n order: 1,\n getContents: () => {\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n try {\n const node = await client.stat(davRootPath, {\n data: davGetDefaultPropfind(),\n details: true,\n signal: abort.signal,\n });\n resolve({\n // We only have one file as the content\n contents: [davResultToNode(node.data)],\n // Fake a readonly folder as root\n folder: new Folder({\n id: 0,\n source: `${davRemoteURL}${davRootPath}`,\n root: davRootPath,\n owner: null,\n permissions: Permission.READ,\n attributes: {\n // Ensure the share note is set on the root\n note: node.data.props?.note,\n },\n }),\n });\n }\n catch (e) {\n logger.error(e);\n reject(e);\n }\n });\n },\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","export default class RouterService {\n // typescript compiles this to `#router` to make it private even in JS,\n // but in TS it needs to be called without the visibility specifier\n router;\n constructor(router) {\n this.router = router;\n }\n get name() {\n return this.router.currentRoute.name;\n }\n get query() {\n return this.router.currentRoute.query || {};\n }\n get params() {\n return this.router.currentRoute.params || {};\n }\n /**\n * This is a protected getter only for internal use\n * @private\n */\n get _router() {\n return this.router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this.router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name the route name\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n return this.router.push({\n name,\n query,\n params,\n replace,\n });\n }\n}\n","import { o as logger } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator = {};\nvar util = {};\nvar hasRequiredUtil;\nfunction requireUtil() {\n if (hasRequiredUtil) return util;\n hasRequiredUtil = 1;\n (function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n })(util);\n return util;\n}\nvar hasRequiredValidator;\nfunction requireValidator() {\n if (hasRequiredValidator) return validator;\n hasRequiredValidator = 1;\n const util2 = requireUtil();\n const defaultOptions = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n };\n validator.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n };\n function isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n }\n function readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n }\n function readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n }\n const doubleQuote = '\"';\n const singleQuote = \"'\";\n function readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n }\n const validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\n function validateAttributeString(attrStr, options) {\n const matches = util2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n }\n function validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n }\n function validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n }\n function getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n }\n function validateAttrName(attrName) {\n return util2.isName(attrName);\n }\n function validateTagName(tagname) {\n return util2.isName(tagname);\n }\n function getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n }\n function getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n }\n return validator;\n}\nvar OptionsBuilder = {};\nvar hasRequiredOptionsBuilder;\nfunction requireOptionsBuilder() {\n if (hasRequiredOptionsBuilder) return OptionsBuilder;\n hasRequiredOptionsBuilder = 1;\n const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n };\n const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n };\n OptionsBuilder.buildOptions = buildOptions;\n OptionsBuilder.defaultOptions = defaultOptions;\n return OptionsBuilder;\n}\nvar xmlNode;\nvar hasRequiredXmlNode;\nfunction requireXmlNode() {\n if (hasRequiredXmlNode) return xmlNode;\n hasRequiredXmlNode = 1;\n class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n }\n xmlNode = XmlNode;\n return xmlNode;\n}\nvar DocTypeReader;\nvar hasRequiredDocTypeReader;\nfunction requireDocTypeReader() {\n if (hasRequiredDocTypeReader) return DocTypeReader;\n hasRequiredDocTypeReader = 1;\n const util2 = requireUtil();\n function readDocType(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n let entityName, val;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else comment = true;\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n }\n function readEntityExp(xmlData, i2) {\n let entityName = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName += xmlData[i2];\n }\n entityName = entityName.trim();\n if (entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val += xmlData[i2];\n }\n return [entityName, val, i2];\n }\n function isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n }\n function isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n }\n function validateEntityName(name) {\n if (util2.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n }\n DocTypeReader = readDocType;\n return DocTypeReader;\n}\nvar strnum;\nvar hasRequiredStrnum;\nfunction requireStrnum() {\n if (hasRequiredStrnum) return strnum;\n hasRequiredStrnum = 1;\n const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\n const numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n if (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n }\n if (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n }\n const consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n };\n function toNumber(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n }\n function trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n }\n strnum = toNumber;\n return strnum;\n}\nvar ignoreAttributes;\nvar hasRequiredIgnoreAttributes;\nfunction requireIgnoreAttributes() {\n if (hasRequiredIgnoreAttributes) return ignoreAttributes;\n hasRequiredIgnoreAttributes = 1;\n function getIgnoreAttributesFn(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n }\n ignoreAttributes = getIgnoreAttributesFn;\n return ignoreAttributes;\n}\nvar OrderedObjParser_1;\nvar hasRequiredOrderedObjParser;\nfunction requireOrderedObjParser() {\n if (hasRequiredOrderedObjParser) return OrderedObjParser_1;\n hasRequiredOrderedObjParser = 1;\n const util2 = requireUtil();\n const xmlNode2 = requireXmlNode();\n const readDocType = requireDocTypeReader();\n const toNumber = requireStrnum();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n }\n }\n function addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n }\n function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val);\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n }\n function resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n }\n const attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\n function buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util2.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n }\n const parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode2(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode2(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == void 0) val = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode2(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n };\n function addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n }\n const replaceEntitiesValue = function(val) {\n if (this.options.processEntities) {\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n val = val.replace(entity.regx, entity.val);\n }\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n };\n function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n }\n function isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n }\n function tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n }\n function findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n }\n function readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n }\n function readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n }\n function parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === \"string\") {\n const newval = val.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val, options);\n } else {\n if (util2.isExist(val)) {\n return val;\n } else {\n return \"\";\n }\n }\n }\n OrderedObjParser_1 = OrderedObjParser;\n return OrderedObjParser_1;\n}\nvar node2json = {};\nvar hasRequiredNode2json;\nfunction requireNode2json() {\n if (hasRequiredNode2json) return node2json;\n hasRequiredNode2json = 1;\n function prettify(node, options) {\n return compress(node, options);\n }\n function compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n }\n function assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n }\n function isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n }\n node2json.prettify = prettify;\n return node2json;\n}\nvar XMLParser_1;\nvar hasRequiredXMLParser;\nfunction requireXMLParser() {\n if (hasRequiredXMLParser) return XMLParser_1;\n hasRequiredXMLParser = 1;\n const { buildOptions } = requireOptionsBuilder();\n const OrderedObjParser = requireOrderedObjParser();\n const { prettify } = requireNode2json();\n const validator2 = requireValidator();\n class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator2.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n }\n XMLParser_1 = XMLParser;\n return XMLParser_1;\n}\nvar orderedJs2Xml;\nvar hasRequiredOrderedJs2Xml;\nfunction requireOrderedJs2Xml() {\n if (hasRequiredOrderedJs2Xml) return orderedJs2Xml;\n hasRequiredOrderedJs2Xml = 1;\n const EOL = \"\\n\";\n function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n }\n function arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n }\n function attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n }\n function isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n }\n function replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n }\n orderedJs2Xml = toXml;\n return orderedJs2Xml;\n}\nvar json2xml;\nvar hasRequiredJson2xml;\nfunction requireJson2xml() {\n if (hasRequiredJson2xml) return json2xml;\n hasRequiredJson2xml = 1;\n const buildFromOrderedJs = requireOrderedJs2Xml();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n const defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n };\n function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n }\n Builder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n };\n Builder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val += \"\";\n } else if (key[0] === \"?\") {\n val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val };\n };\n Builder.prototype.buildAttrPairStr = function(attrName, val) {\n val = this.options.attributeValueProcessor(attrName, \"\" + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val + '\"';\n };\n function processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n }\n Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val + this.indentate(level) + tagEndExp;\n }\n }\n };\n Builder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`;\n }\n return closeTag;\n };\n Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \"</\" + key + this.tagEndChar;\n }\n }\n };\n Builder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n };\n function indentate(level) {\n return this.options.indentBy.repeat(level);\n }\n function isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n }\n json2xml = Builder;\n return json2xml;\n}\nvar fxp;\nvar hasRequiredFxp;\nfunction requireFxp() {\n if (hasRequiredFxp) return fxp;\n hasRequiredFxp = 1;\n const validator2 = requireValidator();\n const XMLParser = requireXMLParser();\n const XMLBuilder = requireJson2xml();\n fxp = {\n XMLParser,\n XMLValidator: validator2,\n XMLBuilder\n };\n return fxp;\n}\nvar fxpExports = requireFxp();\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxpExports.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxpExports.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","// 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=\" + {\"358\":\"cb526b6422ca61c923fd\",\"2441\":\"44b85e4901c485417f88\",\"5266\":\"5e74043eef0f3a196f22\",\"5862\":\"142cd48ca8ec32e57725\",\"6146\":\"5f2015343db7411125d5\",\"8289\":\"8f098190dce9305dab1e\",\"8320\":\"87233c1e751a74de3fe2\"}[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 = 5102;","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\t5102: 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__(51528)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","client","getClient","getLoggerBuilder","setApp","detectUser","build","resultToNode","stat","davResultToNode","getContents","path","arguments","length","undefined","join","davRootPath","controller","AbortController","propfindPayload","davGetDefaultPropfind","CancelablePromise","async","resolve","reject","onCancel","abort","contentsResponse","getDirectoryContents","details","data","includeSelf","signal","root","contents","slice","filename","logger","debug","Error","folder","map","result","error","basename","filter","Boolean","view","loadState","sharingToken","Vue","use","Router","originalPush","prototype","push","to","onComplete","onAbort","call","this","catch","err","mode","base","generateUrl","linkActiveClass","routes","redirect","name","params","token","props","stringifyQuery","query","queryString","stringify","replace","foldername","FilesViewFileDropEmptyContent","fileDropEmptyContentInstance","View","id","t","caption","icon","svgCloudUpload","order","emptyView","default","component","extend","$destroy","propsData","$mount","div","Folder","source","davRemoteURL","owner","permissions","Permission","CREATE","getNavigation","register","registerFileDropView","emptyTitle","emptyCaption","LinkSvg","registerPublicShareView","node","READ","attributes","note","e","registerPublicFileShareView","navigation","setActive","views","find","_ref","window","OCP","Files","constructor","router","currentRoute","_router","goTo","goToRoute","fileId","fileid","String","openfile","subscribe","loadShareConfig","_ref2","unsubscribe","gridViewAttribute","JSON","parse","_ref3","scope","key","emit","value","NewMenuEntryCategory","NewMenuEntryCategory2","NewFileMenu","_entries","registerEntry","entry","validateEntry","category","unregisterEntry","entryIndex","getEntryIndex","splice","warn","entries","getEntries","context","enabled","findIndex","displayName","iconSvgInline","iconClass","handler","InvalidFilenameErrorReason","InvalidFilenameErrorReason2","InvalidFilenameError","options","super","reason","segment","cause","validateFilename","capabilities","files","forbiddenCharacters","forbidden_filename_characters","_oc_config","forbidden_filenames_characters","character","includes","toLocaleLowerCase","forbidden_filenames","endOfBasename","indexOf","basename2","substring","forbidden_filename_basenames","forbiddenFilenameExtensions","forbidden_filename_extensions","extension","endsWith","getUniqueName","otherNames","opts","suffix","n2","ignoreFileExtension","newName","i2","ext","extname","humanList","humanListBinary","formatFileSize","size","skipSmallSizes","binaryPrefixes","base1000","Number","Math","floor","log","min","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","Date","toISOString","sortNodes","nodes","sortingOptions","sortingMode","sortingOrder","collection","identifiers2","orders","sorting","_","index","collator","Intl","Collator","numeric","usage","sort","a2","b2","identifier","compare","orderBy","sortFavoritesFirst","v","favorite","sortFoldersFirst","type","displayname","lastIndexOf","Navigation","_views","_currentView","search","dispatchTypedEvent","CustomEvent","remove","event","detail","active","_nc_navigation","Column","_column","column","isValidColumn","title","render","summary","hasRequiredUtil","hasRequiredValidator","validator","util","requireUtil","exports","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","Object","keys","merge","target","arrayMode","len","getValue","isName","string","exec","getAllMatches","regex","matches","match","allmatches","startIndex","lastIndex","requireValidator","util2","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","start","tagname","substr","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","assign","tags","tagFound","reachedRoot","tagStartPos","closingTag","tagName","trim","msg","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","pop","openPos","col","afterAmp","validateAmpersand","t2","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","hasOwnProperty","re2","validateNumberAmpersand","count","message","lineNumber","lines","split","hasRequiredOptionsBuilder","xmlNode","hasRequiredXmlNode","DocTypeReader","hasRequiredDocTypeReader","strnum","hasRequiredStrnum","ignoreAttributes","hasRequiredIgnoreAttributes","OrderedObjParser_1","hasRequiredOrderedObjParser","OptionsBuilder","requireIgnoreAttributes","ignoreAttributes2","Array","isArray","pattern","test","hasRequiredNode2json","XMLParser_1","hasRequiredXMLParser","orderedJs2Xml","hasRequiredOrderedJs2Xml","json2xml","hasRequiredJson2xml","fxp","hasRequiredFxp","node2json","requireNode2json","compress","arr","jPath","text","compressedObj","tagObj","property","propName","newJpath","textNodeName","val","isLeaf","isLeafTag","assignAttributes","alwaysCreateTextNode","attrMap","jpath","atrrName","propCount","prettify","requireXMLParser","buildOptions","preserveOrder","attributeNamePrefix","attributesGroupName","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","attrs","requireOptionsBuilder","OrderedObjParser","xmlNode2","child","add","addChild","readDocType","readEntityExp","entityName","isEntity","isElement","isAttlist","isNotation","validateEntityName","entities","hasBody","comment","exp","regx","i","requireDocTypeReader","toNumber","hexRegex","numRegex","parseInt","consider","decimalPoint","str","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","num","requireStrnum","getIgnoreAttributesFn","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","fromCharCode","requireOrderedObjParser","validator2","validationOption","toString","orderedObjParser","orderedResult","addEntity","requireOrderedJs2Xml","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","attr","attrVal","suppressBooleanAttributes","textValue","jArray","format","fxpExports","XMLParser","XMLBuilder","buildFromOrderedJs","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","concat","buildTextValNode","buildObjectNode","repeat","startsWith","jObj","arrayNodeName","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","item","Ks","L","closeTag","tagEndExp","piClosingChar","requireJson2xml","XMLValidator","requireFxp","_view","isValidView","columns","parent","sticky","expanded","defaultSortKey","loadChildViews","TypeError","jsonObject","parser","some","x","toLowerCase","isSvg","forEach","debug_1","hasRequiredDebug","constants","hasRequiredConstants","requireDebug","process","env","NODE_DEBUG","args","console","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","requireSemver","safeRe","module","src","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","version","includePrerelease","m2","LOOSE","FULL","raw","major","minor","patch","prerelease","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","isNaN","throwErrors","er","requireParse","requireValid","requireMajor","getNewFileMenuEntries","_nc_newfilemenu","localeCompare","sensitivity","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","prop","l","url","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","location","currentScript","toUpperCase","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"files_sharing-init-public.js?v=11dfb5cfe255684a5a5f","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_views/publicFileDrop.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/router/index.ts","webpack:///nextcloud/apps/files_sharing/src/init-public.ts","webpack:///nextcloud/apps/files_sharing/src/files_views/publicShare.ts","webpack:///nextcloud/apps/files_sharing/src/files_views/publicFileShare.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","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};","import { Folder, Permission, View, davRemoteURL, davRootPath, getNavigation } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport svgCloudUpload from '@mdi/svg/svg/cloud-upload.svg?raw';\nimport Vue from 'vue';\nexport default () => {\n const foldername = loadState('files_sharing', 'filename');\n let FilesViewFileDropEmptyContent;\n let fileDropEmptyContentInstance;\n const view = new View({\n id: 'public-file-drop',\n name: t('files_sharing', 'File drop'),\n caption: t('files_sharing', 'Upload files to {foldername}', { foldername }),\n icon: svgCloudUpload,\n order: 1,\n emptyView: async (div) => {\n if (FilesViewFileDropEmptyContent === undefined) {\n const { default: component } = await import('../views/FilesViewFileDropEmptyContent.vue');\n FilesViewFileDropEmptyContent = Vue.extend(component);\n }\n if (fileDropEmptyContentInstance) {\n fileDropEmptyContentInstance.$destroy();\n }\n fileDropEmptyContentInstance = new FilesViewFileDropEmptyContent({\n propsData: {\n foldername,\n },\n });\n fileDropEmptyContentInstance.$mount(div);\n },\n getContents: async () => {\n return {\n contents: [],\n // Fake a writeonly folder as root\n folder: new Folder({\n id: 0,\n source: `${davRemoteURL}${davRootPath}`,\n root: davRootPath,\n owner: null,\n permissions: Permission.CREATE,\n }),\n };\n },\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","import { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\nexport const fetchNode = async (path) => {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n};\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import { davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files';\nimport { CancelablePromise } from 'cancelable-promise';\nimport { join } from 'path';\nimport { client } from './WebdavClient.ts';\nimport logger from '../logger.ts';\n/**\n * Slim wrapper over `@nextcloud/files` `davResultToNode` to allow using the function with `Array.map`\n * @param stat The result returned by the webdav library\n */\nexport const resultToNode = (stat) => davResultToNode(stat);\nexport const getContents = (path = '/') => {\n path = join(davRootPath, path);\n const controller = new AbortController();\n const propfindPayload = davGetDefaultPropfind();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: controller.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root.filename !== path && `${root.filename}/` !== path) {\n logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n throw new Error('Root node does not match requested path');\n }\n resolve({\n folder: resultToNode(root),\n contents: contents.map((result) => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n });\n }\n catch (error) {\n reject(error);\n }\n });\n};\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","import { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport queryString from 'query-string';\nimport Router, { isNavigationFailure, NavigationFailureType } from 'vue-router';\nimport Vue from 'vue';\nimport logger from '../services/logger';\nconst view = loadState('files_sharing', 'view');\nconst sharingToken = loadState('files_sharing', 'sharingToken');\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = (function (...args) {\n if (args.length > 1) {\n return originalPush.call(this, ...args);\n }\n return originalPush.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\nconst originalReplace = Router.prototype.replace;\nRouter.prototype.replace = (function (...args) {\n if (args.length > 1) {\n return originalReplace.call(this, ...args);\n }\n return originalReplace.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\n/**\n * Ignore duplicated-navigation error but forward real exceptions\n * @param error The thrown error\n */\nfunction ignoreDuplicateNavigation(error) {\n if (isNavigationFailure(error, NavigationFailureType.duplicated)) {\n logger.debug('Ignoring duplicated navigation from vue-router', { error });\n }\n else {\n throw error;\n }\n}\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl('/s'),\n linkActiveClass: 'active',\n routes: [\n {\n path: '/',\n // Pretending we're using the default view\n redirect: { name: 'filelist', params: { view, token: sharingToken } },\n },\n {\n path: '/:token',\n name: 'filelist',\n props: true,\n },\n ],\n // Custom stringifyQuery to prevent encoding of slashes in the url\n stringifyQuery(query) {\n const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n return result ? ('?' + result) : '';\n },\n});\nexport default router;\n","import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport registerFileDropView from './files_views/publicFileDrop.ts';\nimport registerPublicShareView from './files_views/publicShare.ts';\nimport registerPublicFileShareView from './files_views/publicFileShare.ts';\nimport RouterService from '../../files/src/services/RouterService.ts';\nimport router from './router/index.ts';\nimport logger from './services/logger.ts';\nregisterFileDropView();\nregisterPublicShareView();\nregisterPublicFileShareView();\n// Get the current view from state and set it active\nconst view = loadState('files_sharing', 'view');\nconst navigation = getNavigation();\nnavigation.setActive(navigation.views.find(({ id }) => id === view) ?? null);\n// Force our own router\nwindow.OCP.Files = window.OCP.Files ?? {};\nwindow.OCP.Files.Router = new RouterService(router);\n// If this is a single file share, so set the fileid as active in the URL\nconst fileId = loadState('files_sharing', 'fileId', null);\nconst token = loadState('files_sharing', 'sharingToken');\nif (fileId !== null) {\n window.OCP.Files.Router.goToRoute('filelist', { ...window.OCP.Files.Router.params, token, fileid: String(fileId) }, { ...window.OCP.Files.Router.query, openfile: 'true' });\n}\n// When the file list is loaded we need to apply the \"userconfig\" setup on the share\nsubscribe('files:list:updated', loadShareConfig);\n/**\n * Event handler to load the view config for the current share.\n * This is done on the `files:list:updated` event to ensure the list and especially the config store was correctly initialized.\n *\n * @param context The event context\n * @param context.folder The current folder\n */\nfunction loadShareConfig({ folder }) {\n // Only setup config once\n unsubscribe('files:list:updated', loadShareConfig);\n // Share attributes (the same) are set on all folders of a share\n if (folder.attributes['share-attributes']) {\n const shareAttributes = JSON.parse(folder.attributes['share-attributes'] || '[]');\n const gridViewAttribute = shareAttributes.find(({ scope, key }) => scope === 'config' && key === 'grid_view');\n if (gridViewAttribute !== undefined) {\n logger.debug('Loading share attributes', { gridViewAttribute });\n emit('files:config:updated', { key: 'grid_view', value: gridViewAttribute.value === true });\n }\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation } from '@nextcloud/files';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { getContents } from '../../../files/src/services/Files';\nexport default () => {\n const view = new View({\n id: 'public-share',\n name: t('files_sharing', 'Public share'),\n caption: t('files_sharing', 'Publicly shared files.'),\n emptyTitle: t('files_sharing', 'No files'),\n emptyCaption: t('files_sharing', 'Files and folders shared with you will show up here'),\n icon: LinkSvg,\n order: 1,\n getContents,\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","import { Folder, Permission, View, davGetDefaultPropfind, davRemoteURL, davResultToNode, davRootPath, getNavigation } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { CancelablePromise } from 'cancelable-promise';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { client } from '../../../files/src/services/WebdavClient';\nimport logger from '../services/logger';\nexport default () => {\n const view = new View({\n id: 'public-file-share',\n name: t('files_sharing', 'Public file share'),\n caption: t('files_sharing', 'Publicly shared file.'),\n emptyTitle: t('files_sharing', 'No file'),\n emptyCaption: t('files_sharing', 'The file shared with you will show up here'),\n icon: LinkSvg,\n order: 1,\n getContents: () => {\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n try {\n const node = await client.stat(davRootPath, {\n data: davGetDefaultPropfind(),\n details: true,\n signal: abort.signal,\n });\n resolve({\n // We only have one file as the content\n contents: [davResultToNode(node.data)],\n // Fake a readonly folder as root\n folder: new Folder({\n id: 0,\n source: `${davRemoteURL}${davRootPath}`,\n root: davRootPath,\n owner: null,\n permissions: Permission.READ,\n attributes: {\n // Ensure the share note is set on the root\n note: node.data.props?.note,\n },\n }),\n });\n }\n catch (e) {\n logger.error(e);\n reject(e);\n }\n });\n },\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","export default class RouterService {\n // typescript compiles this to `#router` to make it private even in JS,\n // but in TS it needs to be called without the visibility specifier\n router;\n constructor(router) {\n this.router = router;\n }\n get name() {\n return this.router.currentRoute.name;\n }\n get query() {\n return this.router.currentRoute.query || {};\n }\n get params() {\n return this.router.currentRoute.params || {};\n }\n /**\n * This is a protected getter only for internal use\n * @private\n */\n get _router() {\n return this.router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this.router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name the route name\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n return this.router.push({\n name,\n query,\n params,\n replace,\n });\n }\n}\n","import { o as logger } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator = {};\nvar util = {};\nvar hasRequiredUtil;\nfunction requireUtil() {\n if (hasRequiredUtil) return util;\n hasRequiredUtil = 1;\n (function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n })(util);\n return util;\n}\nvar hasRequiredValidator;\nfunction requireValidator() {\n if (hasRequiredValidator) return validator;\n hasRequiredValidator = 1;\n const util2 = requireUtil();\n const defaultOptions = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n };\n validator.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n };\n function isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n }\n function readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n }\n function readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n }\n const doubleQuote = '\"';\n const singleQuote = \"'\";\n function readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n }\n const validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\n function validateAttributeString(attrStr, options) {\n const matches = util2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n }\n function validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n }\n function validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n }\n function getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n }\n function validateAttrName(attrName) {\n return util2.isName(attrName);\n }\n function validateTagName(tagname) {\n return util2.isName(tagname);\n }\n function getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n }\n function getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n }\n return validator;\n}\nvar OptionsBuilder = {};\nvar hasRequiredOptionsBuilder;\nfunction requireOptionsBuilder() {\n if (hasRequiredOptionsBuilder) return OptionsBuilder;\n hasRequiredOptionsBuilder = 1;\n const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n };\n const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n };\n OptionsBuilder.buildOptions = buildOptions;\n OptionsBuilder.defaultOptions = defaultOptions;\n return OptionsBuilder;\n}\nvar xmlNode;\nvar hasRequiredXmlNode;\nfunction requireXmlNode() {\n if (hasRequiredXmlNode) return xmlNode;\n hasRequiredXmlNode = 1;\n class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n }\n xmlNode = XmlNode;\n return xmlNode;\n}\nvar DocTypeReader;\nvar hasRequiredDocTypeReader;\nfunction requireDocTypeReader() {\n if (hasRequiredDocTypeReader) return DocTypeReader;\n hasRequiredDocTypeReader = 1;\n const util2 = requireUtil();\n function readDocType(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n let entityName, val;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else comment = true;\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n }\n function readEntityExp(xmlData, i2) {\n let entityName = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName += xmlData[i2];\n }\n entityName = entityName.trim();\n if (entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val += xmlData[i2];\n }\n return [entityName, val, i2];\n }\n function isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n }\n function isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n }\n function validateEntityName(name) {\n if (util2.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n }\n DocTypeReader = readDocType;\n return DocTypeReader;\n}\nvar strnum;\nvar hasRequiredStrnum;\nfunction requireStrnum() {\n if (hasRequiredStrnum) return strnum;\n hasRequiredStrnum = 1;\n const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\n const numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n if (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n }\n if (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n }\n const consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n };\n function toNumber(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n }\n function trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n }\n strnum = toNumber;\n return strnum;\n}\nvar ignoreAttributes;\nvar hasRequiredIgnoreAttributes;\nfunction requireIgnoreAttributes() {\n if (hasRequiredIgnoreAttributes) return ignoreAttributes;\n hasRequiredIgnoreAttributes = 1;\n function getIgnoreAttributesFn(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n }\n ignoreAttributes = getIgnoreAttributesFn;\n return ignoreAttributes;\n}\nvar OrderedObjParser_1;\nvar hasRequiredOrderedObjParser;\nfunction requireOrderedObjParser() {\n if (hasRequiredOrderedObjParser) return OrderedObjParser_1;\n hasRequiredOrderedObjParser = 1;\n const util2 = requireUtil();\n const xmlNode2 = requireXmlNode();\n const readDocType = requireDocTypeReader();\n const toNumber = requireStrnum();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n }\n }\n function addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n }\n function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val);\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n }\n function resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n }\n const attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\n function buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util2.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n }\n const parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode2(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode2(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == void 0) val = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode2(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n };\n function addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n }\n const replaceEntitiesValue = function(val) {\n if (this.options.processEntities) {\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n val = val.replace(entity.regx, entity.val);\n }\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n };\n function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n }\n function isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n }\n function tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n }\n function findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n }\n function readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n }\n function readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n }\n function parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === \"string\") {\n const newval = val.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val, options);\n } else {\n if (util2.isExist(val)) {\n return val;\n } else {\n return \"\";\n }\n }\n }\n OrderedObjParser_1 = OrderedObjParser;\n return OrderedObjParser_1;\n}\nvar node2json = {};\nvar hasRequiredNode2json;\nfunction requireNode2json() {\n if (hasRequiredNode2json) return node2json;\n hasRequiredNode2json = 1;\n function prettify(node, options) {\n return compress(node, options);\n }\n function compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n }\n function assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n }\n function isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n }\n node2json.prettify = prettify;\n return node2json;\n}\nvar XMLParser_1;\nvar hasRequiredXMLParser;\nfunction requireXMLParser() {\n if (hasRequiredXMLParser) return XMLParser_1;\n hasRequiredXMLParser = 1;\n const { buildOptions } = requireOptionsBuilder();\n const OrderedObjParser = requireOrderedObjParser();\n const { prettify } = requireNode2json();\n const validator2 = requireValidator();\n class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator2.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n }\n XMLParser_1 = XMLParser;\n return XMLParser_1;\n}\nvar orderedJs2Xml;\nvar hasRequiredOrderedJs2Xml;\nfunction requireOrderedJs2Xml() {\n if (hasRequiredOrderedJs2Xml) return orderedJs2Xml;\n hasRequiredOrderedJs2Xml = 1;\n const EOL = \"\\n\";\n function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n }\n function arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n }\n function attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n }\n function isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n }\n function replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n }\n orderedJs2Xml = toXml;\n return orderedJs2Xml;\n}\nvar json2xml;\nvar hasRequiredJson2xml;\nfunction requireJson2xml() {\n if (hasRequiredJson2xml) return json2xml;\n hasRequiredJson2xml = 1;\n const buildFromOrderedJs = requireOrderedJs2Xml();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n const defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n };\n function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n }\n Builder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n };\n Builder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val += \"\";\n } else if (key[0] === \"?\") {\n val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val };\n };\n Builder.prototype.buildAttrPairStr = function(attrName, val) {\n val = this.options.attributeValueProcessor(attrName, \"\" + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val + '\"';\n };\n function processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n }\n Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val + this.indentate(level) + tagEndExp;\n }\n }\n };\n Builder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`;\n }\n return closeTag;\n };\n Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \"</\" + key + this.tagEndChar;\n }\n }\n };\n Builder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n };\n function indentate(level) {\n return this.options.indentBy.repeat(level);\n }\n function isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n }\n json2xml = Builder;\n return json2xml;\n}\nvar fxp;\nvar hasRequiredFxp;\nfunction requireFxp() {\n if (hasRequiredFxp) return fxp;\n hasRequiredFxp = 1;\n const validator2 = requireValidator();\n const XMLParser = requireXMLParser();\n const XMLBuilder = requireJson2xml();\n fxp = {\n XMLParser,\n XMLValidator: validator2,\n XMLBuilder\n };\n return fxp;\n}\nvar fxpExports = requireFxp();\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxpExports.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxpExports.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","// 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=\" + {\"358\":\"cb526b6422ca61c923fd\",\"2441\":\"44b85e4901c485417f88\",\"5266\":\"5e74043eef0f3a196f22\",\"5862\":\"142cd48ca8ec32e57725\",\"6146\":\"5f2015343db7411125d5\",\"8289\":\"8f098190dce9305dab1e\",\"8320\":\"87233c1e751a74de3fe2\"}[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 = 5102;","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\t5102: 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__(51528)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","client","getClient","getLoggerBuilder","setApp","detectUser","build","resultToNode","stat","davResultToNode","getContents","path","arguments","length","undefined","join","davRootPath","controller","AbortController","propfindPayload","davGetDefaultPropfind","CancelablePromise","async","resolve","reject","onCancel","abort","contentsResponse","getDirectoryContents","details","data","includeSelf","signal","root","contents","slice","filename","logger","debug","Error","folder","map","result","error","basename","filter","Boolean","view","loadState","sharingToken","Vue","use","Router","originalPush","prototype","push","_len","args","Array","_key","call","this","catch","ignoreDuplicateNavigation","originalReplace","replace","isNavigationFailure","NavigationFailureType","duplicated","_len2","_key2","mode","base","generateUrl","linkActiveClass","routes","redirect","name","params","token","props","stringifyQuery","query","queryString","stringify","foldername","FilesViewFileDropEmptyContent","fileDropEmptyContentInstance","View","id","t","caption","icon","svgCloudUpload","order","emptyView","default","component","extend","$destroy","propsData","$mount","div","Folder","source","davRemoteURL","owner","permissions","Permission","CREATE","getNavigation","register","registerFileDropView","emptyTitle","emptyCaption","LinkSvg","registerPublicShareView","node","READ","attributes","note","e","registerPublicFileShareView","navigation","setActive","views","find","_ref","window","OCP","Files","constructor","router","currentRoute","_router","goTo","goToRoute","fileId","fileid","String","openfile","subscribe","loadShareConfig","_ref2","unsubscribe","gridViewAttribute","JSON","parse","_ref3","scope","key","emit","value","NewMenuEntryCategory","NewMenuEntryCategory2","NewFileMenu","_entries","registerEntry","entry","validateEntry","category","unregisterEntry","entryIndex","getEntryIndex","splice","warn","entries","getEntries","context","enabled","findIndex","displayName","iconSvgInline","iconClass","handler","InvalidFilenameErrorReason","InvalidFilenameErrorReason2","InvalidFilenameError","options","super","reason","segment","cause","validateFilename","capabilities","files","forbiddenCharacters","forbidden_filename_characters","_oc_config","forbidden_filenames_characters","character","includes","toLocaleLowerCase","forbidden_filenames","endOfBasename","indexOf","basename2","substring","forbidden_filename_basenames","forbiddenFilenameExtensions","forbidden_filename_extensions","extension","endsWith","getUniqueName","otherNames","opts","suffix","n2","ignoreFileExtension","newName","i2","ext","extname","humanList","humanListBinary","formatFileSize","size","skipSmallSizes","binaryPrefixes","base1000","Number","Math","floor","log","min","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","Date","toISOString","sortNodes","nodes","sortingOptions","sortingMode","sortingOrder","collection","identifiers2","orders","sorting","_","index","collator","Intl","Collator","numeric","usage","sort","a2","b2","identifier","compare","orderBy","sortFavoritesFirst","v","favorite","sortFoldersFirst","type","displayname","lastIndexOf","Navigation","_views","_currentView","search","dispatchTypedEvent","CustomEvent","remove","event","detail","active","_nc_navigation","Column","_column","column","isValidColumn","title","render","summary","hasRequiredUtil","hasRequiredValidator","validator","util","requireUtil","exports","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","Object","keys","merge","target","arrayMode","len","getValue","isName","string","exec","getAllMatches","regex","matches","match","allmatches","startIndex","lastIndex","requireValidator","util2","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","start","tagname","substr","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","assign","tags","tagFound","reachedRoot","err","tagStartPos","closingTag","tagName","trim","msg","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","pop","openPos","col","afterAmp","validateAmpersand","t2","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","hasOwnProperty","re2","validateNumberAmpersand","count","message","lineNumber","lines","split","hasRequiredOptionsBuilder","xmlNode","hasRequiredXmlNode","DocTypeReader","hasRequiredDocTypeReader","strnum","hasRequiredStrnum","ignoreAttributes","hasRequiredIgnoreAttributes","OrderedObjParser_1","hasRequiredOrderedObjParser","OptionsBuilder","requireIgnoreAttributes","ignoreAttributes2","isArray","pattern","test","hasRequiredNode2json","XMLParser_1","hasRequiredXMLParser","orderedJs2Xml","hasRequiredOrderedJs2Xml","json2xml","hasRequiredJson2xml","fxp","hasRequiredFxp","node2json","requireNode2json","compress","arr","jPath","text","compressedObj","tagObj","property","propName","newJpath","textNodeName","val","isLeaf","isLeafTag","assignAttributes","alwaysCreateTextNode","attrMap","jpath","atrrName","propCount","prettify","requireXMLParser","buildOptions","preserveOrder","attributeNamePrefix","attributesGroupName","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","attrs","requireOptionsBuilder","OrderedObjParser","xmlNode2","child","add","addChild","readDocType","readEntityExp","entityName","isEntity","isElement","isAttlist","isNotation","validateEntityName","entities","hasBody","comment","exp","regx","i","requireDocTypeReader","toNumber","hexRegex","numRegex","parseInt","consider","decimalPoint","str","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","num","requireStrnum","getIgnoreAttributesFn","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","fromCharCode","requireOrderedObjParser","validator2","validationOption","toString","orderedObjParser","orderedResult","addEntity","requireOrderedJs2Xml","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","attr","attrVal","suppressBooleanAttributes","textValue","jArray","format","fxpExports","XMLParser","XMLBuilder","buildFromOrderedJs","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","concat","buildTextValNode","buildObjectNode","repeat","startsWith","jObj","arrayNodeName","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","item","Ks","L","closeTag","tagEndExp","piClosingChar","requireJson2xml","XMLValidator","requireFxp","_view","isValidView","columns","parent","sticky","expanded","defaultSortKey","loadChildViews","TypeError","jsonObject","parser","some","x","toLowerCase","isSvg","forEach","debug_1","hasRequiredDebug","constants","hasRequiredConstants","requireDebug","process","env","NODE_DEBUG","console","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","requireSemver","safeRe","module","src","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","version","includePrerelease","m2","LOOSE","FULL","raw","major","minor","patch","prerelease","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","isNaN","throwErrors","er","requireParse","requireValid","requireMajor","getNewFileMenuEntries","_nc_newfilemenu","localeCompare","sensitivity","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","prop","l","url","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","location","currentScript","toUpperCase","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js index 9e9dd6d2861..ba26fef8f93 100644 --- a/lib/l10n/cs.js +++ b/lib/l10n/cs.js @@ -38,6 +38,7 @@ OC.L10N.register( "Server version %s or higher is required." : "Je potřeba verze serveru %s nebo novější.", "Server version %s or lower is required." : "Je potřeba verze serveru %s nebo starší.", "Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "Aby mohl přistupovat k tomuto nastavení je třeba, aby přihlášený účet byl správce, dílčí správce nebo obdržel speciální oprávnění", + "Your current IP address doesn't allow you to perform admin actions" : "Pro IP adresu, ze které přistupujete, není umožněno provádět úkony správy", "Logged in account must be an admin or sub admin" : "Je třeba, aby přihlášený účet byl správcem či správcem pro dílčí oblast", "Logged in account must be an admin" : "Je třeba, aby přihlášený účet byl správcem", "Wiping of device %s has started" : "Vymazávání ze zařízení %s zahájeno", @@ -155,6 +156,7 @@ OC.L10N.register( "Oracle connection could not be established" : "Spojení s Oracle nemohlo být navázáno", "Oracle Login and/or password not valid" : "Neplatné přihlašovací jméno a/nebo heslo do Oracle", "PostgreSQL Login and/or password not valid" : "Neplatné přihlašovací jméno a/nebo heslo do PostgreSQL", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "macOS není podporován a %s nebude na této platformě správně fungovat. Používejte pouze na vlastní nebezpečí!", "For the best results, please consider using a GNU/Linux server instead." : "Místo toho zvažte pro nejlepší funkčnost použití GNU/Linux serveru.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Zdá se, že tato instance %s je provozována v 32-bitovém PHP prostředí a v php.ini je nastavena volba open_basedir. Toto povede k problémům se soubory většími než 4 GB a silně není doporučováno.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Odstraňte z php.ini nastavení volby open_basedir nebo přejděte na 64-bitové PHP.", diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json index c213cc78a18..caa212f1fa5 100644 --- a/lib/l10n/cs.json +++ b/lib/l10n/cs.json @@ -36,6 +36,7 @@ "Server version %s or higher is required." : "Je potřeba verze serveru %s nebo novější.", "Server version %s or lower is required." : "Je potřeba verze serveru %s nebo starší.", "Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "Aby mohl přistupovat k tomuto nastavení je třeba, aby přihlášený účet byl správce, dílčí správce nebo obdržel speciální oprávnění", + "Your current IP address doesn't allow you to perform admin actions" : "Pro IP adresu, ze které přistupujete, není umožněno provádět úkony správy", "Logged in account must be an admin or sub admin" : "Je třeba, aby přihlášený účet byl správcem či správcem pro dílčí oblast", "Logged in account must be an admin" : "Je třeba, aby přihlášený účet byl správcem", "Wiping of device %s has started" : "Vymazávání ze zařízení %s zahájeno", @@ -153,6 +154,7 @@ "Oracle connection could not be established" : "Spojení s Oracle nemohlo být navázáno", "Oracle Login and/or password not valid" : "Neplatné přihlašovací jméno a/nebo heslo do Oracle", "PostgreSQL Login and/or password not valid" : "Neplatné přihlašovací jméno a/nebo heslo do PostgreSQL", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "macOS není podporován a %s nebude na této platformě správně fungovat. Používejte pouze na vlastní nebezpečí!", "For the best results, please consider using a GNU/Linux server instead." : "Místo toho zvažte pro nejlepší funkčnost použití GNU/Linux serveru.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Zdá se, že tato instance %s je provozována v 32-bitovém PHP prostředí a v php.ini je nastavena volba open_basedir. Toto povede k problémům se soubory většími než 4 GB a silně není doporučováno.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Odstraňte z php.ini nastavení volby open_basedir nebo přejděte na 64-bitové PHP.", diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js index 35a3da15a0c..a54358dcf1e 100644 --- a/lib/l10n/hu.js +++ b/lib/l10n/hu.js @@ -135,6 +135,7 @@ OC.L10N.register( "Expiration date is in the past" : "A lejárati dátum már elmúlt", "_Cannot set expiration date more than %n day in the future_::_Cannot set expiration date more than %n days in the future_" : ["Nem állítható be %n napnál távolabbi lejárati dátum","Nem állítható be %n napnál távolabbi lejárati dátum"], "Sharing is only allowed with group members" : "A megosztás csak a csoport tagjaival engedélyezett", + "Sharing %s failed, because this item is already shared with the account %s" : "A(z) %s megosztása sikertelen, mert már meg van osztva a(z) %s fiókkal", "The requested share does not exist anymore" : "A kért megosztás már nem létezik", "The requested share comes from a disabled user" : "A kért megosztás letiltott felhasználótól származik", "The user was not created because the user limit has been reached. Check your notifications to learn more." : "A felhasználó nem jött létre, mert elérte a felhasználókorlátot. Nézze meg az értesítéseit, hogy többet tudjon meg.", diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json index e2636612f13..267e472e282 100644 --- a/lib/l10n/hu.json +++ b/lib/l10n/hu.json @@ -133,6 +133,7 @@ "Expiration date is in the past" : "A lejárati dátum már elmúlt", "_Cannot set expiration date more than %n day in the future_::_Cannot set expiration date more than %n days in the future_" : ["Nem állítható be %n napnál távolabbi lejárati dátum","Nem állítható be %n napnál távolabbi lejárati dátum"], "Sharing is only allowed with group members" : "A megosztás csak a csoport tagjaival engedélyezett", + "Sharing %s failed, because this item is already shared with the account %s" : "A(z) %s megosztása sikertelen, mert már meg van osztva a(z) %s fiókkal", "The requested share does not exist anymore" : "A kért megosztás már nem létezik", "The requested share comes from a disabled user" : "A kért megosztás letiltott felhasználótól származik", "The user was not created because the user limit has been reached. Check your notifications to learn more." : "A felhasználó nem jött létre, mert elérte a felhasználókorlátot. Nézze meg az értesítéseit, hogy többet tudjon meg.", diff --git a/lib/l10n/sr.js b/lib/l10n/sr.js index 3a5f6be5ef0..98cc8d4a29b 100644 --- a/lib/l10n/sr.js +++ b/lib/l10n/sr.js @@ -38,6 +38,7 @@ OC.L10N.register( "Server version %s or higher is required." : "Потребна је верзија сервера %s или виша.", "Server version %s or lower is required." : "Потребна је верзија сервера %s или нижа.", "Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "Пријављени налог мора бити админ, подадмин или мора да поседује специјално право да приступи овом подешавању", + "Your current IP address doesn't allow you to perform admin actions" : "Ваша тренутна IP адреса не дозвољава да извршавате админ радње", "Logged in account must be an admin or sub admin" : "Пријављени налог мора бити админ или подадмин", "Logged in account must be an admin" : "Пријављени налог мора бити админ", "Wiping of device %s has started" : "Започето брисање уређаја %s", @@ -155,6 +156,7 @@ OC.L10N.register( "Oracle connection could not be established" : "Веза са базом података Oracle не може бити успостављена", "Oracle Login and/or password not valid" : "Oracle име за пријаву и/или лозинка нису исправни", "PostgreSQL Login and/or password not valid" : "PostgreSQL име за пријаву и/или лозинка нису исправни", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "Mac OS X није подржан и %s неће радити исправно на овој платформи. Користите га на сопствени ризик!", "For the best results, please consider using a GNU/Linux server instead." : "За најбоље резултате, размотрите употребу ГНУ/Линукс сервера.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Изгледа да %s ради у 32-битном PHP окружењу а open_basedir је подешен у php.ini фајлу. То може довести до проблема са фајловима већим од 4 GB, те стога није препоручљиво.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Уклоните open_basedir поставку из php.ini фајла или пређите на 64-битни PHP.", diff --git a/lib/l10n/sr.json b/lib/l10n/sr.json index de7960d7210..6a76505d203 100644 --- a/lib/l10n/sr.json +++ b/lib/l10n/sr.json @@ -36,6 +36,7 @@ "Server version %s or higher is required." : "Потребна је верзија сервера %s или виша.", "Server version %s or lower is required." : "Потребна је верзија сервера %s или нижа.", "Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "Пријављени налог мора бити админ, подадмин или мора да поседује специјално право да приступи овом подешавању", + "Your current IP address doesn't allow you to perform admin actions" : "Ваша тренутна IP адреса не дозвољава да извршавате админ радње", "Logged in account must be an admin or sub admin" : "Пријављени налог мора бити админ или подадмин", "Logged in account must be an admin" : "Пријављени налог мора бити админ", "Wiping of device %s has started" : "Започето брисање уређаја %s", @@ -153,6 +154,7 @@ "Oracle connection could not be established" : "Веза са базом података Oracle не може бити успостављена", "Oracle Login and/or password not valid" : "Oracle име за пријаву и/или лозинка нису исправни", "PostgreSQL Login and/or password not valid" : "PostgreSQL име за пријаву и/или лозинка нису исправни", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "Mac OS X није подржан и %s неће радити исправно на овој платформи. Користите га на сопствени ризик!", "For the best results, please consider using a GNU/Linux server instead." : "За најбоље резултате, размотрите употребу ГНУ/Линукс сервера.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Изгледа да %s ради у 32-битном PHP окружењу а open_basedir је подешен у php.ini фајлу. То може довести до проблема са фајловима већим од 4 GB, те стога није препоручљиво.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Уклоните open_basedir поставку из php.ini фајла или пређите на 64-битни PHP.", diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js index dad3d57c1db..100c097a1d0 100644 --- a/lib/l10n/zh_TW.js +++ b/lib/l10n/zh_TW.js @@ -38,6 +38,7 @@ OC.L10N.register( "Server version %s or higher is required." : "需要伺服器版本 %s 或更高。", "Server version %s or lower is required." : "需要伺服器版本 %s 或更低。", "Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "登入帳號必須為管理員、子管理員或有可存取此設定的特殊權限的使用者", + "Your current IP address doesn't allow you to perform admin actions" : "您目前的 IP 位置不允許您執行管理動作", "Logged in account must be an admin or sub admin" : "登入的帳號必須要是管理員或是子管理員", "Logged in account must be an admin" : "登入的帳號必須有管理員權限", "Wiping of device %s has started" : "已開始抹除裝置 %s", @@ -155,6 +156,7 @@ OC.L10N.register( "Oracle connection could not be established" : "無法建立 Oracle 資料庫連線", "Oracle Login and/or password not valid" : "Oracle 帳號或密碼不正確", "PostgreSQL Login and/or password not valid" : "PostgreSQL 帳號或密碼無效", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "不支援 Mac OS X,%s 在此平台上無法正常運作。請自行承擔使用風險!", "For the best results, please consider using a GNU/Linux server instead." : "請考慮改用 GNU/Linux 伺服器以獲得最佳結果。", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "%s 站台似乎是在 32 位元 PHP 環境執行,且似乎設定了 php.ini 中的 open_basedir。這將導致超過 4 GB 的檔案出現問題,因此強烈建議不要這麼做。", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "請移除 php.ini 中的 open_basedir 設定,或是改用 64 位元的 PHP。", diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json index 7f7f4d51e57..ea8d41112be 100644 --- a/lib/l10n/zh_TW.json +++ b/lib/l10n/zh_TW.json @@ -36,6 +36,7 @@ "Server version %s or higher is required." : "需要伺服器版本 %s 或更高。", "Server version %s or lower is required." : "需要伺服器版本 %s 或更低。", "Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "登入帳號必須為管理員、子管理員或有可存取此設定的特殊權限的使用者", + "Your current IP address doesn't allow you to perform admin actions" : "您目前的 IP 位置不允許您執行管理動作", "Logged in account must be an admin or sub admin" : "登入的帳號必須要是管理員或是子管理員", "Logged in account must be an admin" : "登入的帳號必須有管理員權限", "Wiping of device %s has started" : "已開始抹除裝置 %s", @@ -153,6 +154,7 @@ "Oracle connection could not be established" : "無法建立 Oracle 資料庫連線", "Oracle Login and/or password not valid" : "Oracle 帳號或密碼不正確", "PostgreSQL Login and/or password not valid" : "PostgreSQL 帳號或密碼無效", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "不支援 Mac OS X,%s 在此平台上無法正常運作。請自行承擔使用風險!", "For the best results, please consider using a GNU/Linux server instead." : "請考慮改用 GNU/Linux 伺服器以獲得最佳結果。", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "%s 站台似乎是在 32 位元 PHP 環境執行,且似乎設定了 php.ini 中的 open_basedir。這將導致超過 4 GB 的檔案出現問題,因此強烈建議不要這麼做。", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "請移除 php.ini 中的 open_basedir 設定,或是改用 64 位元的 PHP。", diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php index f10684c4971..ad9299f01fd 100644 --- a/lib/private/AppConfig.php +++ b/lib/private/AppConfig.php @@ -62,16 +62,6 @@ class AppConfig implements IAppConfig { /** @var array<array-key, array{entries: array<array-key, ConfigLexiconEntry>, strictness: ConfigLexiconStrictness}> ['app_id' => ['strictness' => ConfigLexiconStrictness, 'entries' => ['config_key' => ConfigLexiconEntry[]]] */ private array $configLexiconDetails = []; - /** - * $migrationCompleted is only needed to manage the previous structure - * of the database during the upgrading process to nc29. - * - * only when upgrading from a version prior 28.0.2 - * - * @TODO: remove this value in Nextcloud 30+ - */ - private bool $migrationCompleted = true; - public function __construct( protected IDBConnection $connection, protected LoggerInterface $logger, @@ -1212,41 +1202,16 @@ class AppConfig implements IAppConfig { $qb = $this->connection->getQueryBuilder(); $qb->from('appconfig'); - /** - * The use of $this->migrationCompleted is only needed to manage the - * database during the upgrading process to nc29. - */ - if (!$this->migrationCompleted) { - $qb->select('appid', 'configkey', 'configvalue'); - } else { - // we only need value from lazy when loadConfig does not specify it - $qb->select('appid', 'configkey', 'configvalue', 'type'); - - if ($lazy !== null) { - $qb->where($qb->expr()->eq('lazy', $qb->createNamedParameter($lazy ? 1 : 0, IQueryBuilder::PARAM_INT))); - } else { - $qb->addSelect('lazy'); - } - } - - try { - $result = $qb->executeQuery(); - } catch (DBException $e) { - /** - * in case of issue with field name, it means that migration is not completed. - * Falling back to a request without select on lazy. - * This whole try/catch and the migrationCompleted variable can be removed in NC30. - */ - if ($e->getReason() !== DBException::REASON_INVALID_FIELD_NAME) { - throw $e; - } - - $this->migrationCompleted = false; - $this->loadConfig($app, $lazy); + // we only need value from lazy when loadConfig does not specify it + $qb->select('appid', 'configkey', 'configvalue', 'type'); - return; + if ($lazy !== null) { + $qb->where($qb->expr()->eq('lazy', $qb->createNamedParameter($lazy ? 1 : 0, IQueryBuilder::PARAM_INT))); + } else { + $qb->addSelect('lazy'); } + $result = $qb->executeQuery(); $rows = $result->fetchAll(); foreach ($rows as $row) { // most of the time, 'lazy' is not in the select because its value is already known diff --git a/lib/private/AppFramework/Utility/ControllerMethodReflector.php b/lib/private/AppFramework/Utility/ControllerMethodReflector.php index 2031327dfae..679e1788004 100644 --- a/lib/private/AppFramework/Utility/ControllerMethodReflector.php +++ b/lib/private/AppFramework/Utility/ControllerMethodReflector.php @@ -50,7 +50,7 @@ class ControllerMethodReflector implements IControllerMethodReflector { // extract type parameter information preg_match_all('/@param\h+(?P<type>\w+)\h+\$(?P<var>\w+)/', $docs, $matches); $this->types = array_combine($matches['var'], $matches['type']); - preg_match_all('/@psalm-param\h+(?P<type>\w+)<(?P<rangeMin>(-?\d+|min)),\h*(?P<rangeMax>(-?\d+|max))>\h+\$(?P<var>\w+)/', $docs, $matches); + preg_match_all('/@psalm-param\h+(\?)?(?P<type>\w+)<(?P<rangeMin>(-?\d+|min)),\h*(?P<rangeMax>(-?\d+|max))>(\|null)?\h+\$(?P<var>\w+)/', $docs, $matches); foreach ($matches['var'] as $index => $varName) { if ($matches['type'][$index] !== 'int') { // only int ranges are possible at the moment diff --git a/lib/private/DB/ConnectionAdapter.php b/lib/private/DB/ConnectionAdapter.php index ba3bf90c2e8..78ca780f218 100644 --- a/lib/private/DB/ConnectionAdapter.php +++ b/lib/private/DB/ConnectionAdapter.php @@ -50,7 +50,7 @@ class ConnectionAdapter implements IDBConnection { $this->inner->executeQuery($sql, $params, $types) ); } catch (Exception $e) { - throw DbalException::wrap($e); + throw DbalException::wrap($e, '', $sql); } } @@ -58,7 +58,7 @@ class ConnectionAdapter implements IDBConnection { try { return $this->inner->executeUpdate($sql, $params, $types); } catch (Exception $e) { - throw DbalException::wrap($e); + throw DbalException::wrap($e, '', $sql); } } @@ -66,7 +66,7 @@ class ConnectionAdapter implements IDBConnection { try { return $this->inner->executeStatement($sql, $params, $types); } catch (Exception $e) { - throw DbalException::wrap($e); + throw DbalException::wrap($e, '', $sql); } } diff --git a/lib/private/DB/Exceptions/DbalException.php b/lib/private/DB/Exceptions/DbalException.php index 05ea9e22a5d..2ce6ddf80a6 100644 --- a/lib/private/DB/Exceptions/DbalException.php +++ b/lib/private/DB/Exceptions/DbalException.php @@ -35,26 +35,29 @@ use OCP\DB\Exception; class DbalException extends Exception { /** @var \Doctrine\DBAL\Exception */ private $original; + public readonly ?string $query; /** * @param \Doctrine\DBAL\Exception $original * @param int $code * @param string $message */ - private function __construct(\Doctrine\DBAL\Exception $original, int $code, string $message) { + private function __construct(\Doctrine\DBAL\Exception $original, int $code, string $message, ?string $query = null) { parent::__construct( $message, $code, $original ); $this->original = $original; + $this->query = $query; } - public static function wrap(\Doctrine\DBAL\Exception $original, string $message = ''): self { + public static function wrap(\Doctrine\DBAL\Exception $original, string $message = '', ?string $query = null): self { return new self( $original, is_int($original->getCode()) ? $original->getCode() : 0, - empty($message) ? $original->getMessage() : $message + empty($message) ? $original->getMessage() : $message, + $query, ); } diff --git a/tests/lib/AppFramework/Utility/ControllerMethodReflectorTest.php b/tests/lib/AppFramework/Utility/ControllerMethodReflectorTest.php index e0748d89f7f..00ae4792824 100644 --- a/tests/lib/AppFramework/Utility/ControllerMethodReflectorTest.php +++ b/tests/lib/AppFramework/Utility/ControllerMethodReflectorTest.php @@ -43,9 +43,11 @@ class MiddleController extends BaseController { /** * @psalm-param int<-4, 42> $rangedOne * @psalm-param int<min, max> $rangedTwo + * @psalm-param int<1, 6>|null $rangedThree + * @psalm-param ?int<-70, -30> $rangedFour * @return void */ - public function test4(int $rangedOne, int $rangedTwo) { + public function test4(int $rangedOne, int $rangedTwo, ?int $rangedThree, ?int $rangedFour) { } } @@ -239,5 +241,13 @@ class ControllerMethodReflectorTest extends \Test\TestCase { $rangeInfo2 = $reader->getRange('rangedTwo'); $this->assertSame(PHP_INT_MIN, $rangeInfo2['min']); $this->assertSame(PHP_INT_MAX, $rangeInfo2['max']); + + $rangeInfo3 = $reader->getRange('rangedThree'); + $this->assertSame(1, $rangeInfo3['min']); + $this->assertSame(6, $rangeInfo3['max']); + + $rangeInfo3 = $reader->getRange('rangedFour'); + $this->assertSame(-70, $rangeInfo3['min']); + $this->assertSame(-30, $rangeInfo3['max']); } } |